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

[Praca domowa z rozdziału 22] Znalezienie największej wartości w tablicy

Ostatnio zmodyfikowano 2016-12-16 22:45
Autor Wiadomość
Luteres
Temat założony przez niniejszego użytkownika
[Praca domowa z rozdziału 22] Znalezienie największej wartości w tablicy
» 2016-12-16 22:15:37
Nowa lekcja, nowe problemy.

Tak powinien wyglądać kod funkcji main, więc nie chcę wprowadzać kolejnych funkcji (myślałem o bool do sprawdzania czy było coś większego).

C/C++
int main()
{
    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;
}

W moim kodzie pierwsza funkcja wyliczająca maksimum wykonuje się poprawnie, druga natomiast szwankuje. Jeśli dobrze myślę to dzieje się tak dlatego, że moja funkcja wyliczająca maksimum modyfikuje tablicę, ale nie mogę wpaść na to jak w inny sposób znaleźć maksimum/minimum.


C/C++
/* Napisz program który wykona wszystkie poniższe kroki w podanej kolejności:
* Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy;
* Wypisuje 10 wylosowanych liczb od początku do końca;
* Wypisuje 10 wylosowanych liczb od końca do początku;
* Znajduje najmniejszą oraz największą wylosowaną liczbę.
* Wypisuje najmniejszą i największą wylosowaną liczbę.
Program nie może używać pętli innych niż pętla for. */

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

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

void wypisz_od_poczatku( int tablica[], int ile )
{
    cout << "Od poczatku: " << endl;
    for( int i = 0; i < ile; i++ )
    {
        cout << "Liczba " << i + 1 << " : " << tablica[ i ] << endl;
    }
}

void wypisz_od_konca( int tablica[], int ile )
{
    cout << endl << "Od konca: " << endl;
    for( int i = 0; ile > i; ile-- )
    {
        cout << "Liczba " << ile << " : " << tablica[ ile - 1 ] << endl;
    }
    cout << endl;
}

int znajdzMax( int tablica[], int ile )
{
    for( int i = 0; i < ile; i++ )
    {
        if( tablica[ i ] >= tablica[ i - 1 ] && i > 0 )
        {
            cout << tablica[ i ] << " rowna lub wieksza od " << tablica[ i - 1 ] << endl;
            tablica[ i - 1 ] = tablica[ i ];
        }
       
        if( tablica[ i ] < tablica[ i - 1 ] && i > 0 )
        {
            cout << tablica[ i ] << " mniejsza od " << tablica[ i - 1 ] << endl;
            tablica[ i ] = tablica[ i - 1 ];
        }
    }
    return tablica[ ile - 1 ];
}

int znajdzMin( int tablica[], int ile )
{
    for( int i = 0; i < ile; i++ )
    {
        if( i == 0 )
             cout << endl << "Pierwsza liczba: " << tablica[ i ] << endl;
       
        if( tablica[ i ] >= tablica[ i - 1 ] && i > 0 )
        {
            cout << tablica[ i ] << " rowna lub wieksza od " << tablica[ i - 1 ] << endl;
            tablica[ i ] = tablica[ i - 1 ];
        }
       
        if( tablica[ i ] < tablica[ i - 1 ] && i > 0 )
        {
            cout << tablica[ i ] << " mniejsza od " << tablica[ i - 1 ] << endl;
            tablica[ i - 1 ] = tablica[ i ];
        }
    }
    return tablica[ ile - 1 ];
   
}

int main()
{
    srand( time( NULL ) );
    int tablica[ 10 ];
    losujZapisz( tablica, 10 );
    wypisz_od_poczatku( tablica, 10 );
    wypisz_od_konca( tablica, 10 );
   
    cout << "Najwieksza liczba: " << znajdzMax( tablica, 10 ) << endl;
    cout << "Najmniejsza liczba: " << znajdzMin( tablica, 10 );
   
    return 0;
}
P-155067
carlosmay
» 2016-12-16 22:32:22
Do znalezienia maks i min potrzebujesz dodatkowej zmiennej w tych funkcjach.

np.
C/C++
int maks( int tab[], int rozmiar )
{
    int maks = tab[ 0 ];
    for( int i = 1; i < rozmiar; ++i ) {
        if( maks < tab[ i ] ) {
            maks = tab[ i ];
        }
    }
    return maks;
}
P-155068
Luteres
Temat założony przez niniejszego użytkownika
» 2016-12-16 22:45:35
Wielkie dzięki, nawet rozumiem dlaczego tak, teraz pięknie działa ;)
P-155069
« 1 »
  Strona 1 z 1