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

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

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

 
 Ответить  Открыть новую тему 
> как сделать в пунктах подпункты?
INZA
сообщение 30.10.2011 21:36
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


как сделать в пунктах подпункты?
 Program L3;
Uses crt;
Var a1,b1,c1,d1,e1,f1,x :integer;
a,b,c:boolean;
pr:char;
i,Old_Color :byte;
ch :char;
Begin
Old_Color:=Textattr;
Repeat
window(1,1,80,25);
textattr:=black shl 4+cyan;
clrscr;
gotoxy(5,1);
write(' JIa6apaTopHa9I #3');
window(20,8,60,18);
textattr:=black shl 4+cyan;
clrscr;
gotoxy(11,4);
write(' 1-zadanie 1');
gotoxy(11,5);
write(' 2-zadanie 2');
gotoxy(11,6);
write(' 3-o proge');
gotoxy(11,8);
write(' Esc-exit ');
textcolor(cyan); gotoxy(12,2);write(' Baw BbI6op? ');
ch:=readkey;
if ch<>#0 then
begin
window(5,3,75,18);
textattr:=black shl 4+Cyan;
clrscr;
case ch of
#49:Begin
TextAttr:=Black shl 4+Cyan;
ClrScr;

readln(pr);
if pr='1' then
begin

end;
if pr= '2' then
begin

end;

Readkey;
End;
#50:Begin
TextAttr:=black shl 4+Yellow;

Readkey;
End;
#51:Begin

Readkey;
End;
#27:exit;
End;
end;
until(ch=#27);
window(1,1,80,25);
textattr:=Old_Color;
clrscr;
END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 31.10.2011 14:27
Сообщение #2


Знаток
****

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

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


если проще думаю хватит объявить пункты двумерным массивом

pars:array [0..2, 0..5] of record cmd:integer; text:string end;

и в цикле сначала вывести, а потом проверить cmd


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 31.10.2011 17:47
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(Rian @ 31.10.2011 15:27) *

если проще думаю хватит объявить пункты двумерным массивом

pars:array [0..2, 0..5] of record cmd:integer; text:string end;

и в цикле сначала вывести, а потом проверить cmd

а case в case фигня получиться ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 31.10.2011 17:52
Сообщение #4


Гость






Цитата(INZA @ 31.10.2011 17:47) *

а case в case фигня получиться ?


смотря что нужно... вход в подпункты будет пошаговым? 1.1.3.5 ? или по абсолютной нумерации?
1
-2
-3
-4

5
-6
-7
--8
--9
 К началу страницы 
+ Ответить 
INZA
сообщение 31.10.2011 19:20
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(Гость @ 31.10.2011 18:52) *

смотря что нужно... вход в подпункты будет пошаговым? 1.1.3.5 ? или по абсолютной нумерации?
1
-2
-3
-4

5
-6
-7
--8
--9

нужно
1-задание 1 (при открытии )
1-1подпункт
2-2подпункт
и т.д.
2-задание 2 (при открытии )
1-1подпункт
и т.д.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 31.10.2011 19:27
Сообщение #6


Знаток
****

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

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


ну тогда readkey записывае в cmd1, cmd2
и во вложеном case используй ее

только для вывода на экран все равно будет лучше многомерный массив... ну мне так кажется и для проверок


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 31.10.2011 20:07
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(Rian @ 31.10.2011 20:27) *

ну тогда readkey записывае в cmd1, cmd2
и во вложеном case используй ее

только для вывода на экран все равно будет лучше многомерный массив... ну мне так кажется и для проверок

ну попытаюсь сделать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 31.10.2011 22:59
Сообщение #8


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Пишется простейшая функция, которая, собственно, отображает менюшку, и делается так:

Меню любой степени вложенности (Показать/Скрыть)
(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 1.11.2011 0:04
Сообщение #9


Знаток
****

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

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


Цитата(IUnknown @ 31.10.2011 21:59) *

(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))

очень привык к динамическим smile.gif


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 4.11.2011 20:19
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(IUnknown @ 31.10.2011 23:59) *

Пишется простейшая функция, которая, собственно, отображает менюшку, и делается так:

Меню любой степени вложенности (Показать/Скрыть)
(не надо никаких двумерных массивов: в одном подменю может быть 9 пунктов, в другом - 2, что, их все под одну гребенку, и всем место под 9 элементов выделять? "Это не наш метод" (С))

спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 26.11.2011 17:50
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(IUnknown @ 31.10.2011 23:59) *

Меню любой степени вложенности (Показать/Скрыть)


error 67:string expression expected.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.11.2011 17:55
Сообщение #12


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Какой компилятор?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 26.11.2011 17:58
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(IUnknown @ 26.11.2011 18:55) *

Какой компилятор?

Free Pascal
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.11.2011 18:05
Сообщение #14


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

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


Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:

function menu(TA : byte; const items : array of string) : integer;
var
i : integer;
ch : char;
begin
TextAttr := TA;
clrscr;
for i := 0 to High(items) do
begin
gotoxy(11, 4 + i);
write(items[ i ]);
end;
gotoxy(12, 2);
write(' Your choice : ');
repeat
ch := readkey;
until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1];
menu := Ord(ch) - Ord('0');
end;


Сообщение отредактировано: IUnknown - 26.11.2011 18:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 26.11.2011 18:14
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(IUnknown @ 26.11.2011 19:05) *

Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:

function menu(TA : byte; const items : array of string) : integer;
var
i : integer;
ch : char;
begin
TextAttr := TA;
clrscr;
for i := 0 to High(items) do
begin
gotoxy(11, 4 + i);
write(items[ i ]);
end;
gotoxy(12, 2);
write(' Your choice : ');
repeat
ch := readkey;
until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1];
menu := Ord(ch) - Ord('0');
end;


а нет перепутал извините всё таки турбо
запустил на free всё пошло))) ещё раз спасибо

Сообщение отредактировано: INZA - 26.11.2011 18:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
INZA
сообщение 11.12.2011 18:56
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской
Реальное имя: Владимир

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


Цитата(IUnknown @ 26.11.2011 19:05) *

Не знаю, у меня, FPC нормально компилирует этот код (причем в любом режиме). А вот Turbo Pascal - отказывается. Для совместимости с TP можно заменить Length на High:

function menu(TA : byte; const items : array of string) : integer;
var
i : integer;
ch : char;
begin
TextAttr := TA;
clrscr;
for i := 0 to High(items) do
begin
gotoxy(11, 4 + i);
write(items[ i ]);
end;
gotoxy(12, 2);
write(' Your choice : ');
repeat
ch := readkey;
until (Ord(ch) - Ord('0')) in [1 .. High(items) + 1];
menu := Ord(ch) - Ord('0');
end;


почему то когда так сделал пропал пункт Exit,не скажете почему?
всё не надо я сделал

Сообщение отредактировано: INZA - 11.12.2011 19:00
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 24.05.2024 18:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"