Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

последовательность целых чисел.


Лена ©   (2003-01-11 21:01:00) 

Ребята если можно помогите решить задание я немного не въезжаю.
Дана последовательность целых чисел. Построить последовательность номеров позиций, откуда начинаются последовательности, состоящие как минимум из 2-х единиц подряд.
В каждой строке входа дано по одному элементу исходной последовательности. Признак конца последовательности - 0.
В каждую строку выхода вывести по одному элементу результирующей последовательности. Заключительный нуль в результат не выводить.
Н-р;
Вход:
4
1
1
1
6
1
2
1
1
0
Выход:

2
8
Зарание благодарю.


Garrett   (2003-01-11 23:28:00) [1]

использовать Паскаль, как я понимаю.
Код не проверен, так как пишу навскидку :-)
Надеюсь, окончательную отладку и доводку сделать сможешь

var I, N, LastN, CurrentPos: Integer;
f: boolean;
outArray: Array[0..255] of Integer;

begin
I := 0;
LastN := 0;
CurrPos := 1;
f := false;
repeat
// ввод числа
write ("enter number");
readln (N);
// если введен ноль, то переходим к выводу результатов
if N = 0 then break;
// если предыдущее число было 1 и сейчас тоже один, то смотрим, принадлежат ли числа к уже зарегестрированной последовательности
if (N = 1) and (LastN = 1) then
begin
if not f then
// это новая последовательность
begin
f := True; // следующие единицы считать новой последовательностью не надо
// записываем позицию LastN - она на 1 меньше текущей позиции ввода
outArray[I] := CurrPos -1;
Inc (I);
end;
end
else
f := False; // сбрасываем флаг последовательности
// текущее число теперь последнее
LastN := N;
// увеличиваем позицию ввода
Inc (CurrPos);
until False;
// вывод результатов
For N := 0 to I -1 do
WriteLn (Str (outArray[N]));
end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо