Люди, помогите плз.! ---------------------------- Задача такая дана последовательность из 30-ти чисел(одномерный массив). Если числа в нем стоят в порядке неубывания или невозрастания, то не производить с ним никаких действий, иначе удалить из последовательности элементы м индексом, кратым четырём. ------------------------------ Программу я написал но она работает не корректно.
volvo
8.10.2005 23:30
art88, я бы делал вот так (проверялось с закомментированными значениями):
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), ни монотонно убывающим (само собой ), поэтому массив будет изменен... Если поставить все числа по порядку, то массив станет НЕубывающим, и изменяться не будет... :yes:
art88
9.10.2005 15:14
Большое спасибо, volvo!!! :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.