Помощь - Поиск - Пользователи - Календарь
Полная версия: последовательность из 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.