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

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

  1. const nmax=50;
  2. type mm=array[1..nmax]of integer;
  3. 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;
  4. 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;
  5. 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;
  6. procedure zamena(var m:mm;n,imx,s:integer); begin m[imx]:=s; end;
  7. 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;
  8. 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;
  9. start();

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


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

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

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