Tablice 2-wymiarowe - wyznaczanie minimum i maksimum.

0

Witam, mam do napisania program, który wyszuka w stworzonej i wypełnionej tablicy przez użytkownika najmniejszy i najwiekszy element w tablicy 2-wymiarowej. Oto co dotychczas napisałem i nie zawsze dostaje dobre wyniki:

#include <iostream>

using namespace std;


int main()

{
    int n, k, maks, minim;
    char wybor, powtorz = 'm';
    cout << "------ TABLICE 2D------" << endl;
    cout << "Podaj liczbe wierszy tablicy jaka chcesz utworzyc: ";
    cin >> n;
    cout << "Podaj liczbe kolumn tablicy jaka chcesz utworzyc: ";
    cin >> k;
    float tab2d[n-1][k-1];
    maks = tab2d[0][0];
    minim = tab2d[0][0];
    for (int i = 0; i <= (n-1); i++)
    {
        for (int j = 0; j <= (k-1); j++)
        {
            cout << "Podaj wartosc elementu tablicy [" << i+1 << "][" << j+1 << "] ";
            cin >> tab2d[i][j];
        }
    }

    do
    {

    cout << "1. Wyswietl zawartosc tablicy" << endl;
    cout << "2. Wyswietl max element tablicy" << endl;
    cout << "3. Wyswietl min element tablicy" << endl;
    cin >> wybor;
     switch (wybor)
    {
    case '1':
    for (int i = 0; i <= (n-1); i++)
    {
        for (int j = 0; j <= (k-1); j++)
        {
            cout << "Wartosc elementu tablicy [" << i << "][" << j << "] to: " << tab2d[i][j] << endl;
        }
    }
    break;
    case '2':
    for (int i = 0; i <= (n-1); i++)
    {

        for (int j = 0; j <= (k-1); j++)
        {
            if (maks < tab2d[i][j])
            {
            maks = tab2d[i][j];
            }

        }
    }
    cout << "Maksymalny element tablicy to: " << maks << endl;
    break;
    case '3':
    for (int i = 0; i <= (n-1); i++)
    {


        for (int j = 0; j <= (k-1); j++)
        {
            if (minim > tab2d[i][j])
            {
            minim = tab2d[i][j];
            }

        }
    }
    cout << "Minimalny element tablicy to: " << minim << endl;
    break;
    }
    cout << "Nacisnij p aby powrocic do menu, inny klawisz zakonczy dzialanie aplikacji";
    cin >> powtorz;
    }while (powtorz = 'p');





    return 0;
}
 
0

Te instrukcje

    maks = tab2d[0][0];
    minim = tab2d[0][0];

są za wcześnie.

0

Plus zamiast for (int i = 0; i <= (n-1); i++) pisz for (int i = 0; i < n; i++).
Nie zmienia to wyniku działania kodu (zakładając, że nie dochodzi do przepełnienia podczas n-1 :P), a stylistycznie jest lepiej.

No i while (powtorz = 'p'); także jest źle. Pomyliłeś operator przypisania oraz porównania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1