1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Функция с массивами., правильно ли составлена.подскажите.
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:=1 to k do for i:=1 to m do for i:=1 to n do if x[i]<min then begin min:=x[i];end; begin writeln ('k= m= n='); readln (k,m,n); for i:=1 to k do read (a[i]); for i:=1 to m do read (b[i]); for i:=1 to 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; begin if (abs (mina)>10) then begin F1:= minb+minc;end;end; function F2(mina,minb,minc:real):real; begin if (abs (mina)<=10) then begin F2:= 1+ minc*minc;end;end; F:=F1/F2; writeln (F:8:3);end.
Что подразумевается под "правильно"? Будет ли запускаться, работать и выдавать ответ? Нет, не будет... Потому что перепутано все, что только можно... K, M, N - это переменные или константы, например? Если переменные, то как описываются типы mas...? Там нужны константы... А если это - константы - то как они могут читаться через Readln?
Кстати, где описан тип mas? И главное - зачем? Ты же все делаешь в одном месте - у тебя процедура P - это "все в одном", и получить размеры массивов, и ввести сами массивы, и вернуть минимум. Раздели ее на процедуру чтения массива и функцию нахождения минимума, все станет гораздо проще (кстати, здесь не пойдет явное описание типов array[1 .. что-то] of real, потому что все три массива имеют разный размер... пользуйся открытыми массивами:
procedure InputArray(var arr: array of real; size: integer); begin { ... } end;
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:=1 to k do for i:=1 to m do for i:=1 to n do if x[i]<min then begin min:=x[i];end; begin writeln ('k= m= n='); readln (k,m,n); for i:=1 to k do read (a[i]); for i:=1 to m do read (b[i]); for i:=1 to 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; begin if (abs (mina)>10) then begin F1:= minb+minc;end;end; function F2(mina,minb,minc:real):real; begin if (abs (mina)<=10) then begin 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:array of real; size:integer); begin for i:=1 to k do read (a[i]); for i:=1 to m do read (b[i]); for i:=1 to k do read (a[i]); function P(min:real);real; var i:integer; begin min:=arr[1]; for i:=1 to k do for i:=1 to m do for i:=1 to n do if arr[i]<min then begin min:=arr[i]; P(mina);P(minb);P(minc); writeln(mina,minb,minc);end; function F1 (mina,minb,minc:real):real; begin if (abs (mina)>10) then begin F1:= minb+minc;end;end; function F2(mina,minb,minc:real):real; begin if (abs (mina)<=10) then begin F2:= 1+ minc*minc;end;end; F:=F1/F2; writeln (F:8:3);end.