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

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

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

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





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

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


Есть программа, нужно прописать 3 процедуры, каждая с 3 параметрами. Первая процедура - изменение размерности матрицы, т.е. спрашивать пользователя сколько строк и сколько столбцов, изменение имени первой и второй матрицы; вторая - пользователь выбирает что делать с матрицей( находить среднее арифм, сумму или произведение элементов); третья - формула, по которой считается результатная матрица.
Вот сама задача: Дана матрица А(6,6). Определить среднее арифметическое матрицы А - SRA. Создать новую матрицу В(6,6), где В(i,j)= A(i,j)*0,1*SRA.Вывести исходную и результатную матрицы на экран.
Прикрепленный файл  4progadfbdff.PAS ( 2.31 килобайт ) Кол-во скачиваний: 452
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Анечка @ 23.03.2009 21:36) *
Есть программа, нужно прописать 3 процедуры, каждая с 3 параметрами.
А в чем, собственно, затруднение?
Я не вполне понимаю, чего ты хочешь. Сделать это за тебя?..
А программа твоя или нет?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(Lapp @ 24.03.2009 5:51) *

А в чем, собственно, затруднение?
Я не вполне понимаю, чего ты хочешь. Сделать это за тебя?..
А программа твоя или нет?


Программа моя, писала сама, но как делать процедуры я не понимаю!(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Анечка @ 24.03.2009 9:49) *
Программа моя, писала сама, но как делать процедуры я не понимаю!(
Хорошо, поможем обязательно.
Только нужно кое-что уточнить. Например - параметров у каждой процедуры должно быть ровно три? Это требование выглядит несколько странным.. Вообще, в данном случае разбиение на процедуры кажется мне надуманным - но это еще ладно, раз требуют, можно три сделать. Но насчет параметров - в высшей степени странно. Если уж с тебя требуют определенное число параметров, то пусть скажут, какие именно. Пожалуйста, уточни этот вопрос.

Так, из общих соображений целесообразности, я могу, например, предложить выделить в процедуру, например, печать заголовка. Это будет вполне осмысленно. Текст (шапку) при этом можно держать в отдельном файле. Если тебе это подходит, могу помочь.

Дальше.. Выбор дествия. которое нужно произвести с матрицей, можно оформить либо в виде меню, либо в виде парсера строки. Первое (меню) намного легче второго (парсера). Меню тоже можно выделить в отдельную (и даже не одну) процедуру.

Так что выбирай. Проясни детали, которые я спрашивал (например, у препа). Скажи, что именно ты хочешь сделать. А я постараюсь помочь.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(Lapp @ 24.03.2009 12:53) *

Хорошо, поможем обязательно.
Только нужно кое-что уточнить. Например - параметров у каждой процедуры должно быть ровно три? Это требование выглядит несколько странным.. Вообще, в данном случае разбиение на процедуры кажется мне надуманным - но это еще ладно, раз требуют, можно три сделать. Но насчет параметров - в высшей степени странно. Если уж с тебя требуют определенное число параметров, то пусть скажут, какие именно. Пожалуйста, уточни этот вопрос.

Так, из общих соображений целесообразности, я могу, например, предложить выделить в процедуру, например, печать заголовка. Это будет вполне осмысленно. Текст (шапку) при этом можно держать в отдельном файле. Если тебе это подходит, могу помочь.

Дальше.. Выбор дествия. которое нужно произвести с матрицей, можно оформить либо в виде меню, либо в виде парсера строки. Первое (меню) намного легче второго (парсера). Меню тоже можно выделить в отдельную (и даже не одну) процедуру.

Так что выбирай. Проясни детали, которые я спрашивал (например, у препа). Скажи, что именно ты хочешь сделать. А я постараюсь помочь.



Параметров не обязательно, но желательно три. Не, заголовок( как я поняла ты имеешь ввиду титульный лист) выделять в процедуру нельзя... надо запрашивать пользователя о размерности матрицы, через процедуры спросить в форме меню под 1,2,3 что делать с матрицей, далее через процедуру высчитать создать формулу на основе данной, спросить пользователя так же через меню как расположить исходный и результатный массив: рядом, друг под другом или по диагонали(тоже через процедуры сделать).Вот что мне препод сказал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Анечка @ 24.03.2009 20:29) *
Параметров не обязательно, но желательно три.
Отлично. Желательность постараемся учесть по мере возможности (но не будем горевать, если ее не будет)))

Цитата(Анечка @ 24.03.2009 20:29) *
заголовок( как я поняла ты имеешь ввиду титульный лист) выделять в процедуру нельзя...
Терпеть не могу слова "нельзя".
Вот, смотри, я сделал процедуру для выводв строки, которая может центрировать строку, нормировать на левый/правый край, а также выводить в указанной позиции. Ты увидишь сама, насколько это удобнее - никаких явных указаний, где печатать, вычислений позиции.. Я, конечно, понимаю, что тебе может показаться жалко своей работы - но это именно то, что должен делать компьютер, ибо он делает это гораздо лучше людей smile.gif.
program zadanie_4;
uses crt;
type
tMatrix=array[1..6,1..6] of real;

var
a,b: tMatrix;
i,j,z: integer;
byk: string [5] ;
SRA,s,x: real;
ch:char;

label
L1,L2;

procedure OutLn(s: string; Pos,Col: integer);
begin
TextColor(Col);
case Pos of
-2: GoToXY(1,WhereY);
0: GoToXY((Lo(WindMin)+Lo(WindMax)-Length(s))div 2,WhereY);
-1: GoToXY(Lo(WindMin)+Lo(WindMax)-Length(s)+2,WhereY);
else GoToXY(Pos,WhereY)
end;
WriteLn(s)
end;


begin
clrscr;
GoToXY(1,6);
OutLn('Вашему вниманию представленна программа',-1,LightGray);
OutLn('по нахождению среднего арифметического',0,LightGray);
OutLn('в квадратной матрице.',0,LightGray);
WriteLn;
OutLn('ЗАДАЧА ПРОГРАММЫ:',0,Red);
OutLn('ПОСТРОИТЬ КВАДРАТНУЮ МАТРИЦУ "А"',0,White);
OutLn('НАЙТИ СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ В МАТРИЦЕ "А"',0,White);
OutLn('ПОСТРОИТЬ МАТРИЦУ "Б"*0.1*SRA',0,Red);
OutLn('ВЫВЕСТИ ИСХОДНУЮ МАТРИЦУ И ПОЛУЧЕННУЮ РЯДОМ',0,Red);
WriteLn;
OutLn('Программу составила',42,Green);
OutLn('студентка МГУ ПС группы ЭИЭ - 112',42,Green);
OutLn('ИВАНОВА АННА',42,Green);
WriteLn;
WriteLn;
OutLn('Москва 1.12.2009',0,Yellow);
WriteLn;
OutLn('Нажмите любую клавишу для продолжения!',0,LightGray);
ch:=readkey;

L1:
begin
clrscr;
writeln('ВВЕДИТЕ ЭЛЕМЕНТЫ МАТРИЦЫ!!!');
writeln;
SRA:=0;
for i:=1 to 6 do
for j:=1 to 6 do
begin
repeat
write('a[',i,',',j,']>');
readln(byk);
val(byk,a[i,j],z);
textcolor(12);
If z<>0 then
writeln('Неверно задан элемент матрицы! Повторите ввод элемента');
textcolor(white);
Until z=0;

SRA:=SRA+a[i,j];
end;
SRA:=SRA/36;
for i:=1 to 6 do
for j:=1 to 6 do
b[i,j]:=a[i,j]*0.1*SRA;
clrscr;
writeln('Среднее арифметическое =',sra:10:2);
writeln;
writeln(' "МАТРИЦА А"');
writeln;
for i:=1 to 6 do
begin
for j:=1 to 6 do
write(a[i,j]:10 :1);
writeln;
{ writeln;}
end;
writeln;
writeln(' "МАТРИЦА Б"');
writeln;
for i:=1 to 6 do

begin
for j:=1 to 6 do write(b[i,j]:10 :1);
writeln;
end;

gotoxy(20,24);
writeln('Хотите ли продолжить? Y-да, N-нет');
l2:
case readkey of
#89: goto l1;
#121: goto l1;
#78: exit;
#110:exit;
end;
goto l2;
end;
end.

Остальную часть программы я пока оставил без изменения. Это было непросто - скрепя зубы я оставил твои метки и GoTo.. Если хочешь, чтоб я и дальше помогал тебе - избавься от них (я могу помочь smile.gif).

Цитата(Анечка @ 24.03.2009 20:29) *
надо запрашивать пользователя о размерности матрицы, через процедуры спросить
У меня сложилось впечатление, что ты как-то извращенно понимаешь процедуры.. Они у тебя почему-то всегд для ввода чего-нибудь. Это в корне неверное понимание. Процедура (или функция) используется для обособленной (и, как правило, неоднократно использующейся) части кода, выполняющей любую задачу - совсем не только ввод. Даже, как правило не ввод smile.gif).

Цитата(Анечка @ 24.03.2009 20:29) *
в форме меню под 1,2,3
Опять магическое число 3!.. Боюсь, я буду просыпаться по ночам и кричать: "Три параметра!!" (почти по Пушкину smile.gif)

Цитата(Анечка @ 24.03.2009 20:29) *
далее через процедуру высчитать создать формулу на основе данной,
А это я просто не понял)). "Через процедуру высчитать.. создать формулу на основе данной..." ?? Что это значит?? Кто понял, объясните, плз.. blink.gif


Цитата(Анечка @ 24.03.2009 20:29) *
Вот что мне препод сказал...
Ох.. Одно из двух: либо вы с ним плохо поняли друг друга, либо - мне жаль МГУ, с такими преподами у него нет шансов..

Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


Цитата(Lapp @ 25.03.2009 7:20) *

Отлично. Желательность постараемся учесть по мере возможности (но не будем горевать, если ее не будет)))

Терпеть не могу слова "нельзя".
Вот, смотри, я сделал процедуру для выводв строки, которая может центрировать строку, нормировать на левый/правый край, а также выводить в указанной позиции. Ты увидишь сама, насколько это удобнее - никаких явных указаний, где печатать, вычислений позиции.. Я, конечно, понимаю, что тебе может показаться жалко своей работы - но это именно то, что должен делать компьютер, ибо он делает это гораздо лучше людей smile.gif.
program zadanie_4;
uses crt;
type
tMatrix=array[1..6,1..6] of real;

var
a,b: tMatrix;
i,j,z: integer;
byk: string [5] ;
SRA,s,x: real;
ch:char;

label
L1,L2;

procedure OutLn(s: string; Pos,Col: integer);
begin
TextColor(Col);
case Pos of
-2: GoToXY(1,WhereY);
0: GoToXY((Lo(WindMin)+Lo(WindMax)-Length(s))div 2,WhereY);
-1: GoToXY(Lo(WindMin)+Lo(WindMax)-Length(s)+2,WhereY);
else GoToXY(Pos,WhereY)
end;
WriteLn(s)
end;
begin
clrscr;
GoToXY(1,6);
OutLn('Вашему вниманию представленна программа',-1,LightGray);
OutLn('по нахождению среднего арифметического',0,LightGray);
OutLn('в квадратной матрице.',0,LightGray);
WriteLn;
OutLn('ЗАДАЧА ПРОГРАММЫ:',0,Red);
OutLn('ПОСТРОИТЬ КВАДРАТНУЮ МАТРИЦУ "А"',0,White);
OutLn('НАЙТИ СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ В МАТРИЦЕ "А"',0,White);
OutLn('ПОСТРОИТЬ МАТРИЦУ "Б"*0.1*SRA',0,Red);
OutLn('ВЫВЕСТИ ИСХОДНУЮ МАТРИЦУ И ПОЛУЧЕННУЮ РЯДОМ',0,Red);
WriteLn;
OutLn('Программу составила',42,Green);
OutLn('студентка МГУ ПС группы ЭИЭ - 112',42,Green);
OutLn('ИВАНОВА АННА',42,Green);
WriteLn;
WriteLn;
OutLn('Москва 1.12.2009',0,Yellow);
WriteLn;
OutLn('Нажмите любую клавишу для продолжения!',0,LightGray);
ch:=readkey;

L1:
begin
clrscr;
writeln('ВВЕДИТЕ ЭЛЕМЕНТЫ МАТРИЦЫ!!!');
writeln;
SRA:=0;
for i:=1 to 6 do
for j:=1 to 6 do
begin
repeat
write('a[',i,',',j,']>');
readln(byk);
val(byk,a[i,j],z);
textcolor(12);
If z<>0 then
writeln('Неверно задан элемент матрицы! Повторите ввод элемента');
textcolor(white);
Until z=0;

SRA:=SRA+a[i,j];
end;
SRA:=SRA/36;
for i:=1 to 6 do
for j:=1 to 6 do
b[i,j]:=a[i,j]*0.1*SRA;
clrscr;
writeln('Среднее арифметическое =',sra:10:2);
writeln;
writeln(' "МАТРИЦА А"');
writeln;
for i:=1 to 6 do
begin
for j:=1 to 6 do
write(a[i,j]10.gif1);
writeln;
{ writeln;}
end;
writeln;
writeln(' "МАТРИЦА Б"');
writeln;
for i:=1 to 6 do

begin
for j:=1 to 6 do write(b[i,j]10.gif1);
writeln;
end;

gotoxy(20,24);
writeln('Хотите ли продолжить? Y-да, N-нет');
l2:
case readkey of
#89: goto l1;
#121: goto l1;
#78: exit;
#110:exit;
end;
goto l2;
end;
end.

Остальную часть программы я пока оставил без изменения. Это было непросто - скрепя зубы я оставил твои метки и GoTo.. Если хочешь, чтоб я и дальше помогал тебе - избавься от них (я могу помочь smile.gif).

У меня сложилось впечатление, что ты как-то извращенно понимаешь процедуры.. Они у тебя почему-то всегд для ввода чего-нибудь. Это в корне неверное понимание. Процедура (или функция) используется для обособленной (и, как правило, неоднократно использующейся) части кода, выполняющей любую задачу - совсем не только ввод. Даже, как правило не ввод smile.gif).

Опять магическое число 3!.. Боюсь, я буду просыпаться по ночам и кричать: "Три параметра!!" (почти по Пушкину smile.gif)

А это я просто не понял)). "Через процедуру высчитать.. создать формулу на основе данной..." ?? Что это значит?? Кто понял, объясните, плз.. blink.gif
Ох.. Одно из двух: либо вы с ним плохо поняли друг друга, либо - мне жаль МГУ, с такими преподами у него нет шансов..


программу посмотрела, впринципе интересно, но я боюсь, что препод этого не оценит((
на счет Go to...если поможешь, то я буду только рада )))
ммм...про процедуры поняла, но просто на моём примере они должны быть видны пользователь, т.е. на экран обязательно должно выводиться меню выбора дальнейших действий! Процедуры я сказала примерно, препод сказал типо сама думай...так что если у тя будут ещё какие то варианты - то я опять же за!)но они обязательно должны отоброжаться в работе программы, т.е. при работе пользователя с программой...вот...а препод у нас действительно не совсем вминяемый..ну а куда деваться?!если не получить автомат,сдавши 4 программы за семестр, то хрен сдашь экзамен, а он берёт по 200 евро...а откуда ж у бедного студента такие деньги?))
Так, что то меня на лирику потянуло)))Вообщем, жду ответа!;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Анечка @ 25.03.2009 21:35) *
программу посмотрела, впринципе интересно, но я боюсь, что препод этого не оценит((
Ты не бойся, ты пробуй.

Цитата(Анечка @ 25.03.2009 21:35) *
на счет Go to...если поможешь, то я буду только рада
Это несложно. Вот твоя прога без меток и GoTo. Наслаждайся.

program zadanie_4;
uses crt;
type
tMatrix=array[1..6,1..6] of real;

var
a,b: tMatrix;
i,j,z: integer;
byk: string [5] ;
SRA,s,x: real;
ch:char;

procedure OutLn(s: string; Pos,Col: integer);
begin
TextColor(Col);
case Pos of
-2: GoToXY(1,WhereY);
0: GoToXY((Lo(WindMin)+Lo(WindMax)-Length(s))div 2,WhereY);
-1: GoToXY(Lo(WindMin)+Lo(WindMax)-Length(s)+2,WhereY);
else GoToXY(Pos,WhereY)
end;
WriteLn(s)
end;

procedure DoIt;
begin
clrscr;
writeln('ВВЕДИТЕ ЭЛЕМЕНТЫ МАТРИЦЫ:');
writeln;
SRA:=0;
for i:=1 to 6 do for j:=1 to 6 do begin
repeat
write('a[',i,',',j,']>');
readln(byk);
val(byk,a[i,j],z);
textcolor(12);
If z<>0 then writeln('Неверно задан элемент матрицы! Повторите ввод элемента');
textcolor(white);
Until z=0;
SRA:=SRA+a[i,j];
end;
SRA:=SRA/36;
for i:=1 to 6 do for j:=1 to 6 do b[i,j]:=a[i,j]*0.1*SRA;
clrscr;
writeln('Среднее арифметическое =',sra:10:2);
writeln;
writeln(' "МАТРИЦА А"');
writeln;
for i:=1 to 6 do begin
for j:=1 to 6 do write(a[i,j]:10 :1);
writeln;
{ writeln;}
end;
writeln;
writeln(' "МАТРИЦА Б"');
writeln;
for i:=1 to 6 do begin
for j:=1 to 6 do write(b[i,j]:10 :1);
writeln;
end
end;

begin
clrscr;
GoToXY(1,6);
OutLn('Вашему вниманию представленна программа',0,LightGray);
OutLn('по нахождению среднего арифметического',0,LightGray);
OutLn('в квадратной матрице.',0,LightGray);
WriteLn;
OutLn('ЗАДАЧА ПРОГРАММЫ:',0,Red);
OutLn('ПОСТРОИТЬ КВАДРАТНУЮ МАТРИЦУ "А"',0,White);
OutLn('НАЙТИ СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ В МАТРИЦЕ "А"',0,White);
OutLn('ПОСТРОИТЬ МАТРИЦУ "Б"*0.1*SRA',0,Red);
OutLn('ВЫВЕСТИ ИСХОДНУЮ МАТРИЦУ И ПОЛУЧЕННУЮ РЯДОМ',0,Red);
WriteLn;
OutLn('Программу составила',42,Green);
OutLn('студентка МГУ ПС группы ЭИЭ - 112',42,Green);
OutLn('ИВАНОВА АННА',42,Green);
WriteLn;
WriteLn;
OutLn('Москва 1.12.2009',0,Yellow);
WriteLn;
OutLn('Нажмите любую клавишу для продолжения!',0,LightGray);
ch:=readkey;
repeat
gotoxy(20,24);
writeln('Хотите ли продолжить? Y-да, N-нет');
case readkey of
#89,#121: DoIt;
#78,#110: exit;
end
until false
end.


Цитата(Анечка @ 25.03.2009 21:35) *
ммм...про процедуры поняла, но просто на моём примере они должны быть видны пользователь, т.е. на экран обязательно должно выводиться меню выбора дальнейших действий! Процедуры я сказала примерно, препод сказал типо сама думай...так что если у тя будут ещё какие то варианты - то я опять же за!)но они обязательно должны отоброжаться в работе программы, т.е. при работе пользователя с программой...
У меня боооооольшие сомнения, что ты поняла, что такое процедуры и зачем они нужны. Я вот сделал процедуру DoIt сейчас (вообще без параметров, кстати), чтобы избавиться от GoTo - и это действительно достойная цель. Твои слова о том, чтобы пользователь видел работу процедуры вызывают откровенное недоумение. Типа как если бы пассажир автомобиля потребовал бы увидеть работу поршня двигателя. Нет и не может быть ему до этого дела. Организация программы целиком определяется программистом и никто ее не должен знать. Прошу тебя, перечитай раздел в учебнике про процедуры..

Цитата(Анечка @ 25.03.2009 21:35) *
вот...а препод у нас действительно не совсем вминяемый..ну а куда деваться?!если не получить автомат,сдавши 4 программы за семестр, то хрен сдашь экзамен, а он берёт по 200 евро...а откуда ж у бедного студента такие деньги?))
Знаешь, эту информацию оставь для прокурора..

Еще замечу, что у тебя плоховато с форматированием программы. Я подправил в последнем варианте - обрати внимание, как нужно. Это важно.

Добавлено через 7 мин.
PS
При ответе, пожалуйста, не копируй весь предыдущий мессадж. Оставляй только то, что тебе нужно.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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