Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.49 MB
Время: 0.103 c
1-1164870957
DVM
2006-11-30 10:15
2007.01.21
Как лучше такое реализовать? Отлов нажатий клавиш.


15-1167402317
zdm
2006-12-29 17:25
2007.01.21
И последний предсмертный видимо вопрос


15-1165922242
unknown
2006-12-12 14:17
2007.01.21
Хакерам удалось обойти активацию Windows Vista


2-1166697532
nickhilo
2006-12-21 13:38
2007.01.21
Линейка как в Word е.


15-1167247057
Vovan #2
2006-12-27 22:17
2007.01.21
Они такие разные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский