Вывести закономерность возрастания или убывания по первым двум числам - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Не правильно считает программа : задаю случайный массив одномерный от 1 до 20 , с числами пример от -50 до 100 , нужно вывести закономерность возрастания или убывания по первым двум числам , и после продолжить убирая лишние элементы массива. Но получается так на пример массив :-1 0 2 3 -5 ............7; получается -1 0 2 3 7 возрастание правильно или пример 6 5 8 -4 6 -1..... ; получается 6 5 -4 -1 ... правильно. А может и так 3 6 8 4 6 2 .... определяет убывание 3 2 вместо возрастание , не стабильно работает в чём ошибка , понять не могу ?
Листинг программы
  1. var
  2. h: array[1..20] of integer;
  3. i, k: integer;
  4. b: boolean;
  5. begin
  6. writeln('Generated massif:');
  7. Randomize;
  8. for i := 1 to 20 do
  9. begin
  10. h[i] :=-50 + random(100);
  11. write(' ', h[i]);
  12. if i <> 1 then
  13. if (h[i] <> h[i - 1]) then
  14. begin
  15. if h[i - 1] < h[i] then b := true //increase
  16. else b := false; //decrease
  17. end
  18. end;
  19. writeln;
  20. writeln;
  21. write('ready massif ');
  22. if b then writeln('(increase: )')
  23. else writeln('(decrease: )');
  24. write(' ', h[1]); //first number of massif
  25. k := h[1]; //fix first
  26. if b then //increasing of numbers
  27. begin
  28. for i := 2 to 20 do
  29. if k <h[i] then
  30. begin write(' ', h[i]); k := h[i] end
  31. end
  32. else //decreasing of numbers
  33. begin
  34. for i := 2 to 20 do
  35. if k > h[i] then
  36. begin write(' ', h[i]); k := h[i] end
  37. end;
  38. readln;
  39. end.

Решение задачи: «Вывести закономерность возрастания или убывания по первым двум числам»

textual
Листинг программы
  1. const n=20;
  2. var
  3.  a:array[1..n] of integer;
  4.  i,j:integer;
  5.  b:boolean;
  6. begin
  7.   randomize;
  8.   for i:=1 to n do begin
  9.     a[i]:=random(101)-50;
  10.     write(a[i],' ');
  11.   end;
  12.   writeln;
  13.   j:=1; //индекс отобранного элемента
  14.   b:=a[1]<a[2]; //если true, то последовательность возрастающая
  15.   if b then write('increasing:') else write('decreasing:'); //собственно вывод типа этой последовательности
  16.   write(a[j]); //вывод первого элемента
  17.   for i:=2 to n do if (a[i]>a[j]=b) then begin write(' ',a[i]);j:=i;end;
  18. //цикл для вывода остальных элементов,
  19. //удовлетворяющих требованию для первых двух,
  20. //т.е. последний элемент, удовлетворяющий                      
  21. //требованиям a[j] при сравнении с текущим
  22. //должен принимать значение равное переменной
  23. // b (a[1]<a[2])
  24. end.

Объяснение кода листинга программы

  1. Переменная n инициализируется значением 20.
  2. Создается массив a, который может вместить до 20 целых чисел.
  3. Создаются две переменные i и j, которые будут использоваться для цикла.
  4. Вызывается функция randomize, чтобы инициализировать генератор случайных чисел.
  5. Запускается цикл for, который выполняется 20 раз. В каждой итерации этого цикла присваивается случайное число от 1 до 100 (включительно) переменной a[i], и это число выводится на экран с пробелом.
  6. После завершения цикла выводится символ новой строки.
  7. Переменная b инициализируется значением true. Она будет использоваться для определения типа последовательности (возрастающей или убывающей).
  8. Если значение переменной b равно true, то выводится сообщение increasing:, что означает, что последовательность является возрастающей.
  9. Если значение переменной b равно false, то выводится сообщение decreasing:, что означает, что последовательность является убывающей.
  10. Выводится первый элемент массива a[j].
  11. Запускается цикл for, который начинается со второго элемента массива (i=2) и продолжается до последнего элемента (n-1).
  12. Внутри цикла проверяется условие a[i]>a[j] и если оно выполняется, то выводится элемент a[i] и переменная j обновляется, чтобы отразить текущее значение j.
  13. Цикл завершается, когда выполнено условие a[i]>a[j] для всех элементов от i=2 до n-1.
  14. Выводится последнее значение переменной j, которое должно быть равно b (a[1]<a[2]).
  15. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы