Определение положения в сформированном массиве наибольшего положительного элемента - 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
с соответствующими аргументами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д