Ниче не приходит в голову, не могу придумать код - C (СИ)
Формулировка задачи:
Задан целочисленный массив размера N. Удалить из массива все элементы встречающиеся более двух раз. На языке С
Решение задачи: «Ниче не приходит в голову, не могу придумать код»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> #include <time.h> typedef struct CountNumber{ int number; int count; } CountNumber; int main(void){ enum { N = 20 }; int m[N]; srand(time(0)); for (int i = 0; i < N; ++i){ m[i] = rand() % 20; printf("%d ", m[i]); } printf("\n"); CountNumber *cn = malloc(sizeof(CountNumber) * N); int cn_size = 0; for (int i = 0; i < N; ++i){ int j = 0; for (; j < cn_size; ++j){ if (m[i] == cn[j].number){ ++cn[j].count; break; } } if (j == cn_size){ cn[cn_size].number = m[i]; cn[cn_size].count = 1; ++cn_size; } } int result[N]; int res_size = 0; for (int i = 0; i < N; ++i){ for (int j = 0; j < cn_size; ++j){ if ((m[i] == cn[j].number) && (cn[j].count <= 2)){ result[res_size++] = m[i]; break; } } } for (int i = 0; i < res_size; ++i) printf("%d ", result[i]); printf("\n"); return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем структуру CountNumber, которая содержит два поля: number (число) и count (количество)
- Определяем переменную N типа enum, которая равна 20
- Создаем массив m типа int размером N и инициализируем его случайными числами от 0 до 19 с помощью функции rand()
- Инициализируем генератор случайных чисел с помощью функции srand(time(0))
- Создаем указатель на структуру CountNumber и выделяем память под массив CountNumber размером N с помощью функции malloc()
- Инициализируем переменную cn_size, которая отслеживает количество заполненных элементов в массиве cn
- Заполняем массив cn, проверяя наличие числа в массиве m. Если число найдено, увеличиваем его счетчик на 1. Если число не найдено, добавляем его в массив cn и устанавливаем счетчик на 1.
- Создаем массив result и инициализируем переменную res_size, которая отслеживает количество заполненных элементов в массиве result
- Заполняем массив result, проверяя наличие числа в массиве m и его счетчика в массиве cn. Если число найдено и его счетчик меньше или равен 2, добавляем его в массив result и увеличиваем res_size на 1.
- Выводим массив result на экран с помощью функции printf()
- Возвращаем EXIT_SUCCESS в качестве результата работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д