С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7

Напечатать координаты точки, для которой угол между OX и лучом, соединяющим начало координат с точкой, минимальный

05.05.2018, 16:37. Показов 3934. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите, пожалуйста, с задачей:
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисления оформить в виде процедуры.

Ума не приложу, как решать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2018, 16:37
Ответы с готовыми решениями:

Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью...

Координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью...

Вычислить угол между осью и абсцисс и лучом, соединяющим начало координат с точкой
Привет, народ. Помогите с задачей, совсем ума не приложу как с ней справиться( Четыре точки заданы своими координатами x={x1,x2};...

19
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 17:04
DoraTeresa,а сколько времени вы изучаете C++???
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 17:08  [ТС]
Вообще - около полугода
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 19:12
Я начал совсем недавно, давайте вместе посмотрим что делать надо.
1. переменные X,Y,Z т.к. пространство трёхмерное.
2.функция для вычисления мин. угла - в виде процедуры.

Как бы всё понятно.Но непонятно как всё будете реализовывать??? Через консоль???
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 19:16  [ТС]
Для того, чтобы разобраться, можно и в консоли сделать
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 19:26
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). По моему ,это запись как бы не совсем для точек.Больше похоже на координаты для отрезков или векторов.Не находите?
Миниатюры
Напечатать координаты точки, для которой угол между OX и лучом, соединяющим начало координат с точкой, минимальный  
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 19:40  [ТС]
Была такая мысль, однако у точек указаны лишь две координаты => пространство двумерное.

Добавлено через 6 минут
Обозначение специфичное, конечно: это всё равно, что, например, задать точку A с координатами A1 и A2 (если не изменяет память, в школьных учебниках геометрии бывало и такое обозначение).
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 19:47
В задании фигурирует ЛУЧ .Значит X1 = 0 ,а X2 эту координату мы задаём для точек 1,2,3 относительно оси X.Вроде так?
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 19:58  [ТС]
Мне кажется, это должно выглядеть так
Миниатюры
Напечатать координаты точки, для которой угол между OX и лучом, соединяющим начало координат с точкой, минимальный  
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 19:59  [ТС]
Возникла идея, набросаю код. Если адекватный ответ будет выдавать - предоставлю на Ваш суд
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 20:08
Если двумерное ,тогда так.(РИС.)Но как то не понятно.
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 20:12
Я стряпал похожее.
Миниатюры
Напечатать координаты точки, для которой угол между OX и лучом, соединяющим начало координат с точкой, минимальный  
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 20:15
DoraTeresa,я не судья ,но посмотрю!
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 7
05.05.2018, 20:59  [ТС]
Принцип теперь понятен. Непонятно только, что делать с f1, f2 и f3:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <Windows.h> 
 
using namespace std;
 
void u(double x, double y, double f)
{
    if (x = 0) f = 3.14;
    else f = atan(fabs(y) / fabs(x));
}
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    double x1, x2, x3, y1, y2, y3, f1, f2, f3;
    cout << "Введите координаты точки X: "; cin >> x1 >> y1;
    cout << "Введите координаты точки Y: "; cin >> x2 >> y2;
    cout << "Введите координаты точки Z: "; cin >> x3 >> y3;
    u(x1, y1, f1);
    u(x2, y2, f2);
    u(x3, y3, f3);
    if ((f1 < f2) && (f1 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x1 << y1;
    if ((f2 < f1) && (f2 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x2 << y2;
    else cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x3 << y3;
    system("PAUSE");
    return 0;
}
Добавлено через 25 минут
Если бы по заданию не требовалась процедура, всё было бы куда проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <Windows.h> 
 
using namespace std;
 
//void u(double x, double y, double f)
//{
    //if (x = 0) f = 3.14;
    //else f = atan(fabs(y) / fabs(x));
//}
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    double x1, x2, x3, y1, y2, y3, f1, f2, f3;
    cout << "Введите координаты точки X: "; cin >> x1 >> y1;
    cout << "Введите координаты точки Y: "; cin >> x2 >> y2;
    cout << "Введите координаты точки Z: "; cin >> x3 >> y3;
    f1 = atan(fabs(y1) / fabs(x1));
    f2 = atan(fabs(y2) / fabs(x2));
    f3 = atan(fabs(y3) / fabs(x3));
    //u(x1, y1, f1);
    //u(x2, y2, f2);
    //u(x3, y3, f3);
    if ((f1 < f2) && (f1 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x1 << ' ' << y1 << endl;
    else if ((f2 < f1) && (f2 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x2 << ' ' << y2 << endl;
    else if ((f3 < f1) && (f3 < f2)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x3 << ' ' << y3 << endl;
    else cout << "Лучи, проведенные из начала координат к точкам, образуют с осью абсцисс одинаковый угол" << endl;
    system("PAUSE");
    return 0;
}
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 22:27
DoraTeresa,я так понял процедура "u" вызывается для вычисления величины угла - f -???
0
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 1
06.05.2018, 16:40
Да, всё верно, процедура u должна вычислять угол. Но она не работает :с
Впервые сталкиваюсь с процедурой, не знаю как это исправить
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
07.05.2018, 22:31
Theodora,я бы ответил почему,если бы до конца понимал разницу между процедурой и обычной функцией,как в C#.Я в C++ пока слаб.Я бы в C# постарался применить метод возвращающий рассчитанную величину угла f .Что то типа :


C++
1
2
3
4
5
6
7
8
double f = 0;
  
  double u (double x, double y)
  {
       if (x = 0) f = 3.14;
     else f = atan(fabs(y) / fabs(x));
     return f;
  }
Добавлено через 3 часа 57 минут
Вообще- то
C++
1
atan()
в C++ это арктангенс . Потому я ??? Вычислять угол, мне кажется нужно ч.р.
C++
1
tan()
.
Но что то не так и с
C++
1
 tan()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using namespace System;
using namespace std;
 
  double f = 0;// угол 
  double u (double x, double y)// 
  {
       if (x = 0) f = 3.14;
     else f = tan(fabs(y) / fabs(x));
     return f;
  }
  int main()
  {
    setlocale(LC_ALL, "russian");   
    //Console::WriteLine(L"Здравствуй, мир!");
 
     double x1, x2, x3, y1, y2, y3, f1, f2, f3;
    cout << "Введите координаты точки X: "; cin >> x1 >> y1;
    cout << "Введите координаты точки Y: "; cin >> x2 >> y2;
    cout << "Введите координаты точки Z: "; cin >> x3 >> y3;
    f1 = u(x1,y1);
    f2 = u(x2,y2);
    f3 = u(x3,y3);
    cout<<"Угол для точки X = "<< f1<<"\n";
    cout<<"Угол для точки Y = "<< f2<<"\n";
    cout<<"Угол для точки Z = "<< f3<<"\n";
    if ((f1 < f2) && (f1 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x1<<","<< y1 <<"\n";
    if ((f2 < f1) && (f2 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x2<<","<< y2 <<"\n";
    else cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x3 <<"," << y3 <<"\n";
    system("PAUSE");    
    //cin.get();
    return 0;
  }
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
07.05.2018, 22:45
Картинка для лучшего понимания вопроса .
Миниатюры
Напечатать координаты точки, для которой угол между OX и лучом, соединяющим начало координат с точкой, минимальный  
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
07.05.2018, 22:47
И ссылочка .https://www.fxyz.ru/формулы_по... угольника/
0
0 / 0 / 0
Регистрация: 10.05.2018
Сообщений: 1
10.05.2018, 14:24
Веселый, разница между процедурой и функцией в том, что функция возвращает значение, а процедура - нет. То есть для процедуры не нужно писать return.
А с задачей я несколько дней назад разобралась. Мне просто ссылок не хватало в процедуре
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <Windows.h>
 
using namespace std;
 
void u(const double &x, const double &y, double &f)
{
    if (x == 0) f = 3.14;
    else f = atan(abs(y) / abs(x)); //Процедура рассчета угла
}
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    double x1, x2, x3, y1, y2, y3, f1, f2, f3;
    cout << "Введите координаты точки X: "; cin >> x1 >> y1;
    cout << "Введите координаты точки Y: "; cin >> x2 >> y2;
    cout << "Введите координаты точки Z: "; cin >> x3 >> y3;
    //f1 = atan(fabs(y1) / fabs(x1));
    //f2 = atan(fabs(y2) / fabs(x2));
    //f3 = atan(fabs(y3) / fabs(x3));
    u(x1, y1, f1);
    u(x2, y2, f2);
    u(x3, y3, f3); //Этот блок должен вызывать процедуру, но компилятор выдает ошибку, что f1, f2 и f3 - неинициализированные локальные переменные
    if ((f1 < f2) && (f1 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x1 << ' ' << y1 << endl;
    else if ((f2 < f1) && (f2 < f3)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x2 << ' ' << y2 << endl;
    else if ((f3 < f1) && (f3 < f2)) cout << "Координаты точки, к которой проведен луч, образующий минимальный угол между осью абсцисс: " << x3 << ' ' << y3 << endl;
    else cout << "Лучи, проведенные из начала координат к точкам, образуют с осью абсцисс одинаковый угол" << endl;
    system("PAUSE");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2018, 14:24
Помогаю со студенческими работами здесь

Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом — минимальный
Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью...

Вычислить координаты точки, зная угловой коэффициент прямой, проходящей через начало координат и точку
ычислить координатыч точки m, если угловой коэффициент прямой проходящий начало координат и точку м равен 1/2, и точка М удалена от начала...

Найти кривую, для которой отрезок касательной между точкой касания и точкой пересечения с осью Х имеет длину а
Найти кривую, для которой отрезок касательной между точкой касания и точкой пересечения с осью Х имеет длину а.

Выдать на печать координаты точек по возрастанию угла между осью абсцисс и лучом
Три точки заданы координатами в первом квадранте: (X1,X2), (Y1,Y2), (Z1,Z2). Выдать на печать координаты этих точек по возрастанию угла...

Для каждой четверти напечатать точки, принадлежащие ей, и две точки, расстояние между которыми минимально.
Только начали проходить массивы, люди помогите пожалуйста с решением этой задачи, буду признателен. Случайным образом формируются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru