Определение положения в сформированном массиве наибольшего положительного элемента - Pascal ABC
Формулировка задачи:
Файл исходных данных содержит значения величин N, M и элементов массива VEC[1]... VEC[8]. Написать, отладить и протестировать программу, выполняющую:
1. Чтение данных из файла.
2. Формирование нового массива NEWVEC, первый элемент которого равен полусумме первого и второго элемента массива VEC, второй - полусумме третьего и четвёртого и Т. Д.
3. Суммирование первых M элементов сформированного массива.
4. Печать сформированного массива и значения суммы.
5. Определение положения в сформированном массиве наибольшего полодительного элемента из первых N, печать номера и значения этого элемента.
Алгоритм должен быть параметризован.
Решение задачи: «Определение положения в сформированном массиве наибольшего положительного элемента»
textual
Листинг программы
const k=8; type mas=array[1..k] of real; procedure readfile(var f:text;var VEC:mas; var n,m:byte); var i:byte; begin if not fileexists('input.txt') then begin writeln('Данный файл не найден'); readln; exit end; assign(f,'input.txt'); reset(f); read(f,n,m); writeln('Массив VEC'); for i:=1 to k do begin read(f,VEC[i]); write(VEC[i]:0:2,' '); end; writeln; close(f); end; procedure form(VEC:mas;var NEWVEC:mas;var k1:byte); var i:byte; begin k1:=0; for i:=1 to k div 2 do begin inc(k1); NEWVEC[k1]:=vec[2*i-1]+VEC[2*i]; end; end; function summa(NEWVEC:mas;m:byte):real; var i:byte; begin result:=0; for i:=1 to m do result:=result+NEWVEC[i]; end; procedure print(NEWVEC:mas;k1,m:byte); var i:byte; begin writeln('Массив NEWVEC'); for i:=1 to k1 do write(NEWVEC[i],' '); writeln; writeln('Сумма первых ',m,' элементов=', summa(NEWVEC,m):0:2); end; procedure max(NEWVEC:mas;k1,n:byte;var mx:real; var imx:byte); var i:byte; begin mx:=0; for i:=1 to n do if(NEWVEC[i]>0)and(NEWVEC[i]>mx) then begin mx:=NEWVEC[i]; imx:=i; end; if mx=0 then writeln('В массиве среди первых ',n,' элементов нет положительных') else writeln('Максимальный положительный среди первых ',n,' элементов=',mx,' его номер=',imx); end; var f:text; VEC,NEWVEC:mas; n,m,k1,imx:byte; mx:real; begin readfile(f,VEC,n,m); form(VEC,NEWVEC,k1); print(NEWVEC,k1,m); max(NEWVEC,k1,n,mx,imx); end.
Объяснение кода листинга программы
- В начале кода объявляются необходимые переменные и константы.
- Функция
readfile
считывает файл 'input.txt' и записывает его содержимое в переменнуюVEC
. Также считывается информация о количестве элементов в массивеn
и их размерностиm
. - Функция
form
вычисляет среднее значение элементов массиваVEC
и сохраняет его в новом массивеNEWVEC
. Здесь также используется формула для вычисления среднего значения. - Функция
print
выводит содержимое массиваNEWVEC
и сумму первыхm
элементов. - Функция
max
находит максимальный положительный элемент в массивеNEWVEC
. Если такого элемента нет, выводится сообщение об этом. - Завершается программа вызовом функций
readfile
,form
,print
иmax
с соответствующими аргументами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д