Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Создание меню, построение изображения.
AntonTerДата: Пятница, 21.03.2008, 03:12 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 1
Репутация: 0
Замечания: 0%
Статус: Offline
Вместо меню мне осталось сделать программу для вычисления площади и периметра фигур !!!
Вот условие задачи: Разработать программу определения площади, периметра у фигур: произвольный четырёхугольник(известны координаты вершин), параллелограмм(известны две стороны), ромб(известна сторона), квадрат(известна сторона). Вот исходний текст программы для создания меню:
program ex;
uses crt;
var npos,i:integer;
ch1,ch2:char;
type
win=record
x1,y1,x2,y2:word;
text:string[8];
end;
const menu:array[1..4] of win=
((x1:5;y1:4;x2:15;y2:4; text:'new'),
(x1:5;y1:5;x2:15;y2:5; text:'open'),
(x1:5;y1:6;x2:15;y2:6; text:'save'),
(x1:5;y1:7;x2:15;y2:7; text:'exit'));
procedure DrawWin(w:win;attr:byte);
begin
with w do
begin
textattr:=attr;
window(x1,y1,x2,y2);
ClrScr;
GoToXY(2,1);
write(text);
end;
end;
procedure DrawMenu(npos:integer);
begin
ClrScr;
for i:=1 to 4 do
if i=npos then DrawWin(menu[i],94)
else DrawWin(menu[i],30);
end;
begin
npos:=1;
DrawMenu(npos);
repeat
ch1:=readkey;
if ch1=#0 then ch2:=readkey;
case ch1 of
#0:case ch2 of
#72:begin
if npos>1 then
begin
DrawWin(menu[npos],30);
npos:=npos-1;
DrawWin(menu[npos],94);
end;
end;
#80:begin
if npos<4 then
DrawWin(menu[npos],30);
npos:=npos+1;
DrawWin(menu[npos],94);
end;
end;
end;
#13:begin
window(1,1,80,25);
textattr:=7;
ClrScr;
case npos of
1:begin
write('Vipolnayetsa punkt',menu[npos].text);
readln;
end;
2:begin
write('Vipolnayetsa punkt',menu[npos].text);
readln;
end;
3:begin
write('Vipolnayetsa punkt',menu[npos].text);
readln;
end;
end;
DrawMenu(npos);
end;
end;
until(ch1=#27) or ((ch1=#13)and(npos=4));
window(1,1,80,26);
textattr:=7
ClrScr;
end.
 
AlexanderДата: Суббота, 22.03.2008, 02:22 | Сообщение # 2
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Ну что тут скажешь, учите матчасть))
Quote
произвольный четырёхугольник(известны координаты вершин)

Для любого выпукло четырёхугольника справедлива следуюдая формула:
S=0.5 * D1 * D2 * sin(a)
Где S-площадь четырёхугольника, D1 и D2- диагонали, a- угол между диагоналями.
Периметр- это сумма длин всех сторон. Длина через координаты находится очень просто:
L=sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) )
Quote
параллелограмм(известны две стороны)

Ну с точки зрения математики тут трудно выбрать между нахождением площади через высоту и синус между сторонами, но с точки зрения программирования тут можно вычислять также, как и для обычного четырёхугольника. Разумеется сначала вы должны спроектировать параллелограмм на координатную плоскость(знания длин сторон вам хватит).
Периметр... 2*(a+b)
Quote
ромб(известна сторона)

Периметр 4*a, площадь как и параллелограмма, только тут ВСЕ стороны равны. Тоже просто проектируете на ось(вариантов ромба или параллелограмма по заданным длинам можно нарисовать бесчисленное множество, но площадь будет всегда одинакова)
Quote
квадрат(известна сторона)

P=4*a
S=a


Скажем дружно- нафиг нужно!
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;