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

Rozpoznawanie największej liczby.

Ostatnio zmodyfikowano 2014-01-05 15:30
Autor Wiadomość
Kudłaty
Temat założony przez niniejszego użytkownika
Rozpoznawanie największej liczby.
» 2014-01-04 18:41:46
Siema, pracuję nad prostym programem i natknąłem się na problem, mam dwie tablice z liczbami, z każdej muszę znaleźć największą liczbę, a tablice
a
 i
b
 mieszczą po 5 liczb. Oto kod:
C/C++
for( int j = 0; j < 5; j++ )
{
    for( int k = 0; k <= j; k++ )
    {
        if( a[ j ] > a[ k ] )
        {
            najwiekszy_a = j;
        }
        if( b[ j ] > b[ k ] )
        {
            najwiekszy_b = j;
        }
    }
    // obliczenia
    najwiekszy_a = 0;
    najwiekszy_b = 0;
}
Dla przetestowania programu wprowadziłem takie liczby, w tablicach
a[] { 1, 2, 3, 4, 5 }
 oraz
b[] { 1, 2, 3, 4, 5 }
 problem mam taki, że z początku pokazuje mi największe liczby dla a: 5 a dla b: 5 a następnie wszystkie liczby podawane są w odwrotnej kolejności, od najmniejszej do największej.
P-101147
pekfos
» 2014-01-04 18:44:32
Co to za algorytm? Na pewno nie wyszukiwanie maksimum z tablicy.
P-101149
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-01-04 18:59:02
Wyszukuje największą wartość z tablicy, w obliczeniach dodaje ją do wyniku i później zeruje wartość którą dodałem, żeby program nie wyszukiwał znowu tej samej wartości.
P-101154
pekfos
» 2014-01-04 19:07:25
To nie wygląda na wyszukiwanie największej wartości. Podaj kod.
P-101158
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-01-04 19:23:13
C/C++
for( int i = 0; i < 5; i++ )
{
    for( int j = 0; j < 5; j++ )
    {
        for( int k = 0; k <= j; k++ )
        {
            if( a[ j ] > a[ k ] )
            {
                najwiekszy_a = j;
            }
            if( b[ j ] > b[ k ] )
            {
                najwiekszy_b = j;
            }
        }
    }
    if( a[ najwiekszy_a ] >= b[ najwiekszy_b ] )
    {
        wynik += a[ najwiekszy_a ];
        a[ najwiekszy_a ] = 0;
    }
    else
    {
        if( a[ najwiekszy_b ] )
        {
            wynik += a[ najwiekszy_b ];
            a[ najwiekszy_b ] = 0;
        }
        else
        {
            wynik += b[ najwiekszy_b ];
            b[ najwiekszy_b ] = 0;
        }
    }
    najwiekszy_a = 0;
    najwiekszy_b = 0;
}
P-101162
Kudłaty
Temat założony przez niniejszego użytkownika
» 2014-01-05 15:30:26
Porównywałem kod do innych na cpp0x, jedyna różnica dla mnie zauważalna to to, że ja zapisuje numer tablicy. A nadal nie wiem dlaczego program wariuje.
/edit
Jednak dostrzegłem jeden szczegół oto poprawka:
C/C++
for( int j = 0; j < N; j++ )
{
    if( a[ najwiekszy_a ] < a[ j ] )
    {
        najwiekszy_a = j;
    }
    if( b[ najwiekszy_b ] < b[ j ] )
    {
        najwiekszy_b = j;
    }
}
P-101238
« 1 »
  Strona 1 z 1