Diferența dintre cei 2 vectori este următoarea:
Vectorul frecvență înmagazinează de câte ori apare un număr într-un șir de numere.
Vectorul caracteristic este o operație booleană (adevărat sau fals), adică dacă un anumit număr s-a găsit, atunci valoarea lui este 1, dacă nu, atunci este 0.
În poza următoare avem un vector cu 7 elemente.
Vectorul frecvență va arăta în felul următor:
Ce observăm în poza de mai sus?
Valorile din chenar reprezintă de câte ori apare numărul de sub chenar în vectorul nostru (X[]).
Numărul 0 în vectorul nostru apare o singură dată, 1 nu apare deloc, 2 apare de 2 ori, etc.
Acum, vectorul caracteristic va arăta similar cu cel de sus, doar că valoarea maximă va fi 1 (adevărat).
Următorul program arată de câte ori a fost introdus un număr.
#include <stdio.h>
// Declaram variabilele ca fiind globale pentru ca fiecare element sa fie 0
int Vector_Frecventa[1000];
int Vector_Caracteristic[1000];
int main()
{
// Citim un numar si in functie de acest numar citim alte N numere
int N;
scanf_s("%d", &N);
/*
Un for ce se repeta de N ori
Citim numarul si in pozitia numarului respectiv in vector crestem valoarea cu 1
De exemplu: Citim 75, atunci Array[75] += 1 (deci numarul 75 a aparut de 1 ori)
*/
int Numar;
for (int i = 1; i <= N; i++)
{
scanf_s("%d", &Numar);
Vector_Frecventa[Numar] += 1;
if (!Vector_Caracteristic[Numar])
Vector_Caracteristic[Numar] = 1;
}
printf("Ai introdus urmatoarele numere:\n");
for (int i = 0; i < N; i++)
if (Vector_Caracteristic[i] != 0)
printf("%d", i);
printf("\n");
for (int i = 0; i < N; i++)
{
if(Vector_Frecventa[i] != 0)
printf("%d a fost introdus de %d ori\n", i, Vector_Frecventa[i]);
}
}