najmniejsza i największa wartość w tablicy

0

Mam do zrobienia program, który zwraca największą i najmniejszą wartość liczbową z tablicy, która wcześniej została zapełniona. Oto co zrobiłem dotychczas:

 
#include <iostream>
using namespace std;

int i,a,liczba,maks,mala;

int main () {
cout<<"ile liczb"<<endl;
cin>>a;

int tab[a];

//wprowadzanie do tablicy
cout<<"wprowadz 4 liczby"<<endl;

for (i=1;i<=a;i++){
    cin>>liczba;
    tab[i]=liczba;}
   
cout<<endl;

//wyswietlenie tablicy
for (i=1;i<=a;i++)
    cout<<tab[i]<<endl;

cout<<endl<<endl;
//najwieksza
for (i=1;i<=a;i++){
    if (tab[i]>maks){
       maks=tab[i];}
    }
cout<<endl<<maks<<endl;

//najmniejsza
for (i=1;i<=a;i++){
    if (tab[i]<mala){
       mala=tab[i];}
    }
cout<<mala<<endl;

system("pause");}

Jednakże nie zwraca mi wartości najmniejszej (zmienna "mala"), z tego powodu, że domyślną wartością jest 0. Nie wiem jak poradzić sobie z tym problemem. Wpisałem po wyszukaniu największej taką linijkę: "mala=maks". Działa, ale nie wiem jak wyszukać liczbę najmniejszą bez wcześniejszego szukania największej. Macie na to jakieś rozwiązanie?

1
  1. Tablice indeksujemy od 0 do n-1 a nie od 1 do n!
  2. Nie uzywamy zmiennych globalnych
  3. ZAWSZE inicjalizujemy zmienne!
  4. Podstaw sobie mala=tab[0] a potem pętlą leć od 1 do n-1, tak samo zrób z maksem...
0

Dzięki, działa. Jestem niedoświadczony w tej dziedzinie, więc muszę zadać takie pytane. Mianowicie dlaczego nie używamy zmiennych globalnych i dlaczego zawsze inicjalizować zmienne?

0
  1. Zmienne globalne powodują na przykład większą szansę na konflikt nazw zmiennych. Poza tym jeśli wewnątrz funkcji zmieniasz jakąś zmienną globalną to wywołanie tej funkcji zmieni ją 2 razy...
  2. Inicjalizujemy zmienne żeby mieć pewność jaką mają wartość! Akurat zmienne globalne są zerowane, ale to bardzo szczególna sytuacja.

int zmiennaGlobalna;

void funkcjaZmieniajacaZmiennaGlobalna(){
    zmiennaGlobalna = 1;
}

int main(){
  zmiennaGlobalna = 0;
  funkcjaZmieniajacaZmiennaGlobalna();
  zmiennaGlobalna = 10;
  funkcjaZmieniajacaZmiennaGlobalna();
  // zmienna globalna znów = 1
  return 0;
}

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