Построение и программная реализация конечно-автоматной модели алгоритма обработки числового массива - Turbo Pascal

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

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

Добрый День, помогите пожалуйста. В одномерном массиве, заполняемом целыми числами, найти участок между двумя отрицательными элементами с максимальной суммой элементов. Например, для массива 8 -9 10 -3 5 6 7 -1 3 5 0 1, ответ «5 6 7».

Решение задачи: «Построение и программная реализация конечно-автоматной модели алгоритма обработки числового массива»

textual
Листинг программы
const n=12;
      a:array[1..n] of integer=(8,-9,10,-3,5,6,7,-1,3,5,0,1);
var i,j,k:integer;
    smax,smaxi,smaxi1,max:integer;
begin
 writeln('массив:');
 for i:=1 to n do write(a[i],' ');writeln;
 smax:=0;
 for k:=1 to n do
  begin
   i:=k;
   while (i<=n)and(a[i]>=0) do inc(i);
   j:=i+1;max:=0;
   while (j<=n) do 
    begin
     if (a[j]<0)and(max>smax) then begin smax:=max;smaxi:=i; smaxi1:=j end;
     max:=max+a[j];  
     inc(j)
    end;
  end;  
 if smaxi+1<=smaxi1-1 
  then 
    begin 
     writeln('участок между двумя отрицательными элементами с максимальной суммой:');
     for i:=smaxi+1 to smaxi1-1 do write(a[i],' ')
    end
  else writeln('все отрицательные')  
end.

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

  1. Объявляются переменные n, a, i, j, k, smax, smaxi, smaxi1, max.
  2. Создается массив a с n элементами, где каждый элемент является целым числом.
  3. Выводится содержимое массива a.
  4. Инициализируется переменная smax значением 0.
  5. Запускается цикл, который проходит по всем элементам массива a от k=1 до n.
  6. Внутри цикла увеличивается значение переменной i, пока i не станет больше или равным n и a[i] больше или равно 0.
  7. Значение переменной j устанавливается равным i+1.
  8. Значение переменной max устанавливается равным сумме a[j].
  9. Если значение a[j] меньше 0 и max больше smax, то обновляется значение smax, smaxi и smaxi1.
  10. Увеличивается значение j на единицу.
  11. Повторяется шаг 9 для всех j от j=i+1 до j=n.
  12. Если smaxi+1<=smaxi1-1, то выводится сообщение о наличии участка между двумя отрицательными элементами с максимальной суммой.
  13. Для элементов массива a от smaxi+1 до smaxi1-1 выводится значение a[i].
  14. Если smaxi+1>smaxi1-1, то выводится сообщение все отрицательные.

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


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

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

15   голосов , оценка 3.8 из 5
Похожие ответы