IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> развернуть положительные последовательности
sembler
сообщение 25.04.2005 13:59
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Господа помогите, плиз.
Необходимо во всех последовательностях положительных чисел изменить порядок элементов на противоположный
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.04.2005 14:10
Сообщение #2


Гость






Поконкретнее можно? Последовательность может содержать отрицательные числа, и нужно разворачивать положительные подпоследовательности? Или числа в ней содержатся только положительные, и разворачивать надо всю последовательность целиком?
 К началу страницы 
+ Ответить 
sembler
сообщение 25.04.2005 14:29
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Извиняюсь. Последовательность содержит как положительные так и отрицательные числа и разварачивать надо положительные подпоследовательности
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.04.2005 14:47
Сообщение #4


Гость






Тогда вот так:
const
len = 21;
arr: array[1 .. len] of integer =
(1, 2, 3, 4, 5, -6, 7, 8, 9, 10,
11, 12, 13, -14, 15, 16, 17, 18, 19, 20, 21);

procedure print;
var i: integer;
begin
for i := 1 to len do
write(arr[i]:4);
writeln
end;

var
i, j, T: integer;
start, finish: integer;
begin
print;

i := 1;
while i <= len do begin
while(arr[i] < 0) and (i <= len) do inc(i);

start := i; finish := i;
while (arr[i] > 0) and (i <= len) do inc(i);
finish := pred(i);
for j := 1 to (finish - start) div 2 do begin
T := arr[pred(start + j)];
arr[pred(start + j)] := arr[succ(finish - j)];
arr[succ(finish - j)] := T;
end;

while(arr[i] < 0) and (i <= len) do inc(i)
end;

print;
end.
 К началу страницы 
+ Ответить 
sembler
сообщение 25.04.2005 19:07
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"