Problem z szukaniem największej liczby w tablicy
Ostatnio zmodyfikowano 2017-12-07 14:53
Wolfff Temat założony przez niniejszego użytkownika |
Problem z szukaniem największej liczby w tablicy » 2017-12-07 14:32:05 Dzień dobry, szukam pomocy z kodem. Przeszukałem całość 30 razy i nie mogę znaleźć żadnego błędu. Program zawsze wyświetla jako wynik liczbę 3. Rozumiem że można to inaczej napisać, ale mi chodzi o to żeby zrozumieć co stwarza ten problem w kodzie. #include<stdio.h>
int Znajdznajw( int tab[] ) { int wieksza; for( int i = 0; i < 9; i++ ) { if( tab[ i ] > tab[ i + 1 ] ) { wieksza = tab[ i ]; } else { wieksza = tab[ i + 1 ]; } } return wieksza; }
int main() { int tab[ 10 ]; int wieksza; for( int i = 0; i < 10; i++ ) { printf( "Podaj %d element tablicy: ", i + 1 ); scanf( "%d", & tab[ i ] ); } wieksza = Znajdznajw( tab ); printf( "Najwieksza liczba to: %d ", wieksza ); return 0; }
[ / i ] |
|
pekfos |
» 2017-12-07 14:45:51 Twoja funkcja zwraca większą liczbę z dwóch ostatnich w tablicy, a nie maksimum z całej tablicy. |
|
meghtar |
» 2017-12-07 14:48:43 Główny problem masz tutaj if( tab > tab[ i + 1 ] ) { wieksza = tab[ i ]; } else { wieksza = tab[ i + 1 ]; }
Sprawdzasz czy początek tablicy(jako adres) jest większy od i+1-szego elementu w tablicy, co już powinno zaświecić lampkę nad głową. A jeszcze ten else. Pewnie zauważyłeś, że zawsze będzie zwracało po prostu przedostatnią wartość, którą podasz - wina else'a. // EDIT racja pefkos - większą z 2 ostatnich. Szukając największej wartości w tablicy nie potrzebujesz wykonać innej instrukcji. Sam algorytm wygląda mniej więcej tak: Biorę element -> sprawdzam czy jest większy od aktualnej największej znalezionej -> jeśli tak to zmień wartość zmiennej wieksza. Ale już poza tymi rzeczami, weź pod uwagę że szukając największego elementu w tablicy powinieneś sprawdzać czy ten element jest większy - czyli w ifie bardziej coś w stylu if(wieksza > tab ). Pamiętaj też o nadaniu wartości początkowej zmiennej wieksza - np jako pierwszy element tablicy. |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2017-12-07 14:49:27 Ahaa, czyli else wstawia mi w wieksza przed ostatnią liczbę w tablicy? Jeżeli nadam większej wartość 0 i będę porównywał wtedy jak piszesz pierwszą do większej i potem zamieniał to powinno wyjść lepiej? Dzięki wielkie! |
|
pekfos |
» 2017-12-07 14:50:44 Nie rozumiem, przecież w pętli porównuje pierwsze dwie i zamienia miejscami jak jest większa |
I gdzie twoim zdaniem zamieniasz ze sobą 2 elementy tablicy? |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2017-12-07 14:53:51 @Pekfos masz kompletnie racje tylko nie zrozumiałem za pierwszym razem, teraz widzę że w pętli nie porównuje następnej liczby to poprzedniej większej tylko następną z następną i rzeczywiście, sprowadza się z największej z ostatnich dwóch. |
|
« 1 » |