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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 00:52   #1
promt
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 32
По умолчанию максимальная последовательность

Найти ту непрерывную последовательность положительных чисел массива Х, сумма элементов в которой максимальна. Помогите пожалуйста.
promt вне форума Ответить с цитированием
Старый 12.04.2011, 01:11   #2
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

V chem problema?
Акоб вне форума Ответить с цитированием
Старый 12.04.2011, 01:55   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Напишу за символическую плату в $1, skype в профиле.

Код вырезан. Новая версия по следующей ссылке: сообщение #13.
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Stilet; 14.04.2011 в 17:54.
Сtrl вне форума Ответить с цитированием
Старый 13.04.2011, 16:28   #4
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Сtrl, МнОгО БуКффф... Не ОсИлИл =)
Код:
#include<iostream>
#include <stdlib.h>
#include <time.h>
#include <locale.h>

using namespace std;

int main()
{
	const int N=100;
	int X[N];
	int sum=0;
	int begin=0;
	int sum_max=0;
	int begin_max=0;
	srand(time(0));
	setlocale(LC_ALL, "RUS");
	cout<<"В массиве имеются следующие элементы:"<<endl;
	for(int i=0;i<N;++i)
		cout<<(X[i]=rand()%2000-1000)<<endl;
	for(int i=0;i<N;++i)
	{
		sum=0;
		begin=i;
		while(X[i]>=0 && i<N)
			sum+=X[i++];
		if(sum>sum_max && i-1>begin)
		{
			sum_max=sum;
			begin_max=begin;
		}
	}
	cout<<"Найденная последовательность:"<<endl;
	for(int i=begin_max; X[i]>=0;++i)
		cout<<X[i]<<endl;
	cin.get();
	return 0;
}
ololo-schoolboy вне форума Ответить с цитированием
Старый 13.04.2011, 20:56   #5
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

ololo-schoolboy, ваш код не всегда работает корректно. Прилагаю скриншоты:
http://img852.imageshack.us/img852/2954/sit1.gif
http://img192.imageshack.us/img192/2530/sit2.gif
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 13.04.2011, 21:11   #6
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Значит так:
Код:
#include<iostream>
#include <stdlib.h>
#include <time.h>
#include <locale.h>

using namespace std;

int main()
{
	const int N=100;
	int X[N];
	int sum=0;
	int begin=0;
	int sum_max=0;
	int begin_max=0;
	bool is_found=false;
	srand(time(0));
	setlocale(LC_ALL, "RUS");
	cout<<"В массиве имеются следующие элементы:"<<endl;
	for(int i=0;i<N;++i)
		cout<<(X[i]=rand()%2000-1000)<<endl;
	for(int i=0;i<N;++i)
	{
		sum=0;
		begin=i;
		while(X[i]>=0 && i<N)
			sum+=X[i++];
		if(sum>=sum_max && i-1>begin)
		{
			sum_max=sum;
			begin_max=begin;
			is_found=true;
		}
	}
	if(is_found)
	{
		cout<<"Найденная последовательность:"<<endl;
		for(int i=begin_max; X[i]>=0;++i)
			cout<<X[i]<<endl;
	}
	else
	{
		cout<<"Отсутствуют последовательности из положительных чисел"<<endl;
	}
	cin.get();
	return 0;
}

Последний раз редактировалось ololo-schoolboy; 13.04.2011 в 21:14.
ololo-schoolboy вне форума Ответить с цитированием
Старый 13.04.2011, 21:15   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Не работает.
http://img856.imageshack.us/img856/3770/sit3.gif
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 13.04.2011, 21:59   #8
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

А где здесь последовательность положительных чисел?
ololo-schoolboy вне форума Ответить с цитированием
Старый 13.04.2011, 22:10   #9
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от ololo-schoolboy Посмотреть сообщение
А где здесь последовательность положительных чисел?
Первая последовательность - 163, вторая - 870.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 13.04.2011, 22:13   #10
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Последовательность это два и более числа, но если надо чтоб из одного то, достаточно поменять
Код:
if(sum>=sum_max && i-1>begin)
на
Код:
if(sum>=sum_max)
ololo-schoolboy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Long double. Максимальная точность. juzam Общие вопросы C/C++ 2 05.10.2010 14:48
Максимальная высота h fort-_-minor Общие вопросы C/C++ 6 04.08.2010 13:41
Максимальная длина слова Anarki Общие вопросы C/C++ 4 30.09.2009 00:10
Максимальная высота элемента predtech HTML и CSS 2 23.07.2009 13:51