AntonTer | Дата: Пятница, 21.03.2008, 03:12 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 1
Статус: 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
Статус: 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
Скажем дружно- нафиг нужно!
|
|
| |