IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> процедуры с параметрами
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Женский

Репутация: -  0  +


всем привет.
Совсем запуталась с параметрами 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.

заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






При чем тут параметры процедур? У тебя проблема с 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 начинается, а где - заканчивается.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 8:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name