Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизВ чем ошибка? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.073 c