Проверьте, пожалуйста, код и исправьте - Turbo Pascal
Формулировка задачи:
Дан массив X(n) НАйти наибольший элемент и заменить его на сумму всех массивов.
Если я правильно понял то это так должно быть да ? если не правильно сделал исправьте пожалуйста
Решение задачи: «Проверьте, пожалуйста, код и исправьте»
textual
Листинг программы
const nmax=50; type mm=array[1..nmax]of integer; //ФУНКЦИЯ НАХОЖДЕНИЯ ИНДЕКСА МАКСИМАЛЬНОГО ЭЛЕМЕНТА function max(m:mm;n:integer):integer; var i,imx:integer; begin imx:=1; for i:=2 to n do if m[i]>m[imx] then imx:=i; max:=imx; end; //ФУНКЦИЯ НАХОЖДЕНИЯ СУММЫ function summa(m:mm;n:integer):integer; var i,s:integer; begin s:=m[1]; for i:=2 to n do s:=s+m[i]; summa:=s; end; //ПРОЦЕДУРА СОЗДАНИЯ МАССИВА ИЗ РАЗНЫХ ЧИСЕЛ procedure massiv(var m:mm;var n:integer); var i,i1,k,x:integer; f:boolean; begin repeat write('Введите размер массива от 2 до ',nmax,' n='); readln(n); until n in [2..nmax]; randomize; m[1]:=-n+random(2*n+1); k:=1; for i:=2 to n do begin repeat x:=-n+random(2*n+1); i1:=1; f:=true; while (i1<=k)and f do if x=m[i1] then f:=false else inc(i1); until f; m[i]:=x; k:=k+1; end; end; //ПРОЦЕДУРА ЗАМЕНЫ МАКСИМАЛЬНОГО НА СУММУ procedure zamena(var m:mm;n,imx,s:integer); begin m[imx]:=s; end; //ПРОЦЕДУРА ПЕЧАТИ МАССИВА procedure print(m:mm;n:integer;s:string); var i:integer; begin writeln(s); for i:=1 to n do write(m[i]:4); writeln; end; //НАЧАЛО ПРОГРАММЫ var x:mm; n,imx,s:integer; begin massiv(x,n); print(x,n,'Исходный массив'); imx:=max(x,n); s:=summa(x,n); writeln('Максимальный элемент x[',imx,']=',x[imx]); writeln('Сумма=',s); zamena(x,n,imx,s); print(x,n,'Замена максимального суммой'); end.
Объяснение кода листинга программы
- const nmax=50;
- type mm=array[1..nmax]of integer;
- function max(m:mm;n:integer):integer; var i,imx:integer; begin imx:=1; for i:=2 to n do if m[i]>m[imx] then imx:=i; max:=imx; end;
- function summa(m:mm;n:integer):integer; var i,s:integer; begin s:=m[1]; for i:=2 to n do s:=s+m[i]; summa:=s; end;
- procedure massiv(var m:mm;var n:integer); var i,i1,k,x:integer; f:boolean; begin repeat write('Введите размер массива от 2 до ',nmax,' n='); readln(n); until n in [2..nmax]; randomize; m[1]:=-n+random(2n+1); k:=1; for i:=2 to n do begin repeat x:=-n+random(2n+1); i1:=1; f:=true; while (i1<=k)and f do if x=m[i1] then f:=false else inc(i1); until f; m[i]:=x; k:=k+1; end; end; end;
- procedure zamena(var m:mm;n,imx,s:integer); begin m[imx]:=s; end;
- procedure print(m:mm;n:integer;s:string); var i:integer; begin writeln(s); for i:=1 to n do write(m[i]:4); writeln; end;
- procedure start(); var x:mm; n,imx,s:integer; begin massiv(x,n); print(x,n,'Исходный массив'); imx:=max(x,n); s:=summa(x,n); writeln('Максимальный элемент x[',imx,']=',x[imx]); writeln('Сумма=',s); zamena(x,n,imx,s); print(x,n,'Замена максимального суммой'); end;
- start();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д