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

[Lekcja 22] Błędne liczby minimum i maksimum.

Ostatnio zmodyfikowano 2012-03-22 22:08
Autor Wiadomość
abcde
Temat założony przez niniejszego użytkownika
[Lekcja 22] Błędne liczby minimum i maksimum.
» 2012-03-22 21:34:34
Witam. Kolejna lekcja kolejny problem.
Otóż mój aktualny program nie prawidłowo wyświetla liczbę minimalną i maksymalną.
Z obserwacji wynika, że jest zawsze jedna liczba mniejsza niż tą co ona poda. Tak samo jest zawsze jedna wyższa niż podaje program.
Czyli częściowo działa, ale nie do końca.
Moje wyszukiwanie min i max odbywa się w ten sposób, że przyjmuje pierwszy element tablicy jako min i max.
Następnie sprawdzam czy elementy w tablicy są jeszcze mniejsze i większe.
Jeżeli tak to przypisuje jej wartość elementu tablicy. I tak dla wszystkich elementów.
Mam nadzieje, że rozumiecie mniej więcej o co mi chodzi i jak ja to szukałem. Starałem sie jak najlepeij opisać problem.

Kod:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void wylosujLiczby( int tablica[], int ile )
{
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        tablica[ indeks ] =( rand() % 21 ) + 10;
    }
}

void wypiszTablice( int tablica[], int ile )
{
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        std::cout << " " << tablica[ indeks ] << std::endl;
    }
}

void wypiszTabliceOdTylu( int tablica[], int ile )
{
    std::cout << "Wypisywanie tablicy od tylu:" << std::endl;
    for( int indeks = 9; indeks >= 0; indeks-- )
    {
        std::cout << " " << tablica[ indeks ] << std::endl;
    }
}

int znajdzMinimum( int tablica[], int ile )
{
   
    int min;
    min = tablica[ 0 ];
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        if( tablica[ indeks ] < min )
        {
            min = tablica[ indeks ];
            return min;
        }
    }
}


int znajdzMaksimum( int tablica[], int ile )
{
    int max;
    max = tablica[ 0 ];
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        if( tablica[ indeks ] > max )
        {
           
            max = tablica[ indeks ];
            return max;
        }
    }
}

void wypiszMinMax( int min, int max )
{
    std::cout << "minimalna wartosc: " << min << std::endl;
    std::cout << "maksymalna wartosc: " << max << std::endl;
   
    return;
}


int main()
{
    srand( time( NULL ) );
    int tablica[ 10 ];
    wylosujLiczby( tablica, 10 );
    wypiszTablice( tablica, 10 );
    wypiszTabliceOdTylu( tablica, 10 );
    int iMin = znajdzMinimum( tablica, 10 );
    int iMax = znajdzMaksimum( tablica, 10 );
    wypiszMinMax( iMin, iMax );
    return 0;
}

P-53103
SeaMonster131
» 2012-03-22 21:43:37
W funkcjach gdzie spr najmniejszą i największą liczbę, wywal te return na koniec funkcji, bo od razu kiedy jakaś liczba będzie mniejsza/większa, to Ty już ją zwracasz.
P-53105
abcde
Temat założony przez niniejszego użytkownika
» 2012-03-22 22:00:52
Dziękuję za odpowiedź. Rzeczywiście to było to.
Poprawiłem i wszystko działa jak należy.
Dzięki i pozdrawiam.
Wrzucam poprawny kod.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

void wylosujLiczby( int tablica[], int ile )
{
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        tablica[ indeks ] =( rand() % 21 ) + 10;
    }
}

void wypiszTablice( int tablica[], int ile )
{
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        std::cout << " " << tablica[ indeks ] << std::endl;
    }
}

void wypiszTabliceOdTylu( int tablica[], int ile )
{
    std::cout << "Wypisywanie tablicy od tylu:" << std::endl;
    for( int indeks = 9; indeks >= 0; indeks-- )
    {
        std::cout << " " << tablica[ indeks ] << std::endl;
    }
}

int znajdzMinimum( int tablica[], int ile )
{
   
    int min;
    min = tablica[ 0 ];
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        if( tablica[ indeks ] < min )
        {
            min = tablica[ indeks ];
           
        }
    }
    return min;
}


int znajdzMaksimum( int tablica[], int ile )
{
    int max;
    max = tablica[ 0 ];
    for( int indeks = 0; indeks < ile; indeks++ )
    {
        if( tablica[ indeks ] > max )
        {
           
            max = tablica[ indeks ];
           
        }
    }
    return max;
}

void wypiszMinMax( int min, int max )
{
    std::cout << "minimalna wartosc: " << min << std::endl;
    std::cout << "maksymalna wartosc: " << max << std::endl;
   
    return;
}


int main()
{
    srand( time( NULL ) );
    int tablica[ 10 ];
    wylosujLiczby( tablica, 10 );
    wypiszTablice( tablica, 10 );
    wypiszTabliceOdTylu( tablica, 10 );
    int iMin = znajdzMinimum( tablica, 10 );
    int iMax = znajdzMaksimum( tablica, 10 );
    wypiszMinMax( iMin, iMax );
    return 0;
}
P-53106
SeaMonster131
» 2012-03-22 22:08:43
Jeżeli problem rozwiązany, to trzeba zamknąć temat ;)
P-53107
« 1 »
  Strona 1 z 1