Program zliczający wystąpienia liczb. Jak uniknąć powtórzenia komunikatów?

0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int n;
    printf("Podaj rozmiar tablicy: ");
    scanf ("%d", &n);
    srand(time(NULL));
    int tab[n];

    int a;
    printf ("Podaj a: ", a);
    scanf ("%d",&a);

    for (int i=0; i<n; i++)
    {
        tab[i]=rand()%a+1;
    }

    printf ("Tablica: ");

    for (int i=0; i<n; i++)
    {
        printf ("%d  ",tab[i]);
    }

    int tab2[n];
    int x=0;
    for(int i=0; i<n; i++)

    {

        int licznik=1;

        for(int j=0; j<n; j++)
        {
            if(tab[i]==tab[j] && i!=j)
            {
                licznik++;
            }

        }
        printf ("Liczba %d wystepuje %d razy \n",tab[i],licznik);

    }
    return 0;
}

Program ma wypisywać ilość wystąpień danej liczby w tablicy z zakresu [0,a], co zrobic zeby był jeden komunikat dotyczacy jednej liczby.
screenshot-20180416200905.png

pozdrawiam

4

Twój program udzieli błędnej odpowiedzi np. dla tablicy 2 2 3 2 2. Zliczaj w osobnej strukturze danych (nawet tablicy) i potem ją wypisuj.

0

Mógłbym prosić trochę jaśniej? Przechowałem ilości wystąpień w tablicy, ale potem nie wiem jak z niej skorzystać.

1

Pseudokod:

tab[a] = {};
--Zdarzenie: Wystąpienie liczby x
tab[x]++;

petla i < a;
std::cout << "Liczba i wystapila tab[i]";

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