Помощь - Поиск - Пользователи - Календарь
Полная версия: Оператор case
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Mactraher
Как, с помощью оператора case, сделать выбор процедуры?
То есть вроде
case x of
1:procedure 1;
2:procedure 2;
но так, что б работало=\
TarasBer
case x of
1:procedure1;
2:procedure2;
end;
Mactraher
Я ему так и заявляю, а он в ответ мне выдаёт s42.radikal.ru/i095/1112/09/e3640221233f.jpg
IUnknown
Ты не так заявляешь. Надо описать процедуры (все) перед основной программой, а не внутри нее. А потом - просто вызывать по имени внутри Case...
Mactraher
Кажется понял, спасибо.
Mactraher
Хотелось бы ещё узнать, как вызывается процедура?
http://s44.radikal.ru/i103/1112/57/df39e4930c2a.jpg
Вверху обведён мой вариант вызова, внизу - сама процедура.
TarasBer
1: begin Lab(m,n,k); end;

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

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

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

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

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

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


Мне приходится их вводить и в начале всей программы, а использование глобальных переменных в этом случае запрещено. Возможно ли как-то работать только с моими локальными переменными, объявленными в процедуре?
TarasBer
см сообщение 7, я же дописал
Mactraher
Цитата(TarasBer @ 9.12.2011 15:56) *

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

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

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

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

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


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

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

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

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

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

Не дадите ответ на мой второй вопрос?)
Как создать массив MxN, но М и N при этом ввести после?
TarasBer
Цитата(Mactraher @ 14.12.2011 18:15) *

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

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

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

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