Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:06     Программа по определению максимального количества одинаковых элементов массива. #1
Здравствуйте! Помогите пожалуйста, если глобально, то задача в следующем: Дан целочисленные массив размера 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;
}
это код на ввод массива, а вот дальше не пойму. Подскажите! Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2012, 14:06     Программа по определению максимального количества одинаковых элементов массива.
Посмотрите здесь:

C++ Составить программу для подсчета набольшего количества одинаковых элементов, размещенных последовательно, в массиве для каждого одномерного массива...
В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента массива; 2) произведение элементов массива, расположенных между C++
Вычислить сумму максимального элемента массива и количества нулевых элементов массива C++
Вычислить среднее арифметическое количества положительных элементов массива и максимального элемента C++
Упорядочить столбцы матрицы по возрастанию количества одинаковых элементов в каждом столбце C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
30.04.2012, 14:27     Программа по определению максимального количества одинаковых элементов массива. #2
То есть эти самые одинаковые элементы расположены друг за другом а не в разных местах массива?
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:28  [ТС]     Программа по определению максимального количества одинаковых элементов массива. #3
Цитата Сообщение от Toshkarik Посмотреть сообщение
То есть эти самые одинаковые элементы расположены друг за другом а не в разных местах массива?
Нет ,в том то и дело что в разных местах, по всему массиву.
olympic
3 / 3 / 0
Регистрация: 30.04.2012
Сообщений: 18
30.04.2012, 14:35     Программа по определению максимального количества одинаковых элементов массива. #4
Цитата Сообщение от fenixgaurd Посмотреть сообщение
Нет ,в том то и дело что в разных местах, по всему массиву.
Задача определить самую длинную последовательность элементов или наибольшее число вхождений элемента в массив? Т.е если задача самую длинную последовательность то на примере aaabbbbababab это "bbbb", а если наибольшее число вхождений, то это 7 (7 раз "b" встречается в примере).
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:43  [ТС]     Программа по определению максимального количества одинаковых элементов массива. #5
Массив 0 1 1 1 1 0 2 0 0 3 0 1 0 1 0. Видим, что нулей 7 штук в массиве(больше всего). Вот надо указать их количество и указать сам элемент.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
30.04.2012, 14:44     Программа по определению максимального количества одинаковых элементов массива. #6
Тогда Ваш примерный алгоритм никак не вяжется с заданием.
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 14:44  [ТС]     Программа по определению максимального количества одинаковых элементов массива. #7
Подскажите как тогда мне его исправить?
olympic
3 / 3 / 0
Регистрация: 30.04.2012
Сообщений: 18
30.04.2012, 14:56     Программа по определению максимального количества одинаковых элементов массива. #8
Кроме тупоперебора мне в голову больше ничего не приходит.

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

Дальше можно поработать над условиями окончания итераций, но это уже оптимизация.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
30.04.2012, 15:11     Программа по определению максимального количества одинаковых элементов массива. #9
Примерно так
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 ];
      }
   }
}
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
30.04.2012, 18:00  [ТС]     Программа по определению максимального количества одинаковых элементов массива. #10
С вашей помощью получилось написать! Вот код на СИ
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;
}
Подскажите мне пожалуйста алгоритм этой задачи, т.е что как и почему?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
01.05.2012, 10:36     Программа по определению максимального количества одинаковых элементов массива. #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 ];                  //и указываем сам элемент
      }
   }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 15:59     Программа по определению максимального количества одинаковых элементов массива.
Еще ссылки по теме:

Разработайте программу, в которой реализовано нахождение количества пар одинаковых по значению соседних элементов одномерного массива C++
Написать программу для подсчета количества одинаковых цифр в массиве из 5-ти элементов C++
Вычислить произведение количества отрицательных и количества положительных элементов одномерного массива C++

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

Или воспользуйтесь поиском по форуму:
fenixgaurd
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 57
01.05.2012, 15:59  [ТС]     Программа по определению максимального количества одинаковых элементов массива. #12
Огромное спасибо!
Yandex
Объявления
01.05.2012, 15:59     Программа по определению максимального количества одинаковых элементов массива.
Ответ Создать тему
Опции темы

Текущее время: 18:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru