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

Pętla znajdujaca najwiekszą wartość sposród indeksów tablicy.

Ostatnio zmodyfikowano 2013-02-06 23:28
Autor Wiadomość
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.

C/C++
int maks( int tablica[] ) // 10 elementowa
{
    int imax = 0;
    int numer = 0;
    do
    {
        if( tablica[ numer ] < tablica[ ++numer ] ) // probowalem rowniez numer+1, zamiast ++numer.
        {
            imax = tablica[ numer + 1 ];
        }
        ++numer;
       
       
    } while( numer < 10 );
   
    return imax;
}

P-75867
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 ;)

P-75870
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...
P-75871
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.
P-75874
ashaneen
Temat założony przez niniejszego użytkownika
» 2013-02-06 23:01:22
C/C++
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 {} ...
P-75876
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]
.
P-75879
ashaneen
Temat założony przez niniejszego użytkownika
» 2013-02-06 23:28:15
Dobra, zrozumiałem już dzięki : )
P-75882
« 1 »
  Strona 1 z 1