Trójki Pitagorejskie - zły wynik, błąd w algorytmie
Ostatnio zmodyfikowano 2014-03-11 15:38
matiko101 Temat założony przez niniejszego użytkownika |
Trójki Pitagorejskie - zły wynik, błąd w algorytmie » 2014-03-11 15:38:10 Witam, Mam problem z algorytmem sprawdzającym czy dana trójka liczb może stworzyć trójkąt prostokątny, a dokładniej uzupełnianie pustych pól i sprawdzanie poprawności liczb. np. 3² + 4² = [] i trzeba uzupełnić puste pole prawidłową liczbą/cyfrą. int algorytm( GtkWidget * button, Okno & window ) { for( int i = 0; i != 3; i++ ) { do { window.a[ i ] =( rand() % 10 ) + 1; window.b[ i ] =( rand() % 10 ) + 1; window.c[ i ] =( window.a[ i ] * window.a[ i ] + window.b[ i ] * window.b[ i ] ); window.c[ i ] = sqrt( window.c[ i ] ); } while(( window.c[ i ] -( int ) window.c[ i ] != 0 ) );
int haczyki( GtkWidget * button, Okno & window ) { if( window.sprawdzac == 1 ) { stringstream pomocna[ 3 ]; pomocna[ 0 ] << window.a[ 0 ]; pomocna[ 0 ] >> window.stra[ 0 ]; if( gtk_entry_get_text( GTK_ENTRY( window.puste[ 0 ] ) ) == window.stra[ 0 ] ) window.rozwiazania[ 0 ] = 1; else window.rozwiazania[ 0 ] = 2; pomocna[ 1 ] << window.b[ 1 ]; pomocna[ 1 ] >> window.strb[ 1 ]; if( gtk_entry_get_text( GTK_ENTRY( window.puste[ 1 ] ) ) == window.strb[ 1 ] ) window.rozwiazania[ 1 ] = 1; else window.rozwiazania[ 1 ] = 2; pomocna[ 2 ] << window.c[ 0 ]; pomocna[ 2 ] >> window.strc[ 2 ]; cout << window.strc[ 2 ] << "\n-----------------------\n"; if( gtk_entry_get_text( GTK_ENTRY( window.puste[ 2 ] ) ) == window.strc[ 2 ] ) window.rozwiazania[ 2 ] = 1; else window.rozwiazania[ 2 ] = 2;
Błąd występuje przy liczbach 6 i 8 czyli : 6² + 8² = [] prawidłowa liczba to 10, a raz na jakiś czas program sygnalizuje, że prawidłowa jest 5. Wartości zmiennych sprawdzających wynik sprawdzałem w konsoli i "samoistnie" zmienia się z 10 na 5. Nie widzę błędów w kodzie, proszę o pomoc. |
|
« 1 » |