IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Pascal, Угол между прямой и положительным направлением оси оХ
Буду
сообщение 1.10.2008, 6:41
Сообщение #1


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Задача наверное покажется лёгкой-лёгкой, кому-то, но я что-то вот никак.
Исходная задача:
1. по данным коэффициентам уравнения прямой линии на плоскости (Ах+Ву+С=0) должен вычисляться угол, образуемый этой прямой с положительным направлением оси оХ (полагается, что А<>0, В<>0).
2. доработать программу так, чтобы выполнялась проверка на допустимость вводимых данных, а так же учитывался случай В=0, при А<>0 и определялось, проходит ли заданная коэффициентами уравнения прямая через начало координат.

Формулу нашла для вычисления угла -tg(a/b), вот только если решать дальше, без с, то ничего хорошего не выходит.

Помогите, пожалуйста, кто чем может....
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 1.10.2008, 7:12
Сообщение #2


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



а угол вычислять в пределах от 0 до 2pi , или от -pi до pi ?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 1.10.2008, 7:18
Сообщение #3


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Условия не стоит такого, вообще-то, но мне думается 0 до 2pi.. Хотя опять же, там же прямая и плоскость, а не прямая и окружность..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 1.10.2008, 7:21
Сообщение #4


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



если от 0 до 360 то вот такие условия нужно задать:
если A>0 , B>=0, то угол arctg(B/A)+pi/2
если A<0, B>=0 то угол pi/2-arctg(B/A)
если A<0, B<0то угол pi/2+arctg(B/A)
если А>0, B<0 то 3pi/2-arct(y/x)
если x=0, y<>0 то 0 или 2(pi)n


т.е A и B определяют вектор перпендикулярный данной прямой
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 1.10.2008, 7:25
Сообщение #5


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Вот в том то и дело, что условий много. А от нас требуют, чтоб решили всё в одно условие.
Я когда первую часть сдала, сказали, что верно:
read(a,b,c):
writeln('rad=',-1*(a/b));
но - там с не учитывается вообще т.е. по умолчанию 0, а во второй части уже нужно проверку С делать. Там получится, прям.проходит через нач. коорд., если с=0, а угол в любом случае равен 90 градусов, если в=0 (во всех случаях а<>0), вот только не могу придумать как в одно условие записать это всё...может это вообще не верно..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 1.10.2008, 7:48
Сообщение #6


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



Цитата(Буду @ 1.10.2008, 13:25) *

Я когда первую часть сдала, сказали, что верно:
read(a,b,c):
writeln('rad=',-1*(a/b));

writeln('rad=',-1*(a/b)); - но это же не угол между прямой и осью 0x ?


в одно условие что то я не соображу как(

Цитата(Буду @ 1.10.2008, 13:25) *

Там получится, прям.проходит через нач. коорд., если с=0,

ну верно, если c=0, то проходит через начало координат
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Тролль
сообщение 1.10.2008, 8:58
Сообщение #7


Доцент
******

Группа: Преподаватели
Сообщений: 2 964
Регистрация: 23.2.2007
Город: Москва
Учебное заведение: МГУ



Ну вообще-то угол между прямой и положительным направлением оси Ох находится между 0 и pi.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 1.10.2008, 10:41
Сообщение #8


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



ой ..точно, куда меня понесло)))))
тогда pi/2+arctg(B/A) - формула для угла
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 1.10.2008, 13:24
Сообщение #9


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Цитата
тогда pi/2+arctg(B/A) - формула для угла


а как же С?..
Как тогда условие поставить?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Тролль
сообщение 1.10.2008, 13:33
Сообщение #10


Доцент
******

Группа: Преподаватели
Сообщений: 2 964
Регистрация: 23.2.2007
Город: Москва
Учебное заведение: МГУ



С не влияет на угол наклона.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 1.10.2008, 13:51
Сообщение #11


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Тогда нужно поставить условия:
b=0 and c=0 or b<>0 and c=0 - при этом будет считаться угол и будет написано, что прямая прох.через нач.координат.
А в else будет просто рассчёт угла...так?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 1.10.2008, 15:05
Сообщение #12


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



При С=0 прямая проходит через начало координат.
При A=0 и B<>0 прямая параллельна оси Ox.
При A<>0 и B=0 прямая перпендикулярна оси Ox.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 1.10.2008, 15:38
Сообщение #13


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



А по условию всегда не равно 0...
Чёт я теперь вообще запуталась..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 1.10.2008, 15:58
Сообщение #14


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Код
readln(a, b, c);
if (a<>0) or (b<>0) then
begin
  if a=0 then
    writeln(0)
  else
    writeln(pi/2+arctan(b/a));
  if c=0 then
    writeln('Прямая пересекает начало координат');
end;

Если a=0 и c<>0, то прямая не пересекает Ox, а если a=0 и с=0, то лежит на Ox.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 2.10.2008, 16:48
Сообщение #15


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Код
if (b=0) and (c=0) or (b<>0) and (c=0) then
begin
Writeln('Pryamaya prohodit cherez nachalo koordinat');
writeln('ugol raven ');
writeln('Rad=',pi/2+arctan(b/a));
writeln('Gr=',(((pi/2+arctan(b/a)))/180));
end
else
begin
writeln('ugol raven ');
writeln('Rad=',pi/2+arctan(b/a));
writeln('Gr=',(((pi/2+arctan(b/a)))/180));
end;

Проверьте, пожалуйста?.. а то как-то там совсем даже не получается, что при b=0 угол равен 90 градусам..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 2.10.2008, 17:54
Сообщение #16


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Цитата
if (b=0) and (c=0) or (b<>0) and (c=0) then

Вот здесь точно лишнее условие. Проще написать "if c=0 then"
b в любом случае либо равно 0, либо не равно 0.
И есть одна ошибочка при переводе в градусы. Нужно поделить на pi и умножить на 180.
writeln('Gr=',(((pi/2+arctan(b/a)))/pi*180));
Тогда получится 90 градусов (IMG:style_emoticons/default/smile.gif)
Можно даже написать, скажем writeln('Gr=',(((pi/2+arctan(b/a)))/pi*180):5:5);
Тогда будет точно видно что это 90 градусов (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 2.10.2008, 20:10
Сообщение #17


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Ваааааа!!!!!!!! СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Правда у этой задачи есть ещё запутанное продолжение..можно спросить?..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 3.10.2008, 1:09
Сообщение #18


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Спросить конечно можно (IMG:style_emoticons/default/wink.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 4.10.2008, 9:09
Сообщение #19


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



=)
Далее по условию задачи нужно полученную программу модифицировать так, "чтоб автоматически осуществлялись многократные решения задачи при изменении одного из исходных данных в заданном диапазоне. Шаг изменения аргумента должен быть высчитан так, чтобы число повторений цикла лежало в диапазоне от 15 до 20 (исходная переменная, значение которой должно изменяться, определяется студентом самостоятельно).
Результаты выводить в виде таблицы:
аргумент х0 |Длина |Площадь|Комментарий
1.0 |12.89 |345.77 |точка на окружности
1.2 |17.90 |785.42 |точка вне окружности
... |... |... |...


Что-т не пойму с какой стороны её начать решать о_О Вроде бы как через while..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 5.10.2008, 10:08
Сообщение #20


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Да, нужно сделать примерно так:
db:= 0; //Начало диапазона
de:= 10; //Конец диапазона
cv:= db; //Текущее значение
while (cv<=de) do
begin
//Сюда вставить Ваш исходный код из 15-го сообщения, который считает для одной точки.
//Только вместо одного параметра, например b, написать cv.
//Т.е. writeln('Rad=',pi/2+arctan(cv/a));

cv:=cv + (de-db)/20; //Следующий шаг
end;
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 29.3.2024, 4:56

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru