Определение положения в сформированном массиве наибольшего положительного элемента - 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.

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

  1. В начале кода объявляются необходимые переменные и константы.
  2. Функция readfile считывает файл 'input.txt' и записывает его содержимое в переменную VEC. Также считывается информация о количестве элементов в массиве n и их размерности m.
  3. Функция form вычисляет среднее значение элементов массива VEC и сохраняет его в новом массиве NEWVEC. Здесь также используется формула для вычисления среднего значения.
  4. Функция print выводит содержимое массива NEWVEC и сумму первых m элементов.
  5. Функция max находит максимальный положительный элемент в массиве NEWVEC. Если такого элемента нет, выводится сообщение об этом.
  6. Завершается программа вызовом функций readfile, form, print и max с соответствующими аргументами.

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


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

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

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