Problem z rozwiązaniem zadania
Ostatnio zmodyfikowano 2011-11-20 12:07
programista12 Temat założony przez niniejszego użytkownika |
Problem z rozwiązaniem zadania » 2011-11-20 11:32:31 Zapisałem się na Olimpiadę Informatyczną Gimnazjalistów. Dla treningu postanowiłem zrobić zadania z tej strony: http://informatyka.wroc.pl/konkursywpi/stale/zadania?page=4. Udało mi się napisać algorytm, ale nie działa tak, jak trzeba. W przykładzie ostatnia liczba ma być 50, ale u mnie wychodzi -66. Dodam, że pierwszy raz robię tego typu zadanie. Z góry dzięki za pomoc. Oto kod programu: #include <iostream> #include <vector> #include <conio.h> #include <math.h> #include <time.h>
using namespace std;
struct Stworek { int k, p; long long w; Stworek() { k = p = 0; w = 0; } Stworek( int nk, long long nw, int np ) { k = nk; w = nw; p = np; } };
void main() { int ilosc_stworkow = 0; vector < Stworek > stworki; cout << "Podaj ilosc stworkow: "; cin >> ilosc_stworkow; if( ilosc_stworkow < 1 || ilosc_stworkow > 100 ) { cout << "Podano zbyt mala lub zbyt duza liczbe!\n"; _getch(); return; } for( int i = 0; i < ilosc_stworkow; ++i ) { int tmp_k = 0, tmp_p = 0; long long tmp_w = 0; cout << "Podaj wartosci dla k, w, p: "; cin >> tmp_k; cin >> tmp_w; cin >> tmp_p; if( tmp_k < 1 || tmp_k > 1000000000 || tmp_p < 1 || tmp_p > 1000000000 ) { cout << "Podano niewlasciwe liczby!\n"; _getch(); return; } stworki.push_back( Stworek( tmp_k, tmp_w, tmp_p ) ); tmp_k = tmp_p = 0; tmp_w = 0; } int c1, c2; c1 = clock(); for( int i = 0; i < ilosc_stworkow; ++i ) { int ilosc_lapek =( int ) pow(( double ) stworki[ i ].k,( double ) stworki[ i ].w ); cout << ilosc_lapek % stworki[ i ].p << endl; } c2 = clock(); cout << "Czas wykonania: " << c2 - c1 << endl; _getch(); return; }
|
|
szyx_yankez |
» 2011-11-20 12:07:32 Kilka ważnych informacji dla Ciebie, jeżeli chcesz brać udział w konkursach informatycznych/algorytmicznych. Po 1, konkursy informatyczne nie sprawdzają znajomości języka, a wiedzę z zakresu algorytmiki, matematyki, fizyki - trzeba mieć o tym trochę pojęcia, nie tak hop siup, w przeciwnym wypadku nawet najprostszego zadania nie zrobisz, choćbyś język znał perfekcyjnie. Po 2, kodu nie sprawdzają ludzie tylko maszyny(automat), zapis cout << "Podaj ilosc stworkow: "; jest co najmniej nie na miejscu - zadanie nie zostanie zaliczone, To samo z: if( ilosc_stworkow < 1 || ilosc_stworkow > 100 ) { cout << "Podano zbyt mala lub zbyt duza liczbe!\n"; _getch(); return; } Informacja (1 ≤ t ≤ 100) co najwyżej podpowiada Ci jakiego typu zmiennej użyć - nic nie musisz sprawdzać.(no chyba, że w zadaniu zostanie to wyszczególnione) Masz podany przykład: Wejście: 3 2 2 7 3 4 97 1234 567891011121314 97 Wyjście 4 81 50 Widzisz tam jakieś zdania? Po 3, Co to? Każdy normalny program w c++ musi zwracać int'a - zadanie niezaliczone. Po 4, cin, cout nie tędy droga. I wiele innych błędów których mi się nie chcę wymieniać. Po za tym na trening polecam http://pl.spoj.pl/ jeżeli rozwiążesz, zaliczysz - powiedzmy 20 zadań(łatwych) to można mieć nadzieje że ten np. 600/1000 osób będziesz. |
|
« 1 » |