Проверьте, пожалуйста, код и исправьте - 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();