[C++] Znajdowanie dwóch największych liczb


(adriano765) #1

Mam problem ze znalezieniem drugiej co do wielkości liczby. Stworzyłem takie coś ale nie działa dobrze co do drugiej wielkości z tej przykładowej tablicy.

#include

	using namespace std;

	int main()

	{

		int tab[5];

		for(int i=0;i<5;i++)

		{	

		cout << "Wprowadz wartosc nr " << i+1 <<" ";

		cin >> tab[i];	

		}

		int max=tab[0];


		for (int i=0;i<5;i++)

		if(tab[i]>max)max=tab[i];	

		int min=tab[0];

		for (int i=0;i<5;i++)	

		if( minmin) min=tab[i];

		cout << "max= " << max << "\n Nastepna liczba= " << min;


	return 0;			

	}

([alex]) #2

Niezbyt jasne z opisu co próbujesz osiągnąć.

Czy wynikiem dla tablicy:

5 5 5 5 0

ma być 5 czy 0?


(adriano765) #3

jeśli w tablicy będą liczby 2 4 6 8 10 to chce żeby max był równy 10 a min 8


([alex]) #4

a jeżeli w tablicy będą liczby 2 4 6 10 10 ?


(adriano765) #5

to max = 10 i min 10


([alex]) #6

W takim razie pierwszy przebieg ma znaleźć nie wartość tej maksymalnej liczby ale jej indeks (wartość ewentualnie).

W drugim przebiegu powinieneś pomijać nie wartość zaś indeks znaleziony w pierwszym przebiegu.

int max1=0;      

      for(int i=1;i<5;++i) if(tab[max1]
      int max2=!max1; // jeżeli max1=0 to max2=1, w przeciwnym przypadku max2=0

      for(int i=max2+1;i<5;++i) if((i!=max1)&&(tab[max2]
      cout << "max= " << tab[max1] << "\nNastepna liczba= " << tab[max2];

(Pablo_Wawa) #7

Jeśli obie liczby mogą być takie same, to nie trzymaj w programie samych ich wartości (max i min), tylko dodatkowo ich indeksy i je też porównuj, to wtedy wyłapiesz poprawnie drugą co do wartości liczbę.

EDIT: [alex] mnie ubiegł i ładnie to Ci napisał :slight_smile: