Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чем ошибка? [D7, XP]


zol ©   (2007-01-02 21:14:00) 

Подскажите что я делаю неправильно. Нужно вычислить площадь триугольника(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-05 18:35:00) [1]

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


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


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

:(


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


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


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


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

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


Palladin   (2007-01-05 18:04:00) [5]

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


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


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

Спасибо.


SergGG   (2007-01-04 13:48:00) [7]

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

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-04 13:26:00) [8]


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

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


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


> 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-03 19:32:00) [10]


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

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


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


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

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


Джо   (2007-01-03 18:03:00) [12]

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

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


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


> Джо ©   (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 11:12:00) [14]


> zol   (02.01.07 21:14)  

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


Chuk & Gek   (2007-01-03 10:43:00) [15]

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


Джо   (2007-01-03 07:28:00) [16]

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

// вначале получаем значения из Эдит'ов, переводим их во 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;

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо