Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Оператор case

Автор: Mactraher 7.12.2011 19:24

Как, с помощью оператора case, сделать выбор процедуры?
То есть вроде
case x of
1:procedure 1;
2:procedure 2;
но так, что б работало=\

Автор: TarasBer 7.12.2011 19:29

case x of
1:procedure1;
2:procedure2;
end;

Автор: Mactraher 8.12.2011 6:21

Я ему так и заявляю, а он в ответ мне выдаёт s42.radikal.ru/i095/1112/09/e3640221233f.jpg

Автор: IUnknown 8.12.2011 6:45

Ты не так заявляешь. Надо описать процедуры (все) перед основной программой, а не внутри нее. А потом - просто вызывать по имени внутри Case...

Автор: Mactraher 8.12.2011 13:12

Кажется понял, спасибо.

Автор: Mactraher 9.12.2011 16:47

Хотелось бы ещё узнать, как вызывается процедура?
http://s44.radikal.ru/i103/1112/57/df39e4930c2a.jpg
Вверху обведён мой вариант вызова, внизу - сама процедура.

Автор: TarasBer 9.12.2011 18:20

1: begin Lab(m,n,k); end;

(короче надо непременно передать три параметра, потому что ты процедуру объявил как принимающую три параметра).

Добавлено через 9 мин.
Или ты хотел, чтобы переменные a,b,y были локальными в процедуре Lab и не являлись параметрами?
Тогда ты не правильно описал процедуру.
Надо было так:


procedure Lab; // никаких параметров
var // а вот теперь описываем локальные переменные
a,b,y: real;
begin
...


Автор: Mactraher 9.12.2011 18:30

Цитата(TarasBer @ 9.12.2011 15:20) *

1: begin Lab(m,n,k); end;

(короче надо непременно передать три параметра, потому что ты процедуру объявил как принимающую три параметра).


Мне приходится их вводить и в начале всей программы, а использование глобальных переменных в этом случае запрещено. Возможно ли как-то работать только с моими локальными переменными, объявленными в процедуре?

Автор: TarasBer 9.12.2011 18:56

см сообщение 7, я же дописал

Автор: Mactraher 12.12.2011 21:57

Цитата(TarasBer @ 9.12.2011 15:56) *

см сообщение 7, я же дописал

Извиняюсь, не успел прочитать, теперь понял, спасибо.

Автор: Mactraher 14.12.2011 4:14

Ура, работает! lol.gif
А как теперь сделать, чтобы на определённом шаге программа начинала работу заного?
Как создать массив MxN, но М и Н при этом ввести после?

Автор: TarasBer 14.12.2011 13:07

> Извиняюсь, не успел прочитать, теперь понял, спасибо.

Как вы форум читаете, если моё исправление написано раньше вашего ответа?

> А как теперь сделать, чтобы на определённом шаге программа начинала работу заного?

Заново?
Циклом.


repeat
if что-то там then continue; // команда continue - начать цикл с начала
if что-то там then break; // команда break - выйти из цикла
until false;


Автор: Mactraher 14.12.2011 22:15

Не дадите ответ на мой второй вопрос?)
Как создать массив MxN, но М и N при этом ввести после?

Цитата(TarasBer @ 14.12.2011 10:07) *

Как вы форум читаете, если моё исправление написано раньше вашего ответа?

Мой ответ был написан менее чем через минуту, после вашего исправления.
Я мог не обновлять страницу с момента создания вашего предыдущего сообщения.
Я мог писать больше минуты.

Не дадите ответ на мой второй вопрос?)
Как создать массив MxN, но М и N при этом ввести после?

Автор: TarasBer 15.12.2011 13:16

Цитата(Mactraher @ 14.12.2011 18:15) *

Не дадите ответ на мой второй вопрос?)
Как создать массив MxN, но М и N при этом ввести после?

В Паскале - по простому никак. Заводи массив с избытком, например, 100 на 100, а M и N храни отдельно.
Цитата

Я мог не обновлять страницу с момента создания вашего предыдущего сообщения.
Я мог писать больше минуты.

Ты когда отправляешь сообщение, не смотришь, что на странице изменилось, сразу закрываешь не глядя?