Линейный поиск: найти количество различных элементов, не упорядочивая массив - C (СИ)
Формулировка задачи:
В массиве М(к) много совпадающих элементов. Найти количе-
ство различных элементов в нём (не упорядочивая массива).
Решение задачи: «Линейный поиск: найти количество различных элементов, не упорядочивая массив»
textual
Листинг программы
#include<stdio.h>
int main(){
int n, t, i, j, arr[30],len, halflen,flag=0,count=0;
printf("Enter number of elements to insert in an array:");
scanf("%d",&len);
printf("Enter elements to insert in an array:");
for(i=0;i<len;i++){
scanf("%d",&t);
arr[i]=t;
}
printf("\n");
/*****************************/
for(i=0;i<len;i++){
count=1;
for(j=i+1;j<=len-1;j++){
if(arr[i]==arr[j] && arr[i]!='\0'){
count++;
arr[j]='\0';
}
}
if(arr[i]!='\0'){
printf("%d is %d times.\n",arr[i],count);
}
}
/*****************************/
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде реализуется линейный поиск для подсчета количества уникальных элементов в массиве, введенных пользователем. Вот список ключевых шагов:
- Ввод количества элементов и самих элементов массива с помощью функции scanf().
- Создание переменных для хранения количества уникальных элементов и их количества, а также переменной для отслеживания найденного уникального элемента.
- Два вложенных цикла: внешний для обхода всех элементов массива, внутренний для проверки, является ли текущий элемент уникальным.
- Если внутренний цикл обнаруживает, что текущий элемент уникален, он увеличивает счетчик уникальных элементов и устанавливает флаг.
- Если внешний цикл обнаруживает, что флаг установлен, он выводит текущий элемент и количество его вхождений.
- Функция getch() используется для приостановки программы и ожидания ввода пользователя.
- Код завершается возвратом 0, что означает успешное выполнение.