Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменные подпрограммы 
:(
    Опции темы
Anark1
  Дата 11.2.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



В моей программе использую функцию readkey, которая возвращает значение типа char. В зависимости от введенного символа необходимо запускать подпрограмму относительно разных переменных.
Например:
Код

c:=readkey;
...
case c of '1' : MyProc(a1,b1,c1);
               '2' : MyProc(a2,b2,c2);
...

А caseов у меня очень много, еще и разветвленных, но переменные, относительно которых я вызываю свою подпрограмму шаблонны. Ну то есть для 1 - a1,b1,c1 и т.д.
Так вот можно ли избежать огромное количество caseов?



--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Kuvaldis
Дата 11.2.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Anark1, 
Как вариант, я бы завел матрицу из 3 стоблцов (кол-во параметров в твоей функции) и нижного кол-ва строк (сколько у тебя вариантов)
Потом обращался бы к нужной строке (а это и есть твои переменные a1, b1, c1 по индексу)
Максимум, будет 255 символов (сколько в таблице ASCII)
Например, если на ввод только цифры, то:
 
Код

var
     ind : integer;
     VariableMatrix : array[1..3, 1..9] of integer;   // переменные 

...
c := readkey;
ind := (integer) с  - 48;    // вычесть код цифры, чтобы получить значение ( '1' -> 1)    
...    
MyProc( VariableMatrix[ind, 1], VariableMatrix[ind, 2], VariableMatrix[ind, 3] );    




--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Anark1
Дата 11.2.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Можно поподробнее о VariableMatrix и Ind?

Это сообщение отредактировал(а) Anark1 - 11.2.2007, 21:00


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Anark1
Дата 11.2.2007, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



(integer)c равносильно ord© ?
Можешь привести пример заполнения массива VariableMatrix?

Это сообщение отредактировал(а) Anark1 - 11.2.2007, 21:19


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Kuvaldis
Дата 11.2.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Anark1, 
Цитата

(integer)c равносильно ord© ?

да 

Цитата

Можешь привести пример заполнения массива VariableMatrix?

А что тебе непонятно? Каждая строчка - это 3 переменные 
Т.е. i-тая строчка - это твои a(i), b(i), c(i)


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Anark1
Дата 11.2.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Или я не понимаю, или это не совсем то. мне нужно работать с параметрами. То есть а,б,ц - это параметры, проименованные шаблонно. Ну то есть , если пользователь говорит что нужно заполнить матрицу №1, то запускается процедура ввода матрицы VVOD_MATR(a1,n1,m1) n1,m1 - кол-во, столбцов, m1 - строк. Для второй матрицы - свои a2,n2,m2.



--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
Kuvaldis
Дата 11.2.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Anark1, 
Сказал бы сразу, что параметры разного типа
Тогда сделай структуру "матрица, ее параметры"
И создай массив таких структур. 


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Anark1
Дата 11.2.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



omg. 
Думаю, не успею. Остается завтрашний вечер только.
В принципе все написал, но в лоб там для 6 матриц 216 операторов case. 6  в третьей степени. Я упростил до 36 + 6. Вроде бы работает. А насчет твоего последнего поста не очень понимаю, да и все ведь нужно объяснять при сдаче.
все равно спасибо. 
З.Ы. Плюс поставлю когда набью сто постов, надеюсь не забуду.  smile  smile 


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.