Решил следующим образом задачу, вдруг кому сгодиться) Программа ищет в массиве число, которое повторяется наибольшее количество раз, если таких чисел несколько, которые имеют равное количество повторений, то выводит их все.
Код |
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <locale.h>
struct buff // структура для записи переменной и количества совпадений { int tempVar; int tempCount; }; int main(int argc, char *argv[]) { setlocale (LC_CTYPE,""); srand((int)time(NULL)); int *mass,i=10,j,t,z,MaxCount=0; char flag; struct buff vmass[i]; mass=calloc(i,sizeof(int)); // динамический массив for(j=0;j<i;j++) // заполняем рандомными числами от -10 до 10 { mass[j]=rand()%20-10; vmass[j].tempVar=mass[j]; // заносим массив в структурированный массив vmass[j].tempCount=0; // для каждой переменной пока количество совпадений 0 printf("Элемент массива %d случайное число %d\n",j,mass[j]); }; printf("\n"); for(j=0;j<i;j++) { flag='f'; // совпадений нет t=0; for(z=0;z<i;z++) { if(mass[j]==mass[z]) // если есть совпадение { flag='t'; // есть совпадение t++; // количество совпадений }; }; if('t'==flag) { vmass[j].tempCount=vmass[j].tempCount+t; // записываем в структурированный массив количество совпадений }; printf("vmass[%d].tempCount=%d vmass.tempvar=%d\n",j,vmass[j].tempCount,vmass[j].tempVar); }; printf("\n"); for(j=0;j<i;j++) // сортируем структурированный массив по переменной Var { for(z=0;z<i-1;z++) { if(vmass[z].tempVar<vmass[z+1].tempVar) { int buff=vmass[z].tempVar; vmass[z].tempVar=vmass[z+1].tempVar; vmass[z+1].tempVar=buff; buff=vmass[z].tempCount; vmass[z].tempCount=vmass[z+1].tempCount; vmass[z+1].tempCount=buff; }; }; if(MaxCount<vmass[j].tempCount) { MaxCount=vmass[j].tempCount; }; }; z=11; flag='t'; if(MaxCount!=1) { for(j=0;j<i;j++) { // printf("vmass[%d].tempVar=%d Count=%d\n",j,vmass[j].tempVar,vmass[j].tempCount); if((vmass[j].tempVar!=z)&&(vmass[j].tempCount==MaxCount)) { if('t'==flag) { printf("Наибольшее чисило раз(%d) встречается элемент %d\n",MaxCount,vmass[j].tempVar); flag='f'; } else if('f'==flag) { printf("Элемент %d имеет такое же количество повторений\n",vmass[j].tempVar); }; }; z=vmass[j].tempVar; }; } else printf("Все элементы встречаются по только одному разу/n"); // printf("MaxCount=%d\n",MaxCount); return 0; }
|
Пусть код и убогий(как говорят тут старшие товарищи)... зато рабочий и без использования всякой всячины, которая на первом курсе не прокатывает. |