6 / 8 / 8
Регистрация: 06.10.2017
Сообщений: 269
1

Вычисление расстояния между двумя точками с заданными координатами

27.11.2017, 01:30. Показов 1984. Ответов 4
Метки нет (Все метки)

задача вычеслить расстояние между двумя точка с данными координатами
ввожу все числа в клавы. допустим 2 4 5 6.он выводит ответ 3.а ответ вообще получается 2,23 посмотрите в чём ошибка и как сделать чтобы комбилятор вывел не 3 а 2,23606 то есть полностью

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
 
int main() {
    setlocale(0, "");
    float a,b,c,d;
    float i, r;
    i=2;
    scanf("%f %f %f %f",&a,&b,&c,&d);
    r=sqrt(pow((b-a),i))+(pow((d-c),i));
    printf("%.f",r );
 
 
 
         system("pause");
     return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 01:30
Ответы с готовыми решениями:

Вычислить расстояние между двумя точками с заданными координатами
Вычислить расстояние между двумя точками с координатами x1, y1 и x2, y2. Исходные данные и...

Вычислить расстояние между двумя точками, заданными своими координатами
Две точки заданы на плоскости своими координатами, которые могут быть как декартовыми, так и...

Найти расстояние между двумя точками с заданными координатами на числовой оси
Begin16. Найти расстояние между двумя точками с заданными координатами x1 и x2 на числовой оси:...

Вычислить расстояние между двумя точками, заданными декартовыми или полярными координатами
две точки заданы на плоскости своими координатами, которые могут быть как декартовыми, так и...

4
1841 / 1066 / 679
Регистрация: 25.04.2016
Сообщений: 3,003
27.11.2017, 02:23 2
Попробуйте так:
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <windows.h>
int main (void)
{
    setlocale(0, "");
    double x1, y1, x2, y2;
    double x, y, r;
 
    printf("x1 = "); scanf("%lf", &x1);
    printf("y1 = "); scanf("%lf", &y1);
    printf("x2 = "); scanf("%lf", &x2);
    printf("y2 = "); scanf("%lf", &y2);
    fflush(stdin);
 
    x = (x1 > x2) ? x1-x2 : x2-x1;
    y = (y1 > y2) ? y1-y2 : y2-y1;
    r = sqrt(x*x + y*y);
 
    printf("%lf\n", r);
    system("pause");
    return 0;
}
Для теста введите: x1=2 y1=5 x2=4 y2=6
Результат: 2.236068

Добавлено через 20 секунд
Марина1211, ошибка у вас возникала по двум причинам. Во-первых, в выводе стоит %.f - вывод без дробной части, т.е. выводит только целое. Исправьте на "%f". Во-вторых, вы считали тест для координат (2, 5) - (4, 6), а вводили координаты (2, 4) - (5, 6) при которых результат 3.605551
0
6 / 8 / 8
Регистрация: 06.10.2017
Сообщений: 269
27.11.2017, 02:43  [ТС] 3
Во-вторых, вы считали тест для координат (2, 5) - (4, 6), а вводили координаты (2, 4) - (5, 6) при которых результат 3.605551
обьясните подробнее в чём тут ошибка? у меня вроде так (2, 4) - (5, 6) в вожу ((4-2)^2 (6-1)^2)=2,23 а у меня выводит 3.
%f сделал всёровно после запятой не выводит. покажите ошибку прямо в моем коде наверное в этой строке что то не правильно r=sqrt(pow((b-a),i))+(pow((d-c),i));
0
1841 / 1066 / 679
Регистрация: 25.04.2016
Сообщений: 3,003
27.11.2017, 02:58 4
Цитата Сообщение от Марина1211 Посмотреть сообщение
обьясните подробнее в чём тут ошибка
Расстояние между точками определяется разницей между соответствующими координатами,
т.е. х первой точки - х второй и y первой - y второй. При этом когда вы вводите координаты, вы должны ввести сначала x и y первой точки, а потом x и y второй.. у вас так код написан. Но вы считали свой тест так, как будто вы вводили сначала иксы обеих точек, а потом игрики, отсюда и ошибка. Т.е. вместо (x1, y1) - (x2, y2) вы считали так, как будто у вас вводились (x1, x2) - (y1, y2).

Добавлено через 3 минуты
В общем, вы просто не в том порядке координаты вводили.
0
6 / 8 / 8
Регистрация: 06.10.2017
Сообщений: 269
27.11.2017, 16:29  [ТС] 5
не в этом у меня ошибка в скобках r=sqrt(pow((b-a),i))+(pow((d-c),i)); поставила лишнее скобки из-за этого он высчитывал корень только из первой части и всё
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2017, 16:29
Помогаю со студенческими работами здесь

Функция вычисления расстояния между двумя точками
Написать функцию вычисления евклидового расстояния между двумя точками на плоскости.

Нахождение минимального расстояния между двумя точками
ЗАДАЧА: Даны два множества A и B, состоящие из N1 и N2 (вводятся с клавиатуры) точек соответственно...

Вычислить площадь треугольника с использованием функции нахождения расстояния между двумя точками
Треугольник задан своими координатами своих вершин. Вычислить площадь треугольника с использованием...

Вычислить расстояние между двумя точками с данными координатами
Задача №1. Вычислить расстояние между двумя точками с данными координатами (х1,у1) и (х2,у2). ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru