Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57

Программа по определению максимального количества одинаковых элементов массива.

30.04.2012, 14:06. Показов 4180. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста, если глобально, то задача в следующем: Дан целочисленные массив размера N. Определить максимальное количество его одинаковых элементов. Примерный алгоритм: последовательно посматриваем весь массив, следя за тем чтобы каждый следующий элемент был равен предыдущему. если это не так, мы только что нашли конец последовательности одинаковых элементов. запоминаем её размер, и начинаем отсчет заново с того элемента, который не совпал. и так далее до конца. если размер новой найденной последовательности больше старой, обновляем указатель на начало этой последовательности и её новый размер. Но вот я не знаю как это записать, помогите пожалуйста.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
 int n=100, i;
 int a[n];
 srand(21);
 for(i=0;i<n;i++)
  a[i]=rand()%11;
  printf("\n\nARRAY A\n\n");
    for(i=0;i<n;i++)
      printf("%8i",a[i]);
 return 0;
}
это код на ввод массива, а вот дальше не пойму. Подскажите! Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2012, 14:06
Ответы с готовыми решениями:

Поиск максимального количества одинаковых элементов в одномерном массиве
Дан целочисленный массив размера N.Найти максимальное количество его одинаковых элементов. Программа работает неправильно помогите найти...

Подсчет количества одинаковых элементов массива
Добрый вечер. Хочу ввести массив и отобразить какой элемент и сколько раз повторяется. Получилось, но хотелось что бы последующие элементы,...

Вычислить сумму максимального элемента массива и количества нулевых элементов массива
Помогите пожалуйста. Дан линейный массив действительных чисел. Вычислить сумму максимального элемента массива и количества нулевых...

11
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
30.04.2012, 14:27
То есть эти самые одинаковые элементы расположены друг за другом а не в разных местах массива?
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:28  [ТС]
Цитата Сообщение от Toshkarik Посмотреть сообщение
То есть эти самые одинаковые элементы расположены друг за другом а не в разных местах массива?
Нет ,в том то и дело что в разных местах, по всему массиву.
0
3 / 3 / 0
Регистрация: 30.04.2012
Сообщений: 18
30.04.2012, 14:35
Цитата Сообщение от fenixgaurd Посмотреть сообщение
Нет ,в том то и дело что в разных местах, по всему массиву.
Задача определить самую длинную последовательность элементов или наибольшее число вхождений элемента в массив? Т.е если задача самую длинную последовательность то на примере aaabbbbababab это "bbbb", а если наибольшее число вхождений, то это 7 (7 раз "b" встречается в примере).
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:43  [ТС]
Массив 0 1 1 1 1 0 2 0 0 3 0 1 0 1 0. Видим, что нулей 7 штук в массиве(больше всего). Вот надо указать их количество и указать сам элемент.
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
30.04.2012, 14:44
Тогда Ваш примерный алгоритм никак не вяжется с заданием.
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:44  [ТС]
Подскажите как тогда мне его исправить?
0
3 / 3 / 0
Регистрация: 30.04.2012
Сообщений: 18
30.04.2012, 14:56
Кроме тупоперебора мне в голову больше ничего не приходит.

Запоминаешь в переменную A элемент массива №1, сравниваешь его со всеми с 1 по 100, в переменную записываешь количество вхождений N. Потом берешь элемент 2, если по окончанию итерации количество вхождений текущего элемента больше N, то в N записываешь это количество вхождений, а в A записываешь этот элемент (2).

Дальше можно поработать над условиями окончания итераций, но это уже оптимизация.
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
30.04.2012, 15:11
Примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bool flag = true;
int count = 0, 
    element = 0,
    tmpCount = 0;
 
for ( int i = 0; i < size; i++ ) {
   flag = true;
 
   for ( int j = 0; j < i; j++ )
      if ( a[ i ] == a[ j ] ) {
         flag = false;
         break;
      }
 
   if ( flag ) {
      tmpCount = 1;
 
      for ( int j = i + 1; j < size; j++ )
         if ( a[ i ] == a[ j ] )
            tmpCount++;
 
      if ( tmpCount > count ) {
         count = tmpCount;
         element = a[ i ];
      }
   }
}
2
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 18:00  [ТС]
С вашей помощью получилось написать! Вот код на СИ
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<stdio.h>
int main (void)
{
    int n=100,c=0,element=0,t=0,i,j,f=1;
    int a[n];
    srand(6);
    for(i=0;i<n;i++)
     a[i]=rand()%61;
    printf("\n\nArray A\n\n");
     for(i=0;i<n;i++)
      printf("%8i",a[i]);
 
    for(i=0;i<n;i++)
     {
        f=1;
        for(j=0;j<i;j++)
         if(a[i]==a[j])
          f=0;
        if(f)
        {
            t=1;
             for(j=i+1;j<n;j++)
              if(a[i]==a[j])
               t++;
           if(t>c)
           {
               c=t;
               element=a[i];
           }
        }
 
     }
     printf("\nKol-vo povtorov = %i",c);
     printf("\nElement = %i\n",element);
 
    for(i=0;i<n;i++)
    if(a[i]==element)
    printf("a[%i]    ",i);
 
 
    return 0;
}
Подскажите мне пожалуйста алгоритм этой задачи, т.е что как и почему?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
01.05.2012, 10:36
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bool flag = true;
int count = 0, 
    element = 0,
    tmpCount = 0;
 
for ( int i = 0; i < size; i++ ) {          //проходим по всему массиву
   flag = true;                             //устанавливаем флаг, так как мы не знаем еще, встречался ли элемент равный текущему в массиве ранее
 
   for ( int j = 0; j < i; j++ )            //проверяем, встречался ли элемент равный текущему в массиве ранее
      if ( a[ i ] == a[ j ] ) {             //если встречался
         flag = false;                      //то убираем флаг
         break;                             //досрочно выходим из цикла, так как хватает хотя бы одного повтора
      }
 
   if ( flag ) {                            //если равный элемент еще не встречался
      tmpCount = 1;                         //устанавливаем временный счетчик на единицу
 
      for ( int j = i + 1; j < size; j++ )  //проходим с позиции текущего элемента до конца массива
         if ( a[ i ] == a[ j ] )            //если встречается равный элемент
            tmpCount++;                     //увеличиваем временный счетчик
 
      if ( tmpCount > count ) {             //проверяем, больше ли количество элементов равных текущему, чем предыдущему
         count = tmpCount;                  //если да, то присваиваем основной переменной количество элементов
         element = a[ i ];                  //и указываем сам элемент
      }
   }
}
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
01.05.2012, 15:59  [ТС]
Огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2012, 15:59
Помогаю со студенческими работами здесь

Изменение максимального количества элементов массива
Здравствуйте! Написал программу, в которой пользователь вводит с клавиатуры число (переменная koll), дальше создаётся двумерный массив...

проект+программа по определению количества дней, прошедших со дня рождения
Требуется выполнить: Разработать проект на языке программирования Delphi, который позволяет определить количество дней, прошедших со дня...

Подсчет максимального количества подряд идущих совпадающих элементов массива
ребят помогите!!! короче вот: Опишите на русском языке или одном из языков программирования алгоритм подсчета максимального количества...

Вычислить среднее арифметическое количества положительных элементов массива и максимального элемента
просто надо в функции вычислить. Количество положительных и максимальный находит а среднее нет пищет 0? #include &lt;cmath&gt; #include...

Подсчет максимального количества подряд идущих элементов массива, каждый из которых больше предыдущего
Опишите на языке программирования алгоритм подсчета максимального количества подряд идущих элементов, каждый из которых больше предыдущего,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru