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, botów: 0