Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 20:47   #1
gree
Пользователь
 
Аватар для gree
 
Регистрация: 28.10.2008
Сообщений: 34
Сообщение Помогите составить программу на Delphi.. (1 курс)


Как я понял программа должна быть с 2 условиями, ну и соответственно для выполнения (невыполнения) этих условий нужно выполнить действия.. Задача с очень непонятным условием, толи x,y,z это угловые коэфициенты (тоесть при проверке условия: Образуют ли углы x,y,z треугольник мы в сумме должны получить 180)...... А второе условия я незнаю как задать.... в общем ХЭЛП!!!
Быть подлинно здравомыслящим уже означает много знать..
gree вне форума Ответить с цитированием
Старый 28.10.2008, 21:06   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.У Вас четко написано, что x,y,z- величины углов.
2. Если в школу ходили хотя бы через день, то все-равно должны знать, что тупоугольным треугольником называется такой, у которого один угол больше 90 градусов.
3.Поскольку углы заданы в радианах, то 90 градусов это pi/2 радиан.
4. Т.к. сумма углов в треугольнике при вещественных числах не может быть ровно pi, то применяется понятие погрешности. Ввводится погрешность, например е=0,00000001. И пишем, если abs(x+y+z-pi)<e, то это треугольник.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 11:45   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

puporev, тысячу извинений, коллега.
Цитата:
Сообщение от puporev
Поскольку углы заданы в радианах
- простите, а это из чего следует? Раза три прочитал первый пост, но не понял, откуда Вы сделали вывод... :-( я проглядел что-то?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2008, 11:49   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Действительно, погорячился. Могут быть и градусы.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 21:33   #5
gree
Пользователь
 
Аватар для gree
 
Регистрация: 28.10.2008
Сообщений: 34
По умолчанию

вот такие пираги... и вчём считать?

Короче вопрос таков, как прописать последние 3 условия при которых мы проверяем каждый угол на соответствие!? О_о или это можно вообще по другому сделать??
вот блок схема, которая как я понимаю должна быть...

и вот наковырял кое что с градусами, это всё.. остальное я не понимаю как писать.. хэлп ми..:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var: x, y, z: real;
begin
x:= StrToFloat(Edit1.Text);
 y:= StrToFloat(Edit2.Text);
  z:= StrToFloat(Edit3.Text);
if x+y+z=180 then 
...
begin
end;

end.
Быть подлинно здравомыслящим уже означает много знать..

Последний раз редактировалось gree; 29.10.2008 в 23:02. Причина: :аничирП .20:32 в яндогеС ,eerg ьсолавориткадер зар йинделсоП
gree вне форума Ответить с цитированием
Старый 29.10.2008, 21:41   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

??? Считай в градусах. Это вообщем-то не важно. Задача на тему правильного сравнения вещественных чисел, то что сумма трех вещественных чисел не может быть равна целому числу, но может быть сколь угодно близкой к нему.
puporev вне форума Ответить с цитированием
Старый 29.10.2008, 23:32   #7
gree
Пользователь
 
Аватар для gree
 
Регистрация: 28.10.2008
Сообщений: 34
По умолчанию

ну я понимаю, но не знаю как записать 3 подряд идущих условия((
Быть подлинно здравомыслящим уже означает много знать..
gree вне форума Ответить с цитированием
Старый 30.10.2008, 08:23   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я бы написал так. Мне кажется так понятнее.
Код:
var x,y,z,e:real;
     b:boolean; //да или нет
begin
repeat
write('x=');readln(x);
write('y=');readln(y);
write('z=');readln(z);
until (x>0)and(x<180)and(y>0)and(y<180)and(z>0)and(z<180);//проверяем ввод данных (0,180)
e:=0.000001; //вводим погрешность
if abs(x+y+z-180)>e then //если сумма углов не равна 180, то не треугольник
   begin
    write('Ne treugolnik!');
    readln;
    halt; //завершаем программу
   end
else
   begin
     write('Treugolnik '); //если почти равна, разница менеее погрешности
     b:=true; //да
   end;
if b and ((x>90)or(y>90)or(z>90))then write('tupougolnyj!')//если да и один угол тупой, тупоугольный, иначе нет
else write('ne tupougolnyj!');
readln
end.
puporev вне форума Ответить с цитированием
Старый 30.10.2008, 15:13   #9
gree
Пользователь
 
Аватар для gree
 
Регистрация: 28.10.2008
Сообщений: 34
По умолчанию

ок, спасиб.. Но думаю нам без погрешности нужно... но сделаю так и так... СПС!!!
=============================
Кароч ещё такой вопрос, вот на счёт Истины (True).. На delphi почемуто не катит как на паскале((
Вот мой код на деле :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,e:real;
b:boolean;
begin
repeat
x:= StrToFloat(Edit1.Text);
 y:= StrToFloat(Edit2.Text);
  z:= StrToFloat(Edit3.Text);
until (x>0)and(x<180)and(y>0)and(y<180)and(z>0)and(z<180);
e:=0.000001;
if abs(x+y+z-180)>e then
   begin
    label1.Caption:='Это не треугольник.';
   end
else
   begin
     label1.Caption:='Это треугольник.'
end;
if b and ((x>90)or(y>90)or(z>90))then label2.Caption:='Этот треугольник тупоугольный.'
else label2.Caption:='Этот треугольник не тупоугольный.';

end;

end.
Хотя без b прёт, но получается белеберда))
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,e:real;

begin
repeat
x:= StrToFloat(Edit1.Text);
 y:= StrToFloat(Edit2.Text);
  z:= StrToFloat(Edit3.Text);
until (x>0)and(x<180)and(y>0)and(y<180)and(z>0)and(z<180);
e:=0.000001;
if abs(x+y+z-180)>e then
   begin
    label1.Caption:='Это не треугольник.';
   end
else
   begin
     label1.Caption:='Это треугольник.'
end;
if ((x>90)or(y>90)or(z>90))then label2.Caption:='Этот треугольник тупоугольный.'
else label2.Caption:='Этот треугольник не тупоугольный.';

end;

end.
чё делать?
Быть подлинно здравомыслящим уже означает много знать..

Последний раз редактировалось gree; 30.10.2008 в 16:49.
gree вне форума Ответить с цитированием
Старый 30.10.2008, 17:46   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вы хоть переписать-то по человечески можете, если смысла не понимаете. Делфи, Паскаль, еще про компьютер пожалуйтесь, вместе поплачем. А что же про кривые руки то никак не вспомним?
У меня
Код:
else
   begin
     write('Treugolnik '); //если почти равна, разница менеее погрешности
     b:=true; //да
   end;
У Вас
Код:
else
   begin
     label1.Caption:='Это треугольник.'
end;
Разницу чуствуете?

Цитата:
Но думаю нам без погрешности нужно
Ну, если у Вас другие законы математики, до удачного плавания.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить программу neomaximus Помощь студентам 3 14.06.2008 10:40
В среде Delphi составить программу (процесс), который паралельно запускает два потока (нити) metamfetamin Помощь студентам 9 06.11.2007 15:26
Помогите составить программу через Delphi Рина8807 Помощь студентам 1 01.10.2007 19:59