Помощь - Поиск - Пользователи - Календарь
Полная версия: процедуры с параметрами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ship
всем привет.
Совсем запуталась с параметрами unsure.gif .Помогите исправить ошибки.


program zadacha;
uses crt;
type mt1=array [1..20,1..20] of real;
mt2=array [1..20] of real;
var
IM: char;
matr:mt1;
b,K:mt2;
n,m,i,j:integer;
ch:char;
error:integer;
shet:integer;
zam:integer;
label
L1, L2;
procedure VVOD (IM:char;
var matr:mt1;
n,m:integer);
var i,j: integer;
begin
textcolor (white);
clrscr;
begin
repeat
write('введите имя матрицы ...');
readln(IM);
write('введите количество строк от 1 до 20:');
{$i-}
readln(n);
Error:=IOResult;
{$i+}
if (n>20) or (n<1) or (Error<>0) then
writeln('неверно. повторите ввод!');
until (n<=20) and (n>=1) and (error=0);
begin
repeat
write('введите количество столбцов от 1 до 20:');
{$i-}
readln(m);
Error:=IOResult;
{$i+}
if (m>20) or (m<1) or (Error<>0) then
writeln('неверно. повторите ввод!');
until (m<=20) and (m>=1) and (error=0);
end;
writeln;
writeln ('вводите матрицу...',IM,':');
writeln;
for i:=1 to n do
for j:=1 to m do
begin
repeat
write(IM,'[',i,',',j,']=');
{$i-}
readln(matr[i,j]);
Error:=IOResult;
{$i+}
if (matr[i,j]>10000) or (matr[i,j]<-10000) or (Error<>0) then
writeln('неверно. повторите ввод!');
until (matr[i,j]<=10000) and (matr[i,j]>=-10000) and (error=0);
end;
clrscr;
writeln('исходная матрица :');
for i:=1 to n do
begin
for j:=1 to m do
write(matr[i,j]:8:0,'');
writeln;
end;
end;
end;

Procedure varnt (IM:char;
matr:mt1;
shet: real;
zam:real);
var
i,j: integer;
Error: integer;
K:array[1..100] of real;
b:array [1..15] of integer;
sum:real;
sra:real;

label
L1,L2;
begin
L1:
begin
writeln;
textcolor(green);
writeln('что вы хотите найти?');
writeln('1 => кол-во положительных элементов в столбцах матрицы');
writeln('2 => кол-во отрицательных элементов в столбцах матрицы;');
writeln;
write('ваш вариант:');
readln(shet);
case shet of
1:
b[j]:=0;
for j:=1 to m do
begin
for j:=1 to m do
for i:=1 to n do
if matr[i,j]>0 then
b[j]:=b[j]+1;
writeln('-------------------------');
writeln;
textcolor(white);
writeln('обработка...');
writeln;
for j:=1 to m do
writeln(b[j]:4);
writeln;
end;
writeln;
writeln('какие преобразования вы хотелибы произвести');
writeln;
writeln('1=> найти сумму положительных элементов в каждом столбце матрицы ;');
writeln('2=> найти среднее арифметическое');
writeln('3=>вернуться в начало;');
writeln('4=>закончить работу с программой ');
writeln;
writeln('ваш вариант');
readln(zam);
case zam of
1:
for j:=1 to m do
begin
K[j]:=0;
for i:=1 to n do
if matr[i,j]>0 then
K[j]:=K[j]+matr[i,j];
end;
for j:=1 to m do
write(K[j]:8:0);
writeln;
2:
for i:=1 to n do
for j:=1 to m do
begin
SRA:=sum/(n*m);
schet:=SRA;
end;
writeln;
writeln (schet:8:2,' ');
3: goto L1;
4: exit;

{-----------------------------------------------------------------------}

2:
b[j]:=0;
for j:=1 to m do
begin
for j:=1 to m do
for i:=1 to n do
if matr[i,j]<0 then
b[j]:=b[j]+1;
writeln('-------------------------');
writeln;
textcolor(white);
writeln('обработка...');
writeln;
for j:=1 to m do
writeln(b[j]:4);
writeln;
end;
writeln;
writeln('какие преобразования вы хотелибы произвести');
writeln;
writeln('1=> найти сумму положительных элементов в каждом столбце матрицы ;');
writeln('2=> найти среднее арифметическое');
writeln('3=>вернуться в начало;');
writeln('4=>закончить работу с программой ');
writeln;
writeln('ваш вариант');
readln(zam);
case zam of
1:
for j:=1 to m do
begin
K[j]:=0;
for i:=1 to n do
if matr[i,j]>0 then
K[j]:=K[j]+matr[i,j];
end;
for j:=1 to m do
write(K[j]:8:0);
writeln;
2:
for i:=1 to n do
for j:=1 to m do
begin
SRA:=sum/(n*m);
schet:=SRA;
end;
writeln;
writeln (schet:8:2,' ');
3: goto L1;
4: exit;

begin
clrscr;
L1:
VVOD(IM1,n1,m1);
variant(matr,H, b, k, schet,zam);
writeln;
writeln('Хотите преобразовать еще одну матрицу?(Y-да ,N-­нет)');
L2:

case readkey of
#89: goto L1;
#121: goto L1;
#78: exit;
#110: exit;
end;
goto L2;
readln;
End.

заранее спасибо.
volvo
При чем тут параметры процедур? У тебя проблема с Case-ами, и ни с чем другим... Но разбираться, с учетом неформатированного кода и наличия Goto я в коде не буду. Единственное, что скажу - структура Case должна быть такой:

Case ... of
1: begin ... end;
2: begin ... end;
...
, а у тебя что?

Цитата
    case shet of
1:
b[j]:=0;
for j:=1 to m do
Все, дальше уже неверно - потому как begin/end отсутствует... Да и вообще непонятно, где какой Case начинается, а где - заканчивается.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.