[C] Częstotliwość występowania elementów tablicy

BlackMath
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 3 paź 2012, o 18:39
Płeć: Mężczyzna
Lokalizacja: Gdynia

[C] Częstotliwość występowania elementów tablicy

Post autor: BlackMath »

Witam. Mam za zadanie napisać program, w którym generowana jest tablica 10 elementowa. Po wpisaniu liczb przez użytkownika program powinien określić częstość występowania poszczególnych elementów. Z pierwszą częścią nie miałem problemów, jednak kompletnie nie wiem jak poradzić sobie z określeniem powtarzanych wartości. Byłbym wdzięczny gdyby ktoś wytłumaczyłby mechanizm tu działający. O to co jak na razie wyskrobałem :

Kod: Zaznacz cały

#include <stdlib.h>
#include <stdio.h>

int main()
{
int a[10];
int k,i;

for(i=0;i<10;i++)
do{
      printf("Podaj element: a[%d]=",i);
      k=scanf("%d",&a[i]);
      fflush(stdin);
     }while(k==0);
printf("Drukowanie wczytanej tablicy:");


system("PAUSE");
return 0;
}
Ostatnio zmieniony 3 paź 2012, o 19:15 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C] Częstotliwość występowania elementów tablicy

Post autor: royas »

Dla uproszczenia załóż, że wczytane liczby są nieujemne.
Przy wczytywaniu zapamiętuj największą wpisaną liczbę max
Po wczytaniu utwórz tablicę int h[max+1].
Wypełnij ją zerami.
Potem taka pętla:
for (i=0;i<10;++i) ++h[a[i]];

Inne podejście:
Posortuj tablicę a. A potem pozliczaj ile razy pod rząd występuje dana wartość.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C] Częstotliwość występowania elementów tablicy

Post autor: Althorion »

Dla uproszczenia załóż, że wczytane liczby są nieujemne.
Przy wczytywaniu zapamiętuj największą wpisaną liczbę max
Zamiast tego można zapamiętywać zarówno maksimum, jak i minimum i potem odpowiednio dużą tablicę zrobić.

Przy czym metoda z sortowaniem będzie szybsza do napisania (qsort z biblioteki standardowej).
ODPOWIEDZ