Помощь - Поиск - Пользователи - Календарь
Полная версия: последовательность из 30 чисел
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
art88
Люди, помогите плз.!
----------------------------
Задача такая дана последовательность из 30-ти чисел(одномерный массив).
Если числа в нем стоят в порядке неубывания или невозрастания, то не производить с ним никаких действий, иначе удалить из последовательности элементы м индексом, кратым четырём.
------------------------------
Программу я написал но она работает не корректно.
volvo
art88, я бы делал вот так (проверялось с закомментированными значениями):
program borlpasc;
const
n = 30;
(*
a: array [1 .. n] of real = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 22, 27, 28, 29, 30
);
*)

var
a: array[1 .. n] of real;
b: array[1 .. n - (n div 4)] of real;
i, j: integer;

_to_delete: boolean;
direction: boolean;

begin
for i:=1 to n do begin
write ('a[',i,']='); readln(a[i]);
end;
_to_delete := false;

i := 1;
while (a[i] = a[i + 1]) and (i < n) do inc(i);
direction := (a[i] > a[i + 1]);

while (i < n) and (not _to_delete) do begin
if direction then _to_delete := (a[i] <= a[i + 1])
else _to_delete := (a[i] >= a[i + 1]);
inc(i)
end;

if _to_delete then begin
writeln('array ( B ):');
j := 1;
for i := 1 to n do
if i mod 4 <> 0 then begin
b[j] := a[i]; write(b[j]:5:0);
inc(j);
end;
end
else begin
writeln('array not changed ...')
end;

readln;

end.

Обрати внимание: мои исходный массив не является НИ монотонно возрастающим (этому мешает второе число 22 вместо 26), ни монотонно убывающим (само собой smile.gif ), поэтому массив будет изменен... Если поставить все числа по порядку, то массив станет НЕубывающим, и изменяться не будет... :yes:
art88
Большое спасибо, volvo!!! :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.