Facebook
From akak, 6 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 244
  1. typedef struct
  2. {
  3.     int number;
  4.     int count;
  5. } Number;
  6.  
  7. int has_entry(Number numbers[], int size, int number)
  8. {
  9.     for(int i = 0; i < size; i++)
  10.     {
  11.         if(numbers[i].number == number)
  12.         {
  13.             numbers[i].count++; // Jeżeli liczbę znaleziono zwiększ licznik o 1
  14.             return 1;
  15.         }
  16.     }
  17.  
  18.     return 0; // 0 oznacza że liczby nie znaleziono
  19. }
  20.  
  21. int main()
  22. {
  23.     int size;
  24.     printf("Podaj wielkosc tablicy\n");
  25.     scanf("%d", &size);
  26.     int numbers[size];
  27.  
  28.     printf("Teraz podaj elementy tej tablicy\n");
  29.     for(int i = 0; i < size; i++)
  30.     {
  31.         scanf("%d", &numbers[i]);
  32.     }
  33.  
  34.     // Inicjalizacja wszystkich pól na 0
  35.     Number counter[size];
  36.     for(int i = 0; i < size; i++)
  37.     {
  38.         counter[i].number = 0;
  39.         counter[i].count = 0;
  40.     }
  41.     int counter_size = 0; // Ile miejsc zostało zapełnionych
  42.     /* Dzięki temu nie musimy lecieć przez całą tablicę i sprawdzać 0 */
  43.  
  44.     for(int i = 0; i < size; i++)
  45.     {
  46.         if(!has_entry(counter, counter_size, numbers[i])) // Jeżeli nie znaleziono
  47.         {
  48.             counter[counter_size].number = numbers[i]; // Ustaw numer
  49.             counter[counter_size].count = 1; // Ustaw ilość wystąpień na 1
  50.             counter_size++; // Zwiększ ilość miejsc zapełnionych
  51.         }
  52.     }
  53.  
  54.     for(int i = 0; i < counter_size; i++) // Wyświetlanie tablicy wystąpień
  55.     {
  56.         printf("%d: %d\n", counter[i].number, counter[i].count);
  57.     }
  58. }