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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2010, 11:46   #1
microedition
 
Регистрация: 20.08.2010
Сообщений: 4
По умолчанию Задача на массив, паскаль.

Здравствуйте. Помогите, пожалуйста, доделать решение задачи.
Большую часть кода я уже написал, но есть одна деталь...

Задача:
Дан массив source[1..1000] of real.
Определить максимальное количесто идущих подряд положительных элементов последовательности, не прерываемых ни нулями, ни отрицательными числами. Напечатать найденный фрагмент.

Решение мое таково:

Код:
program test;

const

	size	=   1000;

var

	source:		array [1..size] of real;
	index:		integer;
	quantity:	integer;
	counter:               integer;
	i:		integer;

begin

//
//  Ввод массива (код опущен).
//

//
//  Собственно, алгоритм.
//

	quantity := 0;
	counter  := 0;

	for i := 1 to size do
	begin

		if source[i] > 0 then
		begin

			counter := counter + 1;

			if quantity < counter then

				quantity := counter;
		end

		else
		begin

			counter := 0;

		end;

	end;

//
// Здесь мы выводим последовательность (код опущен).
//

end.
Эта программа находит только длину последовательности (см. условие) и
сохраняет её в переменную quantity. А как найти индекс начала её? (индекс сохранить в переменную index.)

Последний раз редактировалось microedition; 20.08.2010 в 11:52.
microedition вне форума Ответить с цитированием
Старый 20.08.2010, 11:58   #2
Bonez92
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 29
По умолчанию

Объявите переменную max_index.
Код:
	quantity := 0;
	counter  := 0;

	for i := 1 to size do
	begin

		if source[i] > 0 then
		begin

			counter := counter + 1;
			if index = -1 then
				index := i;
		end

		else
		begin
			if quantity < counter then
			begin
				quantity := counter;
				max_index := index;
			end;

			counter := 0;
			index := -1;

		end;

	end;
Код на практике не пробовал исполнять.
Bonez92 вне форума Ответить с цитированием
Старый 20.08.2010, 12:31   #3
microedition
 
Регистрация: 20.08.2010
Сообщений: 4
По умолчанию

Bonez92
Большое спасибо, идея ясна.
microedition вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на массив foxzibit123 Паскаль, Turbo Pascal, PascalABC.NET 4 25.07.2010 21:16
задача паскаль, скорее всего массив+рекурсия(хотя у меня другой способ) IvaniuS Помощь студентам 10 23.12.2009 15:34
Задача на двумерный массив. Паскаль Nubas Помощь студентам 5 12.10.2009 22:40
паскаль задача на массив matrix2010 Помощь студентам 1 09.02.2009 02:07
Паскаль. задача на массив narkozz Паскаль, Turbo Pascal, PascalABC.NET 3 23.05.2007 20:48