Найти повторяющиеся элементы массива - C (СИ)
Формулировка задачи:
Есть одномерный массив надо выяснить сколько раз встречается пара таких же элементов. Например аа, вв, пп,аа, результат должен быть аа - 2 раза, вв- 1 раз, пп -1 раз. Идей для выполнения этого задания вообще нету (((
Решение задачи: «Найти повторяющиеся элементы массива»
textual
Листинг программы
int b[256]; int main(){ char a[123]; int n; gets(a); for (int i = 1; i < sizeof(a) / sizeof(a[0]); i++){ if (a[i] == a[i - 1]){ b[a[i]]++; } } for (int i = 1; i < 256; i++){ if (b[i]){ printf("%c%c - %d times\n", i, i, b[i]); } } return 0; }
Объяснение кода листинга программы
Вот что делается в этом коде:
- Объявляется массив
b
размером 256. - В цикле
for
начиная с индекса 1 и доsizeof(a) / sizeof(a[0])
(что эквивалентноsizeof(a)
/sizeof(a[0])
и дает размер массиваa
в байтах, деленный на размер одного элемента массиваa
, то есть количество элементов в массивеa
) происходит следующее:- Проверяется, является ли текущий элемент массива
a
равным предыдущему элементу. - Если это так, то к значению переменной
b
приписывается единица (то естьb[a[i]]++
).
- Проверяется, является ли текущий элемент массива
- В цикле
for
начиная с индекса 1 и до 255 (что меньше, чемsizeof(b) / sizeof(b[0])
и поэтому безопасно) происходит следующее:- Если значение переменной
b
не равно нулю (то естьb[i]
), то выводится сообщение видаchar - times
, гдеchar
это значение переменнойi
, аtimes
это значение переменнойb[i]
.
- Если значение переменной
- В конце функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д