Графическое меню в паскале - Pascal ABC
Формулировка задачи:
Здравствуйте, помогите создать графическое меню в паскале, выбор пункта стрелочками, можно и мышкой.
Решение задачи: «Графическое меню в паскале»
textual
Листинг программы
uses crt; {массив названий пунктов меню} const vybor:array[1..7] of string=('1-Треугольник', '2-Прямоугольник', '3-Круг', '4-Куб', '5-Квадрат', '6-Ромб', '7-Выход'); procedure Menyu(var k:byte;kol:byte); var kod: char; i:byte; begin clrscr; k:=1; gotoxy(1,1); repeat for i:=1 to kol do begin if i=k then begin textbackground(2); textcolor(1); end else begin textbackground(7); textcolor(0) end; gotoxy(1,i); write(vybor[i]); end; writeln; textbackground(15); writeln('Выход из меню клавиша Spase'); repeat kod:=readkey; until kod in [#32, #72, #80]; case kod of #72: begin {стрелка вверх} k:=k-1; if k=0 then k:=kol;{если верхний край, вниз} end; #80: begin {стрелка вниз} k:=k+1; if k>kol then k:=1;{если нижний край, вверх} end; end; until kod=#32; {Enter -выход} end; Procedure Treugolnik; var a,b,c,s,res:real; begin clrscr; write('Введите строну А: ');//qqq readln(a); write('Введите строну B: '); readln(b); write('Введите строну С: '); readln(c); s:= (a + b + c) / 2; res:= sqrt(s * (s - a) * (s - b) * (s - c)); //конечная Формула по которой мы узнали площадь треугольника. writeln('Площадь треугольника: ', res); readln; end; Procedure Preamougolnik; var a,b,res:real; begin clrscr; write('Введите строну А: '); readln(a); write('Введите строну B: '); readln(b); res:= a * b; //Формула получения площади прямоугольника writeln('Площадь прямоугольника: ', res); readln; end; Procedure Krug; var d,res:real; begin write('Введите диаметр круга: '); //Вводим диаметр круга readln(d); res:= pi * sqr(d) / 4; //ПИ , я ввел в начале программы в const , т.к. оно не изменяется. writeln('Площадь круга: ', res); readln; end; Procedure Kub; var a,res:real; begin clrscr; write('Введите ребро куба: '); readln(a); res:=a*a*a; writeln('Площадь куба: ', res); readln; end; Procedure Kvadrat; var a,res:real; begin clrscr; write('Введите сторону квадрата: '); readln(a); res:=a*a; writeln('Площадь квадрата: ', res); readln; end; Procedure Romb; var a,b:real; begin clrscr; write('Введите длину диагонали A: '); readln(a); write('Введите длину диагонали B: '); readln(b); writeln('Площадь ромба равна: ', a * b / 2:0:4);// цифры ограничивают вывод десятичных чисел readln; end; var k:byte; begin repeat Menyu(k,7);{выводим меню} case k of{выбираем стрелками действие} 1:Treugolnik; 2:Preamougolnik; 3:Krug; 4:Kub; 5:Kvadrat; 6:Romb; 7:exit; end; until k=7; end.
Объяснение кода листинга программы
В данном коде представлен графический интерфейс для выбора геометрической фигуры и выполнения соответствующих вычислений.
- Переменная
vybor
содержит массив из 7 строк, представляющих названия пунктов меню. Каждый пункт соответствует определенной геометрической фигуре. - Переменная
k
используется в функцииMenyu
для отслеживания текущего выбранного пункта меню. - В функции
Menyu
происходит чтение координат с клавиатуры и обработка этих координат в соответствии с выбранным пунктом меню. - В функции
Treugolnik
происходит ввод значений сторон треугольника, вычисление площади и вывод результата. - В функции
Preamougolnik
происходит ввод значений сторон прямоугольника, вычисление площади и вывод результата. - В функции
Krug
происходит ввод диаметра круга, вычисление площади и вывод результата. - В функции
Kub
происходит ввод ребра куба, вычисление площади и вывод результата. - В функции
Kvadrat
происходит ввод стороны квадрата, вычисление площади и вывод результата. - В функции
Romb
происходит ввод длин диагоналей ромба, вычисление площади и вывод результата. При выборе пункта меню7
происходит выход из программы.