Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2009, 16:59   #1
bnv
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 13
По умолчанию массивы С++

Написать программу поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве.
Код:
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
void main()
{
	
	int sum=0;
	const int size=20; 
	int mas[size];
	
	srand(time(NULL));
	for(int i=0;i<size;i++){  
	
	mas[i]=rand()%5;
    cout<<mas[i]<<" ";	
	
	
}	int n=1,c,max=1,imax;
	for (int i=0;i<size;i++)
	{
		n=1;
		//for(int j=1;j<size;j++){
		
		if(mas[i]==mas[i+1]){
			n+=1; 
		while(max>n){
		max=n;
		c=mas[i];
		}		
	}
	}cout<<"\n\n\n samaya dlin"<<max<<"[max]";
  	
}
он считает кол-во повтор элементов массива, а мне надо подряд идущих элем. Подскажите что делать

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 10.02.2009 в 21:07.
bnv вне форума Ответить с цитированием
Старый 10.02.2009, 18:30   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Вот сам алгоритм, заполнение у тебя уже есть.
Код:
for (int i=0;i<size;i++)
{
  n=1;
  if(mas[i]==mas[i+1])
     n++;
  else
    if (max < n)
    {
      max = n;
      n = 1;
    }
}
Hollander вне форума Ответить с цитированием
Старый 11.02.2009, 12:27   #3
bnv
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 13
По умолчанию спасибо большое

но что-то не получается пишет ошибки с else и в строке srand(time(NULL));


Код:
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
void main()
{
	
	int sum=0;
	const int size=20; 
	int mas[size];
	
	srand(time(NULL));
	for(int i=0;i<size;i++){  
	
	mas[i]=rand()%5;
    cout<<mas[i]<<" ";	
	
	
}	int n=1,c,max=1,imax;
	for (int i=0;i<size;i++)
	{
		n=1;
		//for(int j=1;j<size;j++){
		
		if(mas[i]==mas[i+1]){
			n++; 
		else if(max<n){
			max=n;
			n=1;
			}
		
		//c=mas[i];
				
		}
	cout<<"\n\n\nsamaya dlin"<<c<<"\n"<<n<<"[ht]"<<"\n\n";
  	
	}
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 11.02.2009 в 17:58.
bnv вне форума Ответить с цитированием
Старый 11.02.2009, 14:00   #4
bura
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 15
По умолчанию

Если есть ошибки, то компилятор будет писать о них
Посмотри внимательнее на этот фрагмент:
Код:
f(mas[i]==mas[i+1]){
n++;
else if(max<n){
max=n;
n=1;
}
Почему-то между if и else находится левая фигурная скобка.
Она лишняя или очень одинокая?
Потом, зачем int sum=0? В программе суммирования нет.
bura вне форума Ответить с цитированием
Старый 11.02.2009, 14:22   #5
bnv
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 13
По умолчанию

спасибо всем
со скобкой понятно уже хорошо но проблема не решилась
программа не считает длину самой длин ячейки
bnv вне форума Ответить с цитированием
Старый 11.02.2009, 16:12   #6
bura
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 15
По умолчанию

А как программа будет считать длину последовательности, если она совершенно неправильно написана?
Вот код:
Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#define size 30
using namespace std;
void main()
{
int mas[size];
int n, i, max, imax;

srand(time(NULL));
for(i=0; i<size; i++)
{
 mas[i]=rand()%5;
 cout<<mas[i]<<" ";
}

max=1;
imax=0;
n=1;
for (int i=0; i<size-1; i++)
{if(mas[i]==mas[i+1])
  n++;
 else
 {
 if(max<n)
  {max=n;
   imax=i-n+1;
  }
  n=1;
 }
}
cout<<"\nnSamaya dlinnaya posledovatelnost sostoit iz znacheniya: "<<mas[imax]<<endl;
cout<<"Dlina posledovatelnosti: "<<max<<" elementov"<<endl;
cout<<"Index nachalnogo elementa posledovatelnosti: "<<imax<<endl;

}
bura вне форума Ответить с цитированием
Старый 11.02.2009, 17:34   #7
bnv
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 13
По умолчанию огромное спасибо

но программа иногда ошибается????что делать???
bnv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Массивы Seryoga Помощь студентам 9 08.12.2009 16:20
C++ массивы dimaangel Общие вопросы C/C++ 8 15.12.2008 19:38