Нормировать элемент каждого массива по максимальному(разделить все элементы массива на максимальных элемент)

namba

Ребяяят, помогите, пожалуйста.Задание: Дано три массива A[8], B[13]. C[10]. Нормировать элемент каждого массива по максимальному(тоесть разделить все элементы массива на его максимальных элемент).В общем хочу сделать ввод типа Input(A,8), где А - имя массива, 8 - количество элементов. Переменную max наверно надо сделать не динамическую. И было бы неплохо проверить код(может можно как то упростить какую то часть.
uses crt;
type
 Vect = array[1..13] of real;
 Tmax = real;
 Tx= ^Vect;
 var
  i: Integer;
 
procedure Input(n:byte);
var PX:Tx;
begin
New(PX);
for i:=1 to n do
PX^[i]:=random(5)+10;
Dispose(PX);
end;
 
(*----------------------------------*)
 
procedure norm(n:byte);
var  max: ^Tmax;
     PX: TX;
begin
New(PX);
New(max);
max^:=PX^[1];
for i:=1 to n do
writeln('A[',i,']=',PX^[i]:3:0);
for i:=2 to n do
  if PX^[i]>max^ then max^:=PX^[i];
  writeln;
  writeln('max element raven ', max^:3:2);
  writeln;
  if max^<>0 then begin
     for i:= 1 to n do
         begin
         PX^[i]:=PX^[i]/max^;
         writeln('rezultat deleniya ',i,'  elementa na max element  ',PX^[i]:2:2);
         end;writeln; end
     else writeln('na nol ne delim');
Dispose(max);
Dispose(PX);
end;
 
(*----------------------------------*)
 
procedure Output(n:byte);
var PX:Tx;
begin
New(PX);
writeln('Normirovanie elementov matricu ');
for i:=1 to n do
write(PX^[i]:3:2,' ');
Dispose(PX);
end;
 
(*----------------------------------*)
 
BEGIN {main}
clrscr;
randomize;
writeln('Massiv A:');
Input(8);
Norm(8);
Output(8);
 
{Input(B,13);
Norm(B,13);
Output(B,13);
 
Input(C,10);
Norm(C,10);
Output(C,10);}
readln;
END.
1 ответ

namba

В общем хочу сделать ввод типа Input(A,8), где А - имя массива, 8 - количество элементов. Переменную max наверно надо сделать не динамическую.
А в чем проблема?
uses crt;
type
 Vect = array[1..13] of real;
 Tmax = real;
 Tx= ^Vect;
 var
  i: Integer;
  a,b,c: tx;
procedure Input(PX:Tx;n:byte);
begin
New(PX);
for i:=1 to n do
PX^[i]:=random(10)-5;
Dispose(PX);
end;
 
(*----------------------------------*)
 
procedure norm(var PX:Tx;n:byte);
var  max: Tmax;
begin
New(PX);
max:=PX^[1];
for i:=1 to n do
 write('[',i,']=',PX^[i]:3:0,' ');
for i:=2 to n do
  if PX^[i]>max then max:=PX^[i];
  writeln;
  writeln('max element raven ', max:3:2);
  writeln;
  if max<>0 then
   begin
     for i:= 1 to n do
         begin
         PX^[i]:=PX^[i]/max;
   //      writeln('rezultat deleniya ',i,'  elementa na max element  ',PX^[i]:2:2);
         end;writeln; end
     else writeln('na nol ne delim');
Dispose(PX);
end;
 
(*----------------------------------*)
 
procedure Output(PX:Tx;n:byte);
begin
New(PX);
writeln('Normirovanie elementov matricu ');
for i:=1 to n do
write(PX^[i]:3:2,' ');
Dispose(PX);
end;
 
(*----------------------------------*)
 
BEGIN {main}
 clrscr;
 randomize;
 writeln('Massiv A:');
 Input(a,8);
 Norm(a,8);
 Output(a,8);
 writeln;
 writeln('Massiv B:');
 Input(b,13);
 Norm(b,13);
 Output(b,13);
 writeln;
 writeln('Massiv C:');
 Input(c,10);
 Norm(c,10);
 Output(c,10);
 readln;
END.
И еще: иногда будет происходить вещественное переполнение или даже деление на 0, если max = 0. P.S. много лишней информации на экране, лучше же когда все видно на одной странице.