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

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

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

> Объясните как реализовать выход из процедуры обратно в меню, всё в нутри
сообщение
Сообщение #1


Бывалый
***

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

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


Необходимо оформить программу следующим образом :
Есть главное меню,выбирает из меню нужный нам пункт,выполняется процедура,после чего ДОЛЖНО все вернутся обратно в меню для выбора следующего пункта
вот листинги модуля и гл. программы :
 unit unit1;
interface
procedure vivod;
implementation
uses graph,crt;
var
gd,gm,a,b,i,k:integer;
const
f:fillpatterntype= ($f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7);
procedure vivod;
begin
a:=0;
b:=0;
settextjustify(2,2);
settextstyle(1,0,4);
outtextxy(600,5,'WORK MODULE GRAPH');
settextjustify(2,2);
settextstyle(1,0,3);
outtextxy(500,30,'Case of Shtrih');
settextjustify(lefttext,toptext);
settextstyle(0,0,0);
for i:=0 to 5 do
begin
setfillstyle(i,blue);
arc(120+a,90+b,210,150,15);
line(120+a,90+b,108+a,83+b);
line(120+a,90+b,108+a,98+b);
floodfill(128+a,90+b,white);
a:=a+50;
b:=b+60;
end;
a:=0;
b:=0;
for i:=6 to 11 do
begin
setfillstyle(i,blue);
arc(300+a,90+b,210,150,15);
line(300+a,90+b,287+a,83+b);
line(300+a,90+b,287+a,98+b);
floodfill(305+a,90+b,white);
a:=a+50;
b:=b+60;
end;
k:=3;
arc(120,300,210,150,40);
setfillstyle(12,blue);
setfillpattern(f,white);
line(120,300,85,279);
line(120,300,85,320);
floodfill(120,304,white);
readkey;
end;
begin
gd:=0;
initgraph(gd,gm,'D:\pascal\tp7\bgi');
cleardevice;

end.


гл. программа :

Program main7;
uses crt,unit1;
var
a:integer;
begin
clrscr;
repeat
textbackground(0);
clrscr;
window(50,1,80,5);
textbackground(11);
clrscr;
writeln;
writeln;
writeln(' TEXT MODE');
window(15,10,65,21);
repeat
textbackground(14);
clrscr;
writeln('CASE');
writeln('1 - type of line');
writeln('2 - type of shtrix');
writeln('3 - reklama');
writeln('4 - Grafik');
writeln('5 - diagramma');
writeln('6 - gistogramma');
writeln('7 - uzor');
writeln('8 - multik');
writeln('9 - vihod');
readln(a);
until a in [1..10];
case a of
9:;
1:vivod;
{2:shtrix_packman;
3:advertisement;
4:graphik_sinus;
5:circle_diagramm;
6:stolbik_diagram;
7:holy_copypaste;
8:real_packman;}
else
end;
until a=9;
end.

в Гл. программе ошибка с циклом,прошу ,пожалуйста,объясните как сделать возврат в меню.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ты почему, находясь в графическом редиме, используешь процедуры, предназаначенные для режима текстового? Так не пойдет... Смотри, что надо сделать:

1) изменить немного процедуру Vivod (она у тебя графическая, так что переходим в самом начале в граф. режим...)
procedure vivod;
begin
setgraphmode(gm);
... { Дальше - без изменений }
end;


2) подправить основную программу (внутри самого внешнего Repeat/Until выход в текст. режим, чтобы можно было пользоваться всеми процедурами модуля CRT):
Program main7;
uses crt, graph, unit1;
var
a:integer;
begin
repeat
restorecrtmode; { <--- Вот основное изменение !!! }
textbackground(0);
clrscr;
window(50,1,80,5);
textbackground(11);
clrscr;
writeln;
writeln;
writeln(' TEXT MODE');
window(15,10,65,21);
repeat
textbackground(1); { <--- Ну и здесь: textbackground не принимает параметры больше 7 }
clrscr;
writeln('CASE');
writeln('1 - type of line');
writeln('2 - type of shtrix');
writeln('3 - reklama');
writeln('4 - Grafik');
writeln('5 - diagramma');
writeln('6 - gistogramma');
writeln('7 - uzor');
writeln('8 - multik');
writeln('9 - vihod');
readln(a);
until a in [1..10];

case a of
9: ;
1: vivod;
{
2:shtrix_packman;
3:advertisement;
4:graphik_sinus;
5:circle_diagramm;
6:stolbik_diagram;
7:holy_copypaste;
8:real_packman;
}
else
;
end;
readln;
until a=9;

end.
Вот так вот...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 30.04.2024 17:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name