Mam do napisania program (nie jest to żaden konkurs itp) który wyszuka zmienne które się powtarzają i co ważne wypisze je na wyjściu w kolejności rosnącej. Napisałem program, który najpierw qsortem sortuje tablicę, potem do drugiej tablicy wprowadza powtarzające się liczby (niestety wszystkie). Jak zmodyfikować ten program, by wyświetlał tylko RAZ powtarzającą się zmienną. Dla przykładu dla tablicy {7,3,5,6,3,7} mam na wyjściu 3,3,7,7 a nie tak jak powinno być czyli np. 3,7.
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef int ElementT;
int sortujRosnaco( const ElementT * arg1, const ElementT * arg2 )
{
if( * arg1 <* arg2 )
return - 1;
if( * arg1 >* arg2 )
return 1;
return 0;
}
void posortuj( ElementT * tablica, int ilosc, int( * funkcjaSortujaca )( const ElementT *, const ElementT * ) )
{
qsort( tablica, ilosc, sizeof( * tablica ),( int( * )( const void *, const void * ) ) funkcjaSortujaca );
}
void powtorka (int *tab,int n)
{
int powtorzenia=0,k=0;
int B[n];
for(int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (tab[i]==tab[j])
{
powtorzenia++;
}
}
if (powtorzenia>1)
{
B[k]=tab[i];
k++;
}
powtorzenia=0;
}
for (int i=0;i<k;i++)cout<<B[i]<<" "<<endl;
}
/////////////////////////////////
int main()
{
int n;
cin>>n;
int A[n];
for (int i=0;i<n;i++)
{
cin>>A[i];
}
posortuj( A, sizeof( A ) / sizeof( ElementT ), sortujRosnaco );
powtorka(A,n);
return 0;
}