Форум программистов, компьютерный форум CyberForum.ru

Площадь многоугольников - C++

Восстановить пароль Регистрация
 
12345678
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
19.09.2012, 19:24     Площадь многоугольников #1
Дана задача: Компонент ListBox содержит названия правильных многоугольников. Составить программу, вычисляющую площадь выбранного многоугольника по введенной длине стороны.

Нашла формулу, по которой можно вычислить площадь любого правильного многоугольника - S= (na^2)/(4 tan⁡〖(180/n)〗 ) где n - количество сторон, а - длина стороны

Текст программы:
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b, cm2, n;
switch (ListBox1->ItemIndex)
{case 0: n=3;break;
case 1: n=4;break;
case 2: n=5;break;
case 3: n=6;break;
case 4: n=7;break;
case 5: n=8;break;
case 6: n=9;break;
case 7: n=10;break;
}
a=StrToFloat(Edit1->Text);
b=180/n;
cm2=(n*(pow(a,2)))/(4*(tan(b))) ;
Label3->Caption="Площадь многоугольника " +
FloatToStrF(cm2,ffFixed,6,3) + " см ";
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListBox1->ItemIndex=0;
}
//---------------------------------------------------------------------------
В итоге программа работает, но считает не правильно. Например, когда выбираешь длину 5 и многоугольник квадрат, программа выдает число 15, хотя должно быть 25.

Подскажите, что не так в программе? Заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fler
207 / 209 / 9
Регистрация: 20.12.2011
Сообщений: 635
19.09.2012, 19:41     Площадь многоугольников #2
предположу, что стоит использовать не 180/n, а M_PI/n, т.к. тригонометрические функции принимают аргументы не в градусах, а в радианах
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
19.09.2012, 19:43     Площадь многоугольников #3
я бы посоветовал вместо 180 использовать 3.1415926
12345678
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
19.09.2012, 19:45  [ТС]     Площадь многоугольников #4
Да!Это помогло! Спасибо большое)
Yandex
Объявления
19.09.2012, 19:45     Площадь многоугольников
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru