ptaq Temat założony przez niniejszego użytkownika |
liczby pierwsze » 2011-12-20 00:35:23 #include <iostream> #include <cmath>
bool sprawdz( int a, float p ) { int d = 3; if( a == 1 || a % 2 == 0 ) return false; do { if( a % d == 0 ) return false; d += 2; } while( d < p ); return true; }
int main()
{ int t, y; float p; std::cin >> t; int a[ t ]; int i = 0; do { std::cin >> a[ i ]; i++; } while( i < t ); i = 0; do { y = a[ i ]; p = sqrt( y ); if( y == 2 || y == 3 ) { std::cout << "tak" << std::endl; } else if( sprawdz( y, p ) == true ) { std::cout << "tak" << std::endl; } else if( sprawdz( y, p ) == false ) { std::cout << "nie" << std::endl; } i++; } while( i < t ); return 0; }
zadanie ze strony SPOJ do wyznaczania liczb pierwszych , program działa poprawnie ale tam mi go nie akceptuja , wywala błąd wykonania ;/ co jest źle ???? ;> |
|
DejaVu |
» 2011-12-20 07:47:24 1. Jeżeli piszesz w C++ to używaj plików nagłówkowych C++, a nie C.
2. Po to jest SPOJ byś nauczył się pisać poprawnie własne programy. |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-12-20 10:41:47 ok ale nie w tym leży problem, bo dalej bledna odpowiedz. Domyśliłem sie że SPOJ jest po to bym nauczył sie pisać poprawnie programy ale z mojego punktu widzenia jest on poprawny ;p wiec pytam osób bardziej doświadczonych. |
|
DejaVu |
» 2011-12-20 10:44:44 To program działa poprawnie ale daje błędne wyniki czy też się wywala? Bo to nie to samo. |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-12-20 10:52:42 moze jeszcze sie dobrze nie obudzilem ale nie do konca rozumiem ostatniego posta :D , testowałem program i podaje prawydlowe wyniki , ale SPOJ wyswietla komunikat "błędna odpowiedz" |
|
DejaVu |
» 2011-12-20 10:55:57 Błędna odpowiedź = złe wyniki (zły algorytm) lub źle sformatowane wyjście w stosunku do tego co jest napisane w treści (np. wielkość liter wypisywanych na wyjście może mieć znaczenie). |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-12-20 11:05:02 ok ale wyniki działania mojego programu sa poprawne, skoro zły algorytm = złe wyniki , to błąd leży gdzieś indziej ;/ . Wyjscie poprwiłem i też nic nie dało. |
|
DejaVu |
» 2011-12-20 11:14:54 Cóż... jeżeli twierdzisz, że wyniki Twojego algorytmu są poprawne to po prostu oddaj swój program w takiej postaci jakiej jest i przekonaj prowadzącego, że działa on poprawnie :) Może ktoś inny będzie się bawił w analizę Twojego programu i go poprawiał. Moja jedyna rada to zrobienie kilku testów typu:
void sprawdzObliczenia( int iWynik, iOczekiwanyWynik ) { if( iWynik == iOczekiwanyWynik ) printf( "Wynik poprawny.\n" ); else printf( "Wynik bledny. Oczekiwano %d, a otrzymano %d.\n", iOczekiwanyWynik, iWynik ); }
sprawdzObliczenia( oblicz( costam ), poprawnyWynikWpisanyZPalca ); sprawdzObliczenia( oblicz( costam ), poprawnyWynikWpisanyZPalca ); sprawdzObliczenia( oblicz( costam ), poprawnyWynikWpisanyZPalca ); sprawdzObliczenia( oblicz( costam ), poprawnyWynikWpisanyZPalca ); sprawdzObliczenia( oblicz( costam ), poprawnyWynikWpisanyZPalca );
|
|
« 1 » 2 |