Type mas1=array [1...k] of real;
mas2=array [1...m] of real;
mas3=array [1...n] of real;
var a:mas1,b:mas2,c:mas3;
var i,k,m,n:integer;
mina,minb,minc:real;
procedure P (x:mas;var min:real);
var i: integer;
begin
min:=x[1];
for i:=1to k dofor i:=1to m dofor i:=1to n doif x[i]<min thenbegin min:=x[i];end;
begin writeln ('k= m= n=');
readln (k,m,n);
for i:=1to k do read (a[i]);
for i:=1to m do read (b[i]);
for i:=1to k do read (a[i]);
P(a,mina);P(b,minb);P(c,minc);
writeln (mina,minb,minc);end;
function F1 (mina,minb,minc:real):real;
beginif (abs (mina)>10) thenbegin F1:= minb+minc;end;end;
function F2(mina,minb,minc:real):real;
beginif (abs (mina)<=10) thenbegin F2:= 1+ minc*minc;end;end;
F:=F1/F2;
writeln (F:8:3);end.
volvo
17.02.2008 22:18
Что подразумевается под "правильно"? Будет ли запускаться, работать и выдавать ответ? Нет, не будет... Потому что перепутано все, что только можно... K, M, N - это переменные или константы, например? Если переменные, то как описываются типы mas...? Там нужны константы... А если это - константы - то как они могут читаться через Readln?
Кстати, где описан тип mas? И главное - зачем? Ты же все делаешь в одном месте - у тебя процедура P - это "все в одном", и получить размеры массивов, и ввести сами массивы, и вернуть минимум. Раздели ее на процедуру чтения массива и функцию нахождения минимума, все станет гораздо проще (кстати, здесь не пойдет явное описание типов array[1 .. что-то] of real, потому что все три массива имеют разный размер... пользуйся открытыми массивами:
Type mas1=array [1...k] of real;
mas2=array [1...m] of real;
mas3=array [1...n] of real;
var a:mas1,b:mas2,c:mas3;
var i,k,m,n:integer;
mina,minb,minc:real;
procedure P (x:mas;var min:real);
var i: integer;
begin
min:=x[1];
for i:=1to k dofor i:=1to m dofor i:=1to n doif x[i]<min thenbegin min:=x[i];end;
begin writeln ('k= m= n=');
readln (k,m,n);
for i:=1to k do read (a[i]);
for i:=1to m do read (b[i]);
for i:=1to k do read (a[i]);
P(a,mina);P(b,minb);P(c,minc);
writeln (mina,minb,minc);end;
function F1 (mina,minb,minc:real):real;
beginif (abs (mina)>10) thenbegin F1:= minb+minc;end;end;
function F2(mina,minb,minc:real):real;
beginif (abs (mina)<=10) thenbegin F2:= 1+ minc*minc;end;end;
F:=F1/F2;
writeln (F:8:3);end.
Я не понимаю,что значит "открытый массив". В начале я задам константы(уберем readln K,N,M) и остальное так как Вы советуете,в пределах моего понимания. Я стараюсь понять.Помогите ещё пожалуйста.
const k=5;m=6;n=7;
Type mas1=array [1...k] of real;
mas2=array [1...m] of real;
mas3=array [1...n] of real;
var a:mas1,b:mas2,c:mas3;
var i:integer;
mina,minb,minc:real;
procedure InputArray(var arr:arrayof real; size:integer);
beginfor i:=1to k do read (a[i]);
for i:=1to m do read (b[i]);
for i:=1to k do read (a[i]);
function P(min:real);real;
var i:integer;
begin
min:=arr[1];
for i:=1to k dofor i:=1to m dofor i:=1to n doif arr[i]<min thenbegin min:=arr[i];
P(mina);P(minb);P(minc);
writeln(mina,minb,minc);end;
function F1 (mina,minb,minc:real):real;
beginif (abs (mina)>10) thenbegin F1:= minb+minc;end;end;
function F2(mina,minb,minc:real):real;
beginif (abs (mina)<=10) thenbegin F2:= 1+ minc*minc;end;end;
F:=F1/F2;
writeln (F:8:3);end.
.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.