Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Trójki Pitagorejskie - zły wynik, błąd w algorytmie

Ostatnio zmodyfikowano 2014-03-11 15:38
Autor Wiadomość
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ą.

C/C++
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 ) );
       

C/C++
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.
P-106102
« 1 »
  Strona 1 z 1