Построение и программная реализация конечно-автоматной модели алгоритма обработки числового массива - 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.
Объяснение кода листинга программы
- Объявляются переменные n, a, i, j, k, smax, smaxi, smaxi1, max.
- Создается массив a с n элементами, где каждый элемент является целым числом.
- Выводится содержимое массива a.
- Инициализируется переменная smax значением 0.
- Запускается цикл, который проходит по всем элементам массива a от k=1 до n.
- Внутри цикла увеличивается значение переменной i, пока i не станет больше или равным n и a[i] больше или равно 0.
- Значение переменной j устанавливается равным i+1.
- Значение переменной max устанавливается равным сумме a[j].
- Если значение a[j] меньше 0 и max больше smax, то обновляется значение smax, smaxi и smaxi1.
- Увеличивается значение j на единицу.
- Повторяется шаг 9 для всех j от j=i+1 до j=n.
- Если smaxi+1<=smaxi1-1, то выводится сообщение о наличии участка между двумя отрицательными элементами с максимальной суммой.
- Для элементов массива a от smaxi+1 до smaxi1-1 выводится значение a[i].
- Если smaxi+1>smaxi1-1, то выводится сообщение
все отрицательные
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д