@flimbo123 Witamy na spoju. Jeżeli w zadaniu jest napisane, że wejście jest z przedziału [1..10000] to tak będzie. Twój program, który sprawdza dzielniki do 5 włącznie nie poradzi sobie chociażby z 49, która nie jest pierwszą. W internecie bez problemu znajdziesz informacje jaka jest zależność pomiędzy dzielnikami, które należy sprawdzić, a testem czy liczba jest pierwsza. Zawsze najpierw szukaj informacji w sieci, sprawdź dla przykładu spod zadania, dla minimalnego zakresu danych jaki jest możliwy w zadaniu i dla jakiegoś prostego testu, który szybko sprawdzisz. Ja bym napisał taki zanim był cokolwiek wysłał:
15 1 2 3 4 5 6 24 25 26 27 28 29 49 100 10000
Odpowiedzi spokojnie policzysz w głowie.
@tarpauwatratar Nie mówię, że nie masz racji, ale bądź rzeczowy w swoich odpowiedziach, nie potrzeba tutaj odnosić się do czegokolwiek niż kod. Wszak spoj to polska śmietanka intelektualna
Mogłem napisać: weź się do roboty! Mogłem napisać: weź się do roboty i sprawdź np. 29, 49, 100, .... Wolałem jednak napisać jasno jak wygląda sytuacja i jaki jest jej odbiór wśród owej śmietanki intelektualnej (wszak sam nie mówisz, że nie mam racji, a zatem w mojej odpowiedzi jest choć trochę prawdy ).
Zauważ też, że punkty 1), 2), 3), 4), 5), a w pewnym stopniu także 6) i 7), choć odniesione do konkretnej sytuacji, mają łatwy do wyłuskania charakter ogólny. Chcąc rozwiązać zadanie należy najpierw je zrozumieć (np. sprawdzić definicję liczby pierwszej), potem stworzyć i przetestować rozwiązanie, a w razie niepowodzenia próbować kolejnych testów i ewentualnie przejść na forum. Z kolei forum należy najpierw przeszukać, a następnie zakładać nowe tematy itd itp.
Nie jestem skłonny zgodzić się, że nie ma potrzeby odnosić się do czegokolwiek innego niż kod. Wszak metodologia pracy jest bardzo istotna, a może nawet istotniejsza od samego kodu. Składni może nauczyć się każdy, programować już nie, do czego zresztą pośrednio odniósł się @mariusz193. Uważam, że lepiej napisać jak wygląda sytuacja (nawet jeżeli tylko tak wygląda, a w rzeczywistości jest inaczej - zakładam dobrą wolę @flimbo123, ale opisuję sytuację taką, jaką mi się ona jawi) w ostrych słowach i za wczasu. Każdy był kiedyś nowicjuszem, a na problemy na SPOJu z tego okresu nikt się nie patrzy (jestem tego żywym dowodem, a warto wspomnieć, że z testowaniem miałem największe trudności, a wciąż bywa z tym różnie ). Łapka w dół i negatywny komentarz na Stack Overflow boli dużo bardziej, a na GitHubie nie jest ciężko natknąć się na tragiczny kod, którego autor nie przeanalizował / przetestował / sprawdził / wyszukał różnych rzeczy. Gdyby nie ostra krytyka innych sam zszargałbym swoją opinię publikując coś, co na ogół nie powinno ujrzeć światła dziennego Gdyby @flimbo123 poszedł programować zawodowo to mógłby zostać zapytany o sposób, w jaki radzi sobie z trudnościami w realizacji projektów, a nawet mógłby zostać poproszony o napisanie jakiegoś prostego programu, np. do wyznaczania liczb pierwszych. Gdyby program nie działał prawidłowo, a kandydat ratował się ifowaniem kolejnych przypadków... cóż...
I myślę, że wystarczy już tego spamu - dalej wypowiadam się już tylko o zadaniu
Cześć Wam, mam problem z zadaniem: http://www.spoj.com/problems/PRIME1/2 Mianowicie za każdym razem otrzymuję wynik "time limit exceeded". Dlaczego? Jakieś podpowiedzi?
include
include
using namespace std;
int number; int counter = 0; int *wsk = &counter;
int count(); void range(int[], int, int*); void prim(int[], int);
int main() { int n = 0; int *array = new int[n]; int i = 0; n = count(); //cout << n << endl;
while (i < n) {
range(array, n, &counter);
i++;
}
//for (int i = 0; i < 2*n; i++) {
// cout << array[i] << endl;
//}
n = n*2-1;
prim(array, n);
system("pause");
return 0;
}
int count() { int n; cout << "Podaj ilość zakresów\n"; cin >> n; return n; }
void range(int array[], int n, int *wsk) { int a, b; while (counter<2*n) {
1) przeczytaj ten wątek (cały) 2) przeczytaj ogólnie dostępne, podstawowe informacje o liczbach pierwszych 3) wyrzuć ten kod 4) napisz program od początku
Hej Zwracam się z prośbą o pomoc W mojej opinii wyniki wychodzą prawidłowo, wydaje mi się, że problem jest wtedy, gdy podaję liczbę do sprawdzenia większą niż 10000, ale nie jestem pewien czy o to chodzi... Podaję kod http://pl.spoj.com/submit/PRIME_T/id=200049428, będę wdzięczny za pomoc i ocenę jakości kodu
Myślałem, że autor sam się domyśli Szczególnie, że gdziekolwiek nie spojrzeć ludzie inaczej wklejają kod, takie wpadki sporadycznie zdarzały się innym, a do tego kod na SPOJu ma być niejawny.
if (liczba_testow < 100000) - wywalić to. Warunki zadania są dane przez autora i nie należy ich sprawdzać. To samo dotyczy dalszej części zadania, np. sprawdzania, czy liczba nie jest ujemna.
Twój program nie działa nawet dla przykładowego wejścia więc najpierw zrób tak, żeby w ogóle był choć cień szansy, że on działa, a po tej poprawce wstaw kod i szukam dalej