Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

В чем ошибка?   Найти похожие ветки 

 
zol   (2007-01-02 21:14) [0]

Подскажите что я делаю неправильно. Нужно вычислить площадь триугольника(S=(a*b*sinC)/2). C -угол между a и b. Делал я так:
 procedure TriugICrug2(a, b,C:real; var S: real);
begin
S:=(a*b*sin(C))/2;
end;


procedure TForm1.Triug2ActExecute(Sender: TObject);
var
  k,rez: real;
  R: Extended;
  C1,mes: string;
begin
  R := Sin(DegToRad(strtoint(Edit14.Text)));
  Str(R:6:3, C1);
  rez:=StrToInt(C1); //Это я пытался чтото химичить
TriugICrug2(StrToFloat(Edit10.Text),StrToFloat(Edit11.Text),rez,k);
mes:= FloatToStrF(k, ffGeneral, 4, 2);
Label6.Caption:= mes;
end;


 
Джо ©   (2007-01-03 07:28) [1]

Для начала предлагаю записать все по-человечески, т.е., отделить мух от котлет:

// вначале получаем значения из Эдит"ов, переводим их во float-представление
// и записываем в локальные переменные
 Var1 := StrToFloat(Edit1.Text);
 Var2 := StrToFloat(Edit2.Text);
 ...

// Затем выполняем над этими переменными нужные действия:
 Var3 := Var1 * Var2;
 ...

// Передаем их в нужные функции и сохраняем результат в нужных переменных:
 Var4 := Triangle (Var3)

// И отображаем конечный результат в пользовательском интерфейсе:
 Edit114.Text := FloatToStr(Var4)


Иначе выходит такая каша, что смотреть противно, а разбираться тем более.

П.С. Зачем этот ужас:
procedure TriugICrug2(a, b,C:real; var S: real);
?
Не сделать ли просто:
function TriugICrug2(a, b,C:real): Real;

?
Куда удобнее.


 
Chuk & Gek ©   (2007-01-03 10:43) [2]

Юзай формулу Герона
S=sqrt(p(p-a)(p-b)(p-c)), p-полупериметр


 
Плохиш ©   (2007-01-03 11:12) [3]


> zol   (02.01.07 21:14)  

Странно, пишешь C -угол между a и b, а подставляешь R := Sin(DegToRad(strtoint(Edit14.Text)));?


 
zol   (2007-01-03 16:07) [4]


> Джо ©   (03.01.07 07:28) [1]

Получаетс я что нужно так?:
procedure TForm1.Button1Click(Sender: TObject);
var
Var1,Var2,Var3,Var4: real;
begin
Var1 := StrToFloat(Edit1.Text);
Var2 := StrToFloat(Edit2.Text);
Var3 := Var1 * Var2;
Edit114.Text := FloatToStr(Var4)
end;



> Chuk & Gek ©   (03.01.07 10:43) [2]

Формулу Герона я тоже использую, только в другом случае.


> Плохиш ©   (03.01.07 11:12) [3]

Пользователь вводит уже данный угол, а не находит его между двумя прямыми триугольника, т.е. сразу дано что , к примеру, С=30*
_______________________________________________________
Хотя я тут такого напорол, что наверняка всё неправильно.


 
Джо ©   (2007-01-03 18:03) [5]

> [4] zol   (03.01.07 16:07)
>
> > Джо ©   (03.01.07 07:28) [1]
>
> Получаетс я что нужно так?:

Получается, что не нужно мешать все в одну кучу.


 
Плохиш ©   (2007-01-03 19:21) [6]


> zol   (03.01.07 16:07) [4]
>
> > Плохиш ©   (03.01.07 11:12) [3]
>
> Пользователь вводит уже данный угол, а не находит его между
> двумя прямыми триугольника, т.е. сразу дано что , к примеру,
>  С=30*

О да, пользователь вводит угол, ты находишь синус этого угла и затем подставляешь этот результат в качестве C в свою формулу, после чего удивляешься, что результат не соответствует ожидаемому :-) Ну, ну, продолжай биться об стенку...


 
zol   (2007-01-03 19:32) [7]


> Плохиш ©   (03.01.07 19:21) [6]

Тоесть здесь
TriugICrug2(StrToFloat(Edit10.Text),StrToFloat(Edit11.Text),rez,k);
вместо rez нужно  не сам угол?


 
Плохиш ©   (2007-01-04 11:14) [8]


> zol   (03.01.07 19:32) [7]


>  procedure TriugICrug2(a, b,C:real; var S: real);
> begin
> S:=(a*b*sin(C))/2;
> end;
>
> procedure TForm1.Triug2ActExecute(Sender: TObject);
> var
>   k,rez: real;
>   R: Extended;
>   C1,mes: string;
> begin
>   R := Sin(DegToRad(strtoint(Edit14.Text)));
>   Str(R:6:3, C1);
>   rez:=StrToInt(C1); //Это я пытался чтото химичить
> TriugICrug2(StrToFloat(Edit10.Text),StrToFloat(Edit11.Text),rez,k);
> mes:= FloatToStrF(k, ffGeneral, 4, 2);
> Label6.Caption:= mes;
> end;

А теперь расскажи, что же ты там подставляешь?


 
zol   (2007-01-04 13:26) [9]


> Плохиш ©   (04.01.07 11:14) [8]

Расскажите как нужно правильно все представлять и писать на этом примере. Хоть будет с чем потом сравнивать.


 
SergGG ©   (2007-01-04 13:48) [10]

Пожалею тебя... Держи

function TriugICrug2(a, b,C:real):Real;
begin
 Result:=(a*b*sin(C))/2;
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,C,Res:Real;
begin
 a:=StrToFloat(LabeledEdit1.Text);
 b:=StrToFloat(LabeledEdit2.Text);
 C:=DegToRad(StrToFloat(LabeledEdit3.Text));
 Res:=TriugICrug2(a,b,C);
 Label1.Caption:=FloatToStr(Res);
end;


 
zol   (2007-01-05 18:02) [11]


> SergGG ©   (04.01.07 13:48) [10]

Спасибо.


 
Palladin ©   (2007-01-05 18:04) [12]

Ощущение медяка бомжу в кружку :)


 
zol   (2007-01-05 18:07) [13]


> Ощущение медяка бомжу в кружку :)

Угу. Через 2 дня..


 
Правильный Вася   (2007-01-05 18:09) [14]


> Угу. Через 2 дня..
могли бы вообще не дать, думать не хочешь, работать тоже
только похмеляться за чужой счет


 
zol   (2007-01-05 18:11) [15]


> могли бы вообще не дать, думать не хочешь, работать тоже
> только похмеляться за чужой счет

:(


 
Джо ©   (2007-01-05 18:35) [16]

Да, думать самому сложно, оказывается. Даже странно, хотя «рецепт» отделения котлет от мух был дан еще в посте [1] (!). По этому же рецепту приготовлен и код в [10]. Автору темы стоит серьезно задуматься над выбором профессии, вероятно. IMHO.



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.058 c
6-1156147512
pvi
2006-08-21 12:05
2007.01.21
Ограничение mailto на тело письма


15-1166776840
ocean
2006-12-22 11:40
2007.01.21
Есть ли жизнь после смерти?


2-1167913967
Chaval
2007-01-04 15:32
2007.01.21
Проблема с использованием функции GetDriveType


15-1167812243
Footballer
2007-01-03 11:17
2007.01.21
Intenet Explorer 7.0


2-1168005405
Галинка
2007-01-05 16:56
2007.01.21
Как работать с юникодом