C/C++

Помогите решить задачу, пожалуйста. Сам не понимаю. (Язык Си)

Найдите самый парный элемент массива. Если такого нет, то выведите первый элемент.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_SIZE 1024

struct masel
{
char s[MAX_SIZE];
int count_elements[MAX_SIZE];
int len;
} me;

int main()
{
char * str;
str = (char *) malloc(MAX_SIZE);
scanf("%s", str); /* ввод строки */
int len = strlen(str);
me.len = 0;
for(int x = 0; x < len; x++)
{ /* подсчёт элементов в массиве */
if(! me.len)
{
me.s[me.len] = str[x];
me.count_elements[me.len] = 1;
me.len++;
}
else
{
int find = 0;
for(int y = 0; y < me.len; y++)
{
if(str[x] == me.s[y])
{ /* найден парный элемент */
me.count_elements[y]++;
find = 1;
}
}
if(! find)
{ /* запись нового элемента */
me.s[me.len] = str[x];
me.count_elements[me.len] = 1;
me.len++;
}
}
}
/* поиск самого парного элемента */
int max_count = 0;
/* int num_el = 0; */
char el;
for(int x = 0; x < me.len; x++)
{
if(me.count_elements[x] > max_count)
{
max_count = me.count_elements[x];
/* num_el = x; */
el = me.s[x];
}
}

printf("%c\n", el);

free(str);

return 0;
}
Олег Марков
Олег Марков
56 908
Лучший ответ
#include
#include
#include

#define MAX_SIZE 1024

struct masel
{
char s[MAX_SIZE];
int count_elements[MAX_SIZE];
int len;
} me;

int main()
{
char * str;
str = (char *) malloc(MAX_SIZE);
scanf("%s", str); /* ввод строки */
int len = strlen(str);
me.len = 0;
for(int x = 0; x < len; x++)
{ /* подсчёт элементов в массиве */
if(! me.len)
{
me.s[me.len] = str[x];
me.count_elements[me.len] = 1;
me.len++;
}
else
{
int find = 0;
for(int y = 0; y < me.len; y++)
{
if(str[x] == me.s[y])
{ /* найден парный элемент */
me.count_elements[y]++;
find = 1;
}
}
if(! find)
{ /* запись нового элемента */
me.s[me.len] = str[x];
me.count_elements[me.len] = 1;
me.len++;
}
}
}
/* поиск самого парного элемента */
int max_count = 0;
/* int num_el = 0; */
char el;
for(int x = 0; x < me.len; x++)
{
if(me.count_elements[x] > max_count)
{
max_count = me.count_elements[x];
/* num_el = x; */
el = me.s[x];
}
}

printf("%c\n", el);

free(str);

return 0;
}