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 |