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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
YUTD
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 26
#1

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

16.11.2011, 17:11. Просмотров 1769. Ответов 27
Метки нет (Все метки)

Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному. Массив должен передаваться в функцию в качестве параметра. Выполнить инициализацию массива при его объявлении.
Помогите пожалуйста!я в программировании 0...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 17:11     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному
Посмотрите здесь:

Определить длину самой большой последовательности подряд идущих согласных C++
C++ Программа для нахождения к-ой цифры в ряду подряд идущих натуральных чисел.
C++ Написать функцию нахождения суммы элементов двумерного массива
C++ Создать массив A(n) и найти длину самойдлиной последовательности подряд идущих элементов
Функция поиска самой длинной цепочки элементов массива C++
C++ Функция нахождения самой длинной неубывающей подпоследовательности
Найти длину самой длинной последовательности подряд идущих нулевых элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YUTD
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 26
29.11.2011, 18:25  [ТС]     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #21
Конечно
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.11.2011, 18:27     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #22
Посмотрите насколько просто она прописывается:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int Max(const int *a, const int n, const int x)
{
   int i = 0, j, max = 0;
   while (i < n)
   {
       while(i < n && a[i] != x)
          i++;
       j = i;
       while(i < n && a[i] == x)
          i++;
       if (i - j > max)
          max = i - j;
   }
   return max;
}
Сыроежка
Заблокирован
29.11.2011, 18:31     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #23
Цитата Сообщение от YUTD Посмотреть сообщение
получилось!!!

Добавлено через 2 минуты
ой
Теперь надо решить, что означает "найти максимальную последовательность". Скорей всего мы должны получить две характеристики этой последовательности: индекс ее первого элемента в исходном массиве и длину этой последовательности.
Но из функции мы не можем вернуть два значения одновременно. Функции могут возвращать лишь одно значение. Поэтому есть два варианта. Либо получать результирующие значения через параметры, объявленные как указатели, или ссылки, либо возвращать из функции структуру, содержащую два элемента.

И, сразу не сообразил, есть третий вариант! Возвращать из функции длину максимальной последовательности, а в параметрах в виде указателя передавать начало этой последовательности.

Естественно у нас помимо этого у функции всегда должны присутствовать обязательные два параметра: указатель на исходный массив и его длина.

Реализуем третий вариант

C++
1
int max_sequence( int **result, const int source[], int n );

Первым параметром является указатель на указатель типа int. Через него мы будем возвращать из функции начало подпоследовательности.

Пока определим тело функции в виде "пустышки". То есть будем возвращать исходный массив. А затем тело переделаем.

Итак, вставьте в свой код определение новой функции

C++
1
2
3
4
5
int max_sequence( int **result, const int source[], int n )
{
   *result = source;
   return ( n );
}
А в тело функции main вызов этой функции и вывод на консоль того, что мы получили. А подучим мы тот же самый исходный массив, так как это временная проверка работы функции.

C++
1
2
3
4
5
6
int *start;
int count;
 
count = max_sequence( &start, a, n );
 
display( start, count );
Проверьте, что получилось.
YUTD
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 26
01.12.2011, 16:14  [ТС]     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #24
Спасибо!!! получилось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
#include <stdio.h>
int Max (int*,int,int);
int main()
{int a[] = {9,3,3,3,1,4,7,2,1,1,4 
           };
cout<<Max(a,11,3);
}
int Max(int *a,int n,int x)
 {  int i=0,j,max=0;
   while (i<n);
   {
       while((i<n)&& (a[i] !=x)) i++; j = i;
       while((i<n)&& (a[i] == x)) i++;
       if ((i-j)>max) (max=i-j);
cout<<max;
   };
   system ("pause");
   return max;
 }
 Комментарий модератора 
Используйте теги форматирования кода!


ошибок не выдаёт,но запускаться не хочет( и после компиляции антивирус ещё и вирус обнаруживает.
Сыроежка
Заблокирован
01.12.2011, 16:26     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #25
YUTD,

У вас в этом предложении вашей функции

while (i<n);
{


имеет место бесконечный цикл. Вам надо убрать точку с запятой в конце этого предложения.
YUTD
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 26
01.12.2011, 16:41  [ТС]     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #26
Цитата Сообщение от Сыроежка Посмотреть сообщение
YUTD,

У вас в этом предложении вашей функции

while (i<n);
{


имеет место бесконечный цикл. Вам надо убрать точку с запятой в конце этого предложения.
Убрала, откомпилировала, но результат тот же, ошибок нет и обнаружен вирус.
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.12.2011, 16:51     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #27
Вот, все работает:
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
#include<stdio.h>
#include<conio.h>
 
int Max(const int *a, const int n, const int x)
{
   int i = 0, j, max = 0;
   while (i < n)
   {
       while(i < n && a[i] != x)
          i++;
       j = i;
       while(i < n && a[i] == x)
          i++;
       if (i - j > max)
          max = i - j;
   }
   return max;
}
 
int main()
{
   int size, a[] = {9,3,3,3,1,4,7,2,1,1,4};
   size = sizeof(a)/sizeof(*a);
   printf("%d\n", Max(a, size, 3));
   getch();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 17:45     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному
Еще ссылки по теме:

Как правильно написать счетчик для нахождения самой длинной строки? C++
Количество элементов в наиболее длинной подпоследовательности подряд идущих чисел одного знака C++
C++ Поиск самой длинной цепочки из подряд идущих одинаковых элементов в массиве
Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю C++
Найти в последовательности, количество пар подряд идущих отрицательных элементов C++

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

Или воспользуйтесь поиском по форуму:
YUTD
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 26
01.12.2011, 17:45  [ТС]     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному #28
Благодарю!))действительно работает!)
Yandex
Объявления
01.12.2011, 17:45     Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному
Ответ Создать тему
Опции темы

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