Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
1

Меню

25.03.2009, 22:37. Показов 2194. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно сделать меню с такими пунктами:
0. Конец работы.
1. Введение и запись данных в файл.
2. Чтение данных из файла и выведение на экран.
3. Упорядочение данных в файле.
4. Бинарный поиск в файле по полю балл.
5. Создание индексного файла.
6. Упорядочение главного файла с помощью индексного.
7. Бинарный поиск данных в главном файле с помощью индексного.

При введении данных нужно вводить имя, факультет и балл.

Нужно как можно скорее, буду очень благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2009, 22:37
Ответы с готовыми решениями:

Меню
Помогите написать меню, пожалуста!!! uses crt; var s:string; i,k,j,a:integer; ...

Меню.
Всем привет:) Нам дали задание сделать графическое меню... У меня никак неполучается реализовать...

Меню
Всем привет, пожалуста, очень прошу подскажите, как в консольном приложении в дельфи создать меню,...

Меню
вот моя программа отображающая меню: uses crt; var s,s1,s2,s3,s4:string; x,y,q:integer;...

9
27 / 27 / 9
Регистрация: 23.03.2009
Сообщений: 63
25.03.2009, 23:25 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
procedure FrameWindow(x1,y1,x2,y2,frcolor,fon:integer);
      var x,y:integer;
          w,h:integer;
          lastattr:byte;
      begin
         lastattr:=textattr;
         window(x1,y1,x2,y2);
         textbackground(fon);
         clrscr;
         window(x1,y1,x2+1,y2);
         textcolor(frcolor);
         gotoxy(1,1);
         write('╔');
         w:=x2-x1+1;h:=y2-y1+1;
         for x:=1 to w-2 do write('═');
         write('╗');
         for y:=2 to h-1 do begin
            gotoxy(w,y);write('║');
            gotoxy(1,y);write('║');
            end;
         gotoxy(1,h);
         write('╚');
         for x:=1 to w-2 do write('═');
         write('╝');
         window(x1+1,y1+1,x2-1,y2-1);
         gotoxy(1,1);
         textattr:=lastattr;
      end;
function Menu(var l;x,y,num,fon,marker,text,text2:integer):integer;
      var list:array[1..2*maxint div sizeof(string)] of string[20] absolute l;
          max,k:integer;
          c:char;
          oldtext:word;
      begin
         oldtext:=textattr;
         textcolor(text);
         max:=0;
         for k:=1 to num do
            if length(list[k])>max then max:=length(list[k]);
         for k:=1 to num do
            while length(list[k])<max do
               list[k]:=list[k]+' ';
         framewindow(x,y,x+max+3,y+num+1,text,fon);
         textbackground(fon);
         gotoxy(1,1);
         textbackground(marker);
         textcolor(text2);
         write(' '+list[1]);
         textbackground(fon);
         textcolor(text);
         for k:=2 to num do
            begin
               writeln;
               write(' '+list[k])
            end;
         k:=1;
         repeat
            c:=readkey;
            case c of
            down:
               begin
                  gotoxy(1,k);
                  textbackground(fon);
                  textcolor(text);
                  write(' '+list[k]);
                  if k<num then k:=k+1
                     else k:=1;
                  gotoxy(1,k);
                  textbackground(marker);
                  textcolor(text2);
                  write(' '+list[k]);
               end;
            up:
               begin
                  gotoxy(1,k);
                  textbackground(fon);
                  textcolor(text);
                  write(' '+list[k]);
                  if k>1 then k:=k-1
                     else k:=num;
                  gotoxy(1,k);
                  textbackground(marker);
                  textcolor(text2);
                  write(' '+list[k]);
               end;
            esc:menu:=0;
            enter: menu:=k;
            end;
         until (c=esc)or(c=enter);
         window(1,1,80,25);
         textattr:=oldtext;
      end;
Здесь: l - это массив типа стринг из твоих пунктов.
х,у - коорд. левого верхнего угла меню
num - количество пунктов меню.
fon,marker,text,text2 - цвета фона, маркера(выделения) текста, текста под маркером соотв.
Поэкспериментируй.
Лучше всего упрятать это в модуль.
Размер массива тоже можешь сразу задать, без премудростей. Короче ковыряйся. Менюшка нормальная.

Добавлено через 21 минуту 17 секунд
И еще. Что-то он с кодировкой тупит.
Там где в скобках красным написана какая-то фигня
должны быть уголки для рамки....Примерно такие:
╔═╗
║ ║
╚═╝
0
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
25.03.2009, 23:43  [ТС] 3
ОГО! Чтото я ничего не могу понять.
Должно быть меню в котором тебе предлагают выбрать пункт из него, вводишь цифру и выполняется пункт. Должны выполняться все пункты, создаваться файлы, а я вообще не вижу команд создания файла, чтения из него и вообще я запустить не могу
Может я еще не так хорошо квалифицирован чтобы понять этот код.
0
27 / 27 / 9
Регистрация: 23.03.2009
Сообщений: 63
26.03.2009, 09:04 4
Здесь я привел тебе только меню. И меню это нормальное - работает с помощью стрелок, подсвечиваются пункты...
1
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
27.03.2009, 01:06  [ТС] 5
Я конечно благодарен за такой труд, но для меня это както слишком уж трудно понять, я бы поэксперементировал и разобрался бы что к чему если бы хоть мог запустить. Если не трудно вместо моих пунктов напиши чтонибудь,чтобы я мог запустить хотяб и выбрать эти пункты, а я потом разберусь и переделаю на свое.
0
27 / 27 / 9
Регистрация: 23.03.2009
Сообщений: 63
27.03.2009, 17:25 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
program menuuu;
uses crt;
 
   const list:array[1..9] of string[20]=('punkt1','punkt2','punkt3','punkt4','punkt5','punkt6',
   'punkt7','punkt8','punkt9');
   var n:integer;
procedure FrameWindow(x1,y1,x2,y2,frcolor,fon:integer);
      var x,y:integer;
          w,h:integer;
          lastattr:byte;
      begin
         lastattr:=textattr;
         window(x1,y1,x2,y2);
         textbackground(fon);
         clrscr;
         window(x1,y1,x2+1,y2);
         textcolor(frcolor);
         gotoxy(1,1);
         write('╔');
         w:=x2-x1+1;h:=y2-y1+1;
         for x:=1 to w-2 do write('═');
         write('╗');
         for y:=2 to h-1 do begin
            gotoxy(w,y);write('║');
            gotoxy(1,y);write('║');
            end;
         gotoxy(1,h);
         write('╚');
         for x:=1 to w-2 do write('═');
         write('╝');
         window(x1+1,y1+1,x2-1,y2-1);
         gotoxy(1,1);
         textattr:=lastattr;
      end;
function Menu(var l;x,y,num,fon,marker,text,text2:integer):integer;
      var list:array[1..2*maxint div sizeof(string)] of string[20] absolute l;
          max,k:integer;
          c:char;
          oldtext:word;
      begin
         oldtext:=textattr;
         textcolor(text);
         max:=0;
         for k:=1 to num do
            if length(list[k])>max then max:=length(list[k]);
         for k:=1 to num do
            while length(list[k])<max do
               list[k]:=list[k]+' ';
         framewindow(x,y,x+max+3,y+num+1,text,fon);
         textbackground(fon);
         gotoxy(1,1);
         textbackground(marker);
         textcolor(text2);
         write(' '+list[1]);
         textbackground(fon);
         textcolor(text);
         for k:=2 to num do
            begin
               writeln;
               write(' '+list[k])
            end;
         k:=1;
         repeat
            c:=readkey;
            case c of
            down:
               begin
                  gotoxy(1,k);
                  textbackground(fon);
                  textcolor(text);
                  write(' '+list[k]);
                  if k<num then k:=k+1
                     else k:=1;
                  gotoxy(1,k);
                  textbackground(marker);
                  textcolor(text2);
                  write(' '+list[k]);
               end;
            up:
               begin
                  gotoxy(1,k);
                  textbackground(fon);
                  textcolor(text);
                  write(' '+list[k]);
                  if k>1 then k:=k-1
                     else k:=num;
                  gotoxy(1,k);
                  textbackground(marker);
                  textcolor(text2);
                  write(' '+list[k]);
               end;
            esc:menu:=0;
            enter: menu:=k;
            end;
         until (c=esc)or(c=enter);
         window(1,1,80,25);
         textattr:=oldtext;
      end;
 
begin
   CLRSCR;
   n:=menu(list,30,6,4,black,green,white,black);
   writeln('Вы выбрали: ',list[n]);
   readln
 
end.
Вместо Writeln('Вы выбрали...
Можно писать:
Pascal
1
2
3
4
5
6
case n of:
1:Подпрограмма1;
2:Подпрограмма2;
3:Подпрограмма3;
......
9:halt; { выход}
пунктов - сколько угодно

Добавлено через 20 минут 30 секунд
замени 103 строку на:
n:=menu(list,30,6,9,black,green,white,black);
^
здесь количество твоих пунктов

Добавлено через 46 секунд
Замени в 103 строке 4 на 9 (Нужное количество пунктов)
1
nikas25
27.03.2009, 17:46 7
JoKeR_SPb здраствуй я смотрю ты в паскале шариш сможеш мне помоч
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
27.03.2009, 21:45  [ТС] 8
Строка 67
Пишет Unknow Identifier
Как исправить?
Подозреваю что и в строке 80 тоже такое будет выдавать.
0
27 / 27 / 9
Регистрация: 23.03.2009
Сообщений: 63
28.03.2009, 09:03 9
Сори. Добавь в начале:

Pascal
1
const up=#72;down=#80;
Это для управления курсором с помощью стрелок.
1
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
28.03.2009, 15:31  [ТС] 10
Пасиб, пришлось еще esc и enter в инете найти и дописать.
Только с рамкой там внатуре тупит, ну ничего, и без нее обойдусь.
Спасибо огромное!
0
28.03.2009, 15:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2009, 15:31
Помогаю со студенческими работами здесь

Меню :(
Здраствуйте. Прошу помочь мне разобраться с программой. Паскаль практически не знаю. Задали...

меню
здравствуйте не могли бы мне подсказать как организовать меню, а в частности интерактивную...

меню
Uses crt,base1; label 10; begin clrscr; 10: assign (a,'fff'); writeln (' МЕНЮ ');...

Вертикальное меню
Добрый день. При написании меню через CRT не могу осуществить выход из выбранного пункта. Для теста...

Создать меню
Надо создать меню в FreePascal. Вот прога к которой надо добавить меню. В меню нужно выбирать...

Меню из 3-х программ
program MENUSHE4ka; uses crt; type table = array of real; var n, m: integer;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru