typedef struct { int number; int count; } Number; int has_entry(Number numbers[], int size, int number) { for(int i = 0; i < size; i++) { if(numbers[i].number == number) { numbers[i].count++; // Jeżeli liczbę znaleziono zwiększ licznik o 1 return 1; } } return 0; // 0 oznacza że liczby nie znaleziono } int main() { int size; printf("Podaj wielkosc tablicy\n"); scanf("%d", &size); int numbers[size]; printf("Teraz podaj elementy tej tablicy\n"); for(int i = 0; i < size; i++) { scanf("%d", &numbers[i]); } // Inicjalizacja wszystkich pól na 0 Number counter[size]; for(int i = 0; i < size; i++) { counter[i].number = 0; counter[i].count = 0; } int counter_size = 0; // Ile miejsc zostało zapełnionych /* Dzięki temu nie musimy lecieć przez całą tablicę i sprawdzać 0 */ for(int i = 0; i < size; i++) { if(!has_entry(counter, counter_size, numbers[i])) // Jeżeli nie znaleziono { counter[counter_size].number = numbers[i]; // Ustaw numer counter[counter_size].count = 1; // Ustaw ilość wystąpień na 1 counter_size++; // Zwiększ ilość miejsc zapełnionych } } for(int i = 0; i < counter_size; i++) // Wyświetlanie tablicy wystąpień { printf("%d: %d\n", counter[i].number, counter[i].count); } }