// źródło https://eduinf.waw.pl/inf/alg/001_search/0036.php
//---------------------------
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;
int main( )
{
const int N = 400;
int Z [ N ], i, j, L, W, maxL, maxW;
// Generujemy zawartość Z [ ]
srand ( ( unsigned )time ( NULL ) );
for( i = 0; i < N; i++ ) Z [ i ] = rand( ) % 100;
// Wyszukujemy najczęstszą wartość
maxL = 0;
for( i = 0; i < N; i++ )
{
W = Z [ i ]; L = 0;
for( j = 0; j < N; j++ ) if( Z [ j ] == W ) L++;
if( L > maxL )
{
maxL = L; maxW = W;
}
}
// Wypisujemy tablicę
for( i = 0; i < N; i++ )
if( Z [ i ] == maxW ) cout << " >" << setw ( 2 ) << Z [ i ];
else cout << setw ( 4 ) << Z [ i ];
// Wypisujemy najczęstszy element oraz liczbę wystąpień
cout << endl << maxW << ": " << maxL << endl << endl;
return 0;
}
przykład.
Krótszy kod, nie oznacza że jest to lepszy ;pamięciowo kod', czytelniejszy czy też bardziej optymalny.
Problemem u Ciebie jest to, że wykonujesz np funkcje sortowania tablicy
sort(tab,tab+i)
zajrzyj co się dzieje w środku... to się zdziwisz jak mocno to obciąża cały proces.
do{
cin>>tab[i];
}while(tab[i++]);
to jest dosyć ryzykowane szczególnie opieranie pętli while na elementach tablicy w których indeks jest inkrementowany, polecam klasyczny for.