Jak wyszukać więcej niż jedną pozycję danej liczby?

0

Mój kod tworzy ciąg liczb od -10 do 10 i to użytkownik wybiera ile ich chce od 50 wzwyż oraz wybiera najmniejszą i największą liczbę w tym ciągu oraz pokazuje pierwsze miejsce najmniejszej i największej liczby, a chcę żeby pokazywało każde miejsce tych liczb.A oto kod

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

int rozmiar()
{
	int x;
do{
	cout<<"podaj rozmiar tablicy <50,nieskonczonosci>";
	cin>>x;
}while (x<50);
return x;
}
void losowanie(int t[], int n)
{
	for(int i=0; i<n; i++)
	t[i]=rand()%21-10;
}
void pisz(int t[], int n)
{
	for(int i=0; i<n; i++)
	cout<<setw(5)<<t[i];
}
int szukaj_min_max(int t[], int n)
{
	int min=t[0], max=t[0], min_pozycja=t[0], max_pozycja=t[0];
	for(int i=1; i<n;i++)
	{
	if(t[i]<min)
	{
	min=t[i];
	min_pozycja=i+1;
	}
	if(t[i]>max)
	{
	
	max=t[i];
	max_pozycja=i+1;
	}
}	
	cout<<endl<<"min = "<<min<<endl<<min_pozycja;
	cout<<endl<<"max = "<<max<<endl<<max_pozycja;
}
int main()
{
	srand(time(NULL));
	int n=rozmiar();
	
	int t[n];
	losowanie(t,n);
	pisz(t,n);
	szukaj_min_max(t,n);
	return 0;
}
0

Zrób sobie strukturę na przechowywanie znalezionych minmaksów, np. std::vector<unsigned int>. Jak napotkasz maksa po raz pierwszy, to ją tworzysz ją jednoelementową z tą pozycją (kasujesz więc starą zawartość; tę która przechowywała pozycje niższej liczby), jak się powtórzy, to dorzucasz znalezioną pozycję.

0

Jeżeli chcesz tylko pokazać, to szukasz max w jednym przebiegu, zaś w drugim wypisujesz wszystkie pozycje o podanej wartości.
Jeżeli chcesz mieć je w tablicy, to w zasadzie tak samo będzie najprościej.

int min=szukaj_min(t,n);
cout<<"min ="<<min<<endl;
show_positions(t,n,min);
int max=szukaj_max(t,n);
cout<<"max ="<<max<<endl;
show_positions(t,n,max);

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