Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.86
IHOR1989
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 6
#1

Координаты точки пересечения двух отрезков - C++

27.05.2012, 18:31. Просмотров 4947. Ответов 3
Метки нет (Все метки)

День добрый уважаемые читатели форума. Разбираю задачу по расчету Координаты точки пересечения двух отрезков и столкнулся с проблемой.
Выбивает подобные ошибки при компиляции Debug:
Run-Time Check Failure #3 - The variable 'Ay' is being used without being initialized.
Такая ошибка ко всем переменным.
При компиляции в Release выводит не те значения.
Подскажите пожалуйста где накосячил.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <conio.h>
#include <math.h>
#include <clocale>
using namespace std;
float Enter (float,float);
float Point_Crossing (float, float, float, float, float, float, float, float, float, float);
 
float Enter (float a,float b)
{
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координату x: ";
    cin>>a;
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координату y: ";
    cin>>b;
    return (a,b);
}
 
float Point_Crossing (float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4,float x,float y)
{
 
    x=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
    y=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
    return(x,y);
}
 
int main()
{
    float x,y;
    float Ax,Ay;
    float Bx,By;
    float Cx,Cy;
    float Dx,Dy;
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки А"<<endl;
    Enter (Ax,Ay);
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки B"<<endl;
    Enter (Bx,By);
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки C"<<endl;
    Enter (Cx,Cy);
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки D"<<endl;
    Enter (Dx,Dy);
    Point_Crossing (Ax,Bx,Cx,Dx,Ay,By,Cy,Dy,x,y);
    cout<<x;
    cout<<y;
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 18:31     Координаты точки пересечения двух отрезков
Посмотрите здесь:

C++ Найти точку пересечения двух отрезков
Найти координаты самой низкой точки траектории и другой наивысшей точки подъема C++
C++ Напечатать координаты точки пересечения прямых
Вычисление координат точки пересечения двух заданных уравнениями прямых C++
C++ Найти координаты точек пересечения двух кругов
Координаты пересечения двух прямоугольников C++
C++ Две прямые описываются уравнениями напечатать координаты точки пересечения этих прямых, либо сообщить что эти прямые совпада
C++ Пользователь вводит две пары вещественных чисел: k 1,b1 и k 2,b2. Составить функцию для определения точки пересечения двух прямых y=k1x+b1 и y=k2x+b2,
Найти координаты точки пересечения высоты AH и высоты BG треугольника C++
C++ Как найти точки пересечения двух синусоид?
Найти точки пересечения прямых проходящих через заданные точки C++
C++ Координаты пересечения двух окружностей

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,839
27.05.2012, 18:34     Координаты точки пересечения двух отрезков #2
IHOR1989, вам бы следовало описать структуру точки, чтобы было удобнее работать -
C++
1
2
3
struct point {
    double x, y;
};
Ф-ия Point_Crossing по описанию возвращает float, а вы пытаетесь возвратить (x, y). что это? для этого вам и нужна структура, функция будет возвращать точку.
IHOR1989
0 / 0 / 0
Регистрация: 30.07.2009
Сообщений: 6
27.05.2012, 18:42  [ТС]     Координаты точки пересечения двух отрезков #3
Цитата Сообщение от neske Посмотреть сообщение
IHOR1989, вам бы следовало описать структуру точки, чтобы было удобнее работать -
C++
1
2
3
struct point {
    double x, y;
};
Ф-ия Point_Crossing по описанию возвращает float, а вы пытаетесь возвратить (x, y). что это? для этого вам и нужна структура, функция будет возвращать точку.
Простите за навязчивость, а можно ли пример хотя бы на этой программе. В этой теме новичок, хотелось бы освоить.
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,839
27.05.2012, 19:01     Координаты точки пересечения двух отрезков #4
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
36
37
38
39
40
41
#include <iostream>
#include <conio.h>
#include <math.h>
#include <clocale>
using namespace std;
 
struct point {
    float x, y;
};
 
point Point_Crossing (float x1, float x2, float x3, float x4, float y1, float y2, float y3, float y4)
{
 
    float x=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
    float y=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
    return {x, y};
}
 
int main()
{
    point pt, A, B, C, D;
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки А"<<endl;
    std::cin >> A.x >> A.y;
 
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки B"<<endl;
    std::cin >> B.x >> B.y;
 
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки C"<<endl;
    std::cin >> C.x >> C.y;
 
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    std::wcout << L"Введите координаты точки D"<<endl;
    std::cin >> D.x >> D.y;
 
    pt = Point_Crossing (A.x, B.x, C.x, D.x, A.y, B.y, C.y, D.y);
    std::cout << pt.x << " " << pt.y;
    getch();
}
как-то так, но я бы всеравно по-другому написал.
зачем тебе прототипы функций, если ты их описываешь перед мейном?
Вообще саму функцию Point_Crossing нужно переписать, т.е. сами точки передавать и с ними работать, но нужно будет сам сделаешь.
Yandex
Объявления
27.05.2012, 19:01     Координаты точки пересечения двух отрезков
Ответ Создать тему
Опции темы

Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru