ashaneen Temat założony przez niniejszego użytkownika |
Pętla znajdujaca najwiekszą wartość sposród indeksów tablicy. » 2013-02-06 22:09:29 Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy; Znajduje największą wylosowaną liczbę. no i z tym znajdywaniem problem. pętla zwraca buble, czasami jest to losowa liczba, czasami jest to 0, a często dosyć liczbe -1, która w ogóle nie mam pojęcia skąd sie wzieła. int maks( int tablica[] ) { int imax = 0; int numer = 0; do { if( tablica[ numer ] < tablica[ ++numer ] ) { imax = tablica[ numer + 1 ]; } ++numer; } while( numer < 10 ); return imax; }
|
|
advesarius |
» 2013-02-06 22:31:20 Napisz na kartce papieru parę liczb i wykonaj na nich swój algorytm. Dowiesz się dlaczego działa tak jak działa ;)
|
|
ashaneen Temat założony przez niniejszego użytkownika |
» 2013-02-06 22:36:42 Niestety głowie się i głowie aż kipi, zanim napisałem na forum, studiowałem krok po kroku funkcje i niestety nie widzę odpowiedzi... |
|
advesarius |
» 2013-02-06 22:49:09 Twój porównuje dwa kolejne elementy tablicy i ustawia większy z nich jako maksimum. Po czym przechodzi krok dalej i porównuje.
Jeżeli masz tablice liczb, z lenistwa tylko 6 elementową:P: 351720
To twój program po pierwszym wykonaniu pętli ustawi maksa jako 5, czyli źle. Po drugim maksem dalej będzie pięć, po trzecim będzie 7, po czwartym będzie dalej 7, po piątym będzie 2.
Wybierz pierwszy element tablicy i załóż że jest największy, a potem sprawdzaj kolejne czy są od niego większe, jeżeli któryś jest to przypisz go do zmiennej max. I tak aż do końca tablicy. |
|
ashaneen Temat założony przez niniejszego użytkownika |
» 2013-02-06 23:01:22 int znajdzMaksimum( int itablica[], int ile ) { int najwieksza; for( int ilosc = 0; ilosc < ile; ilosc++ ) { int kolejna = ilosc++; if( itablica[ ilosc ] > itablica[ kolejna ] ) najwieksza = itablica[ ilosc ]; } return najwieksza; }
Zauwazyłem w tej funkcji, że pętla działa dopóki nie porówna większej liczby do mniejszej, wtedy odrazu zwraca wartość do funkcji i jest bubel. Nie mam pojęcia jak to na pętli for zrobić, bo na do..while miałbym pomysł, ale w zadaniu jest, że ma być w FOR więc się głowie dalej. Myślałem, że for wykonuje się w obrębie {} dopóki warunek nie zostanie spełniony, a tu się okazuje, że gdy if przyjmuje wartość false to wychodzi z {} ... |
|
Berux |
» 2013-02-06 23:17:00 Zgadzam się z advesarius'em. Porównujesz dwa różne elementy tablicy, zamiast jednego elementu z obiektem najwieksza/najmniejsza.Przypisz też do zmiennej najwieksza/najmniejsza pierwszy element tablicy, a w petli for licznik ustaw na 1, zamiast 0. Czyli to, co napisał @advesarius post wcześniej. /edit: Wstawiaj kod w: [cpp]tutaj_kod[/cpp] . |
|
ashaneen Temat założony przez niniejszego użytkownika |
» 2013-02-06 23:28:15 Dobra, zrozumiałem już dzięki : ) |
|
« 1 » |