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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2009, 18:56   #1
Mishkaplus
 
Регистрация: 05.01.2009
Сообщений: 5
По умолчанию Помогите с программой

Задали программу и не могу решить, помогите плизз..

Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии у м от стены. Определить значение угла a между палкой и полом для значений х = k м и у, изменяющегося от 2 до 3 м с шагом h м.

Нужно под Delphi, Console Application.
Mishkaplus вне форума Ответить с цитированием
Старый 05.01.2009, 19:45   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию проверь

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,math;
var h:real;
k:real;
y:real;
ugol:array[0..100] of real;
i,j:integer;
mas:array[0..100] of real;

begin
try
writeln('vvedi k');
readln(k);
writeln('vvedi h');
readln(h);
i:=trunc(1/h);// количество элементов массива

for j := 1 to i do
begin
y:=2+h*j;
ugol[j]:= radTOgrad(arccos(s/k));
mas[j]:=y;
writeln('pri k =',k:4:4,' i shage h ',h:4:4, ' i y =',mas[j]:4:4 ,' ugol = ',ugol[j]:4:4);

end;
readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
readln
end.
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 05.01.2009 в 21:36. Причина: накосячил децл в первом варианте!!!!
maladoy вне форума Ответить с цитированием
Старый 05.01.2009, 19:57   #3
Mishkaplus
 
Регистрация: 05.01.2009
Сообщений: 5
По умолчанию

Большое спасибо!
Mishkaplus вне форума Ответить с цитированием
Старый 05.01.2009, 20:05   #4
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию последний вариант забери он вроде без косяков:)

Цитата:
Сообщение от Mishkaplus Посмотреть сообщение
Большое спасибо!
обращаися!!!!!!!!!!!!
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 05.01.2009, 21:22   #5
Mishkaplus
 
Регистрация: 05.01.2009
Сообщений: 5
По умолчанию

Переменная "y" не используется, при шаге отличном от 1 программа висит..
i:=trunc(1/h); смысла не имеет...
i:=trunc(h);

Последний раз редактировалось Mishkaplus; 05.01.2009 в 21:25.
Mishkaplus вне форума Ответить с цитированием
Старый 05.01.2009, 21:28   #6
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
Сообщение от Mishkaplus Посмотреть сообщение
Переменная "y" не используется, при шаге отличном от 1 программа висит..
i:=trunc(1/h); смысла не имеет...
i:=trunc(h);
при отличном в какую сторону ?????
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 05.01.2009, 21:35   #7
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

если шаг > 1 м тогда как это понимать " изменяющегося от 2 до 3 м с шагом h м.

"
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 05.01.2009, 22:19   #8
Mishkaplus
 
Регистрация: 05.01.2009
Сообщений: 5
По умолчанию

Может имеется ввиду вывод в цикле от 2х до 3х м. с шагом в h в этом промежутке.. тоесть 2, 2.1, 2.2 ... 3, или 2, 2.2, 2.4 ... 3. тоесть тот шаг который ты введешь.
Mishkaplus вне форума Ответить с цитированием
Старый 06.01.2009, 00:04   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да правильное решение было!
просто шаг h нужно вводить МЕНЬШЕ единицы!
вот, чуток подсократил/подправил!

Код:
program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils, math;
var h: extended;
  k: extended;
  y: extended;
  ugol:  extended;
begin
  try
    writeln('vvedi k');
    readln(k);
    writeln('vvedi h');
    readln(h);
    y := 2; {начальное значение}
    while y<=3 {конечное значение Y} do begin
      ugol := 180*arccos(y/k)/pi;
      writeln('pri k =', k:4:4,' y =', y:4:4, ' ugol = ', ugol:4:4);
      y := y + h;
    end;
  except
    on E: Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
  readln
end.
p.s.афигеть, но в Delphi5 функции RadToGrad и GradToRad дают КРАЙНЕ неточные значения!!!!
поэтому лучше переводить по формуле c 180 и PI (смотри код!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.01.2009, 14:09   #10
Mishkaplus
 
Регистрация: 05.01.2009
Сообщений: 5
По умолчанию

Проверил. все работает прекрасно. Спасибо большое!
Mishkaplus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой(( stan1k Фриланс 4 10.05.2008 16:16
помогите с программой 1234 Общие вопросы Delphi 6 05.03.2008 19:08
помогите с программой LexusSPb Фриланс 2 04.09.2007 16:29