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

Найти в массиве наибольшее число подряд идущих одина*ковых элементов. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
zRemix
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 20
27.05.2010, 09:04     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #1
Народ надо решить задачку...на простом СИ! Кто поможет буду благодарен...

Найти в массиве наибольшее число подряд идущих одина*ковых элементов.
(например, (1,5,3,6.6,6,6,6,3,4,4,5,5,5} = 5).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2010, 09:04     Найти в массиве наибольшее число подряд идущих одина*ковых элементов.
Посмотрите здесь:

определить есть ли в массиве последовательность из подряд идущих элементов C++
C++ Найти наибольшее количество подряд идущих цифр в строке
C++ Дано предложение. Найти наибольшее количество идущих подряд пробелов
C++ Определить, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.
C++ Дана строка, найти наибольшее количество идущих подряд букв
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
03.06.2012, 18:21     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #2
Идея решения. Двигаясь по массиву, сравниваем рядом стоящие элементы. Если они равны - увеличиваем счетчик равных элементов, есло нет - запоминаем, сколько было, и начинаем искать новую цепочку. Если новая цепочка окажется длиннее, запомним ее и т.д. до конца массива. Как-то так.

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
const int N=10;
int main()
{
 int i, k, kol, 
 int mass[N]={9,9,9,9,8,8,8,7,7,7}; // Объявляем массив.
 
 printf("\n Massiv iz chisel ot 1 do %d: \n", N); // Массив из чисел от 1 до N.
  for(i=0; i<N; i++)
  {
   printf("\n Massiv[%d] = %d. ", i, mass[i]); // и выводим их.
  }
 
 i=1; k=1; kol=1;
 while (i<N)
  {
   if (mass[i]==mass[i-1])
    { k++; }
   else    
    {     
     if (k>kol)
      { kol=k; }
     k=1;
    } 
   i++;
  }
 
  printf("\n \n Kollichestvo: %d", kol); 
  
 getch(); 
 return 0; 
}
Как сделать так, что выводилось и сам элемент? Например, в данном массиве 9 повторяется 4 раза, поэтому и выводиться 4, а как вывести еще и элемент 9?
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
03.06.2012, 18:34     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #3
у тя в 5-ой строчке нету ;
и библиотеки подключить нана
C++ (Qt)
1
2
#include <iostream>
#include <conio.h>
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
03.06.2012, 19:08     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #4
Цитата Сообщение от cactus09 Посмотреть сообщение
у тя в 5-ой строчке нету ;
Опечатка, исправил.

Цитата Сообщение от cactus09 Посмотреть сообщение
и библиотеки подключить нана
C++ (Qt)
1
2
#include <iostream>
#include <conio.h>
Само собой.

Так как 9 вывести?
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
03.06.2012, 20:11     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #5
Может быть я и ошибаюсь но наверно можно так
C++ (Qt)
1
2
3
4
5
6
7
...
 int i, k, kol, element;
...
   if (k>kol)
     { kol=k; element = mass[i-1]; }
...
  printf("\n \n Kollichestvo: %d \n Element: %d", kol, element);
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
03.06.2012, 21:33     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #6
Цитата Сообщение от cactus09 Посмотреть сообщение
Может быть я и ошибаюсь но наверно можно так [CPPQT]...
Да, так . А если наиб. число подряд идущих поровну? Например: 7, 7, 7, 7, 4, 4, 4, 4, 2 ? И 7 и 4 повторяются 4 раза. Как вывести "Element: 7, 4", а не только 7?
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
03.06.2012, 22:06     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #7
Цитата Сообщение от Shman Посмотреть сообщение
Да, так . А если наиб. число подряд идущих поровну? Например: 7, 7, 7, 7, 4, 4, 4, 4, 2 ? И 7 и 4 повторяются 4 раза. Как вывести "Element: 7, 4", а не только 7?
Лягко
C++ (Qt)
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
#include <iostream>
#include <conio.h>
 
const int N=10;
int main()
{
 int i, k, kol, element; 
 int mass[N]={7, 7, 7, 7, 4, 4, 4, 4, 2}; // Îáúÿâëÿåì Г¬Г*Г±Г±ГЁГў.
 
 printf("\n Massiv iz chisel ot 1 do %d: \n", N); // ГЊГ*Г±Г±ГЁГў ГЁГ§ Г·ГЁГ±ГҐГ« îò 1 äî N.
  for(i=0; i<N; i++)
  {
   printf("\n Massiv[%d] = %d. ", i, mass[i]); // ГЁ âûâîäèì ГЁГµ.
  }
 
 printf("\n\n");
 
 i=1; k=1; kol=1;
 while (i<N)
  {
   if (mass[i]==mass[i-1])
    { k++; }
   else    
    {     
     if (k>=kol)
      { kol=k; 
        element = mass[i-1];
        printf(" Element: %d\n", element);
       }
       
     k=1;
    } 
   i++;
  }
 
   printf("\n Kollichestvo: %d \n ", kol); 
  
 getch(); 
 return 0; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2012, 17:06     Найти в массиве наибольшее число подряд идущих одина*ковых элементов.
Еще ссылки по теме:

C++ Определить наибольшее количество подряд идущих нулей в целочисленном массиве
Найти наибольшее количество подряд идущих цифр в строке C++
Найти в массиве наибольшее число подряд идущих одинаковых элементов C++

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

Или воспользуйтесь поиском по форуму:
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
04.06.2012, 17:06     Найти в массиве наибольшее число подряд идущих одина*ковых элементов. #8
cactus09, твой код работает, если элементы находятся рядом, например, если ввести массива 7, 7, 5, 5, 1, то выведится 7 и 5, если 7, 7, 1, 5, 5, то выведится только 7, 5 в ауте , а если 1, 7, 7, 5, 5, то выведится 1 и 7, что неправильно.

Добавлено через 10 часов 38 минут
Кстати, и мой код выдает наверное значение, если ввести массив 1, 5, 7, 7, 7 и его размер 5. Выводит 1, хотя правильно 3. Кто-нибудь видит ошибку?
Yandex
Объявления
04.06.2012, 17:06     Найти в массиве наибольшее число подряд идущих одина*ковых элементов.
Ответ Создать тему
Опции темы

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