Определение положения в сформированном массиве наибольшего положительного элемента - Pascal ABC

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

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

Файл исходных данных содержит значения величин N, M и элементов массива VEC[1]... VEC[8]. Написать, отладить и протестировать программу, выполняющую: 1. Чтение данных из файла. 2. Формирование нового массива NEWVEC, первый элемент которого равен полусумме первого и второго элемента массива VEC, второй - полусумме третьего и четвёртого и Т. Д. 3. Суммирование первых M элементов сформированного массива. 4. Печать сформированного массива и значения суммы. 5. Определение положения в сформированном массиве наибольшего полодительного элемента из первых N, печать номера и значения этого элемента. Алгоритм должен быть параметризован.

Решение задачи: «Определение положения в сформированном массиве наибольшего положительного элемента»

textual
Листинг программы
  1. const k=8;
  2. type mas=array[1..k] of real;
  3. procedure readfile(var f:text;var VEC:mas; var n,m:byte);
  4. var i:byte;
  5. begin
  6. if not fileexists('input.txt') then
  7.  begin
  8.   writeln('Данный файл не найден');
  9.   readln;
  10.   exit
  11.  end;
  12. assign(f,'input.txt');
  13. reset(f);
  14. read(f,n,m);
  15. writeln('Массив VEC');
  16. for i:=1 to k do
  17.  begin
  18.   read(f,VEC[i]);
  19.   write(VEC[i]:0:2,'  ');
  20.  end;
  21. writeln;
  22. close(f);
  23. end;
  24. procedure form(VEC:mas;var NEWVEC:mas;var k1:byte);
  25. var i:byte;
  26. begin
  27. k1:=0;
  28. for i:=1 to k div 2 do
  29.  begin
  30.   inc(k1);
  31.   NEWVEC[k1]:=vec[2*i-1]+VEC[2*i];
  32.  end;
  33. end;
  34. function summa(NEWVEC:mas;m:byte):real;
  35. var i:byte;
  36. begin
  37. result:=0;
  38. for i:=1 to m do
  39. result:=result+NEWVEC[i];
  40. end;
  41. procedure print(NEWVEC:mas;k1,m:byte);
  42. var i:byte;
  43. begin
  44. writeln('Массив NEWVEC');
  45. for i:=1 to k1 do
  46. write(NEWVEC[i],'  ');
  47. writeln;
  48. writeln('Сумма первых ',m,' элементов=', summa(NEWVEC,m):0:2);
  49. end;
  50. procedure max(NEWVEC:mas;k1,n:byte;var mx:real; var imx:byte);
  51. var i:byte;
  52. begin
  53. mx:=0;
  54. for i:=1 to n do
  55. if(NEWVEC[i]>0)and(NEWVEC[i]>mx) then
  56.  begin
  57.   mx:=NEWVEC[i];
  58.   imx:=i;
  59.  end;
  60. if mx=0 then writeln('В массиве среди первых ',n,' элементов нет положительных')
  61. else writeln('Максимальный положительный среди первых ',n,' элементов=',mx,' его номер=',imx);
  62. end;
  63.  
  64.  
  65. var f:text;
  66.     VEC,NEWVEC:mas;
  67.     n,m,k1,imx:byte;
  68.     mx:real;
  69. begin
  70. readfile(f,VEC,n,m);
  71. form(VEC,NEWVEC,k1);
  72. print(NEWVEC,k1,m);
  73. max(NEWVEC,k1,n,mx,imx);
  74. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы