Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
LightProger
38 / 38 / 15
Регистрация: 29.12.2016
Сообщений: 291
1

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

22.11.2017, 20:16. Просмотров 1895. Ответов 5
Метки нет (Все метки)

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

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 <stdio.h>
#include <math.h>
 
/*
 * Написать программу, вычисляющую расстояние между двумя точками на плоскости.
   Формат входных данных:
   На вход программы поступают четыре числа x1,y1,x2,y2
   — координаты двух точек на плоскости.
   x1,y1,x2,y2
   — вещественные числа.
 
   Формат выходных данных:
   Одно число -- расстояние между точками (x1,y1)
   и (x2,y2). Точность — два знака после запятой.
 
   Подсказка:  Для вещественных чисел используйте тип double. 
   Иначе из-за ошибок округления даже верное решение будет работать неправильно. 
   Пример такого поведения показан в дополнительных материалах к этому уроку (1 материал).
 
   Sample Input:
 
   44.21 9.72 34.29 92.34
 
   Sample Output:
 
   83.21
 */
 
int main() {
    double x1, y1, x2, y2, result;
    scanf(" %lf %lf %lf %lf", &x1, &y1, &x2, &y2);
    result = sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2);
    printf("%.2lf", result);
    return 0;
}
Добавлено через 25 минут
Вроде решил, нагуглил похожий код и под себя переделал. Правда в СLion не компилится, из-за букв в функции pow, а в терминале если давать указание линковщику -lm, все работает.

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
#include <stdio.h>
#include <math.h>
 
/*
 * Написать программу, вычисляющую расстояние между двумя точками на плоскости.
   Формат входных данных:
   На вход программы поступают четыре числа x1,y1,x2,y2
   — координаты двух точек на плоскости.
   x1,y1,x2,y2
   — вещественные числа.
 
   Формат выходных данных:
   Одно число -- расстояние между точками (x1,y1)
   и (x2,y2). Точность — два знака после запятой.
 
   Подсказка:  Для вещественных чисел используйте тип double.
   Иначе из-за ошибок округления даже верное решение будет работать неправильно.
   Пример такого поведения показан в дополнительных материалах к этому уроку (1 материал).
 
   Sample Input:
 
   44.21 9.72 34.29 92.34
 
   Sample Output:
 
   83.21
 */
 
int main() {
    double x1, y1, x2, y2, result, a, b;
    scanf(" %lf %lf %lf %lf", &x1, &y1, &x2, &y2);
    a = x2 - x1;
    b = y2 - y1;
    result = sqrt(pow(a, 2.0) + pow(b, 2.0));
    printf("%.2lf", result);
    printf("\n");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2017, 20:16
Ответы с готовыми решениями:

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

Найти расстояние между двумя точками на плоскости
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #math.h main() { int...

Создайте программу которая рассчитывает расстояние между двумя точками по их декартовым координатам в пространстве
Создайте программу которая рассчитывает расстояние между двумя точками по их декартовым координатам...

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

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

5
D3m1an
187 / 146 / 72
Регистрация: 11.08.2016
Сообщений: 519
Завершенные тесты: 1
22.11.2017, 22:50 2
Суммма квадратов длин катетов равна квадрату длины гипотенузы .
Гуглите формулы , а не код. Код старайтесь сами писать. На мой взгляд, полезнее будет
0
Байт
Эксперт C
20578 / 13083 / 2756
Регистрация: 24.12.2010
Сообщений: 27,442
22.11.2017, 23:22 3
Лучший ответ Сообщение было отмечено LightProger как решение

Решение

LightProger, В Си операция "^" означает совсем не то, что вы думаете
C
1
2
3
4
5
6
7
int main() {
    double x1, y1, x2, y2, result;
    scanf(" %lf %lf %lf %lf", &x1, &y1, &x2, &y2);
    result = sqrt((x2 - x1)*(x2-x1) + (y2 - y1)*(y2-y1));
    printf("%.2lf", result);
    return 0;
}
1
LightProger
38 / 38 / 15
Регистрация: 29.12.2016
Сообщений: 291
23.11.2017, 04:32  [ТС] 4
D3m1an,
Цитата Сообщение от D3m1an Посмотреть сообщение
Гуглите формулы , а не код. Код старайтесь сами писать. На мой взгляд, полезнее будет
Я нагуглил формулы, но если не знашь, для чего и какая функция в библиотеке math.h, нужна, то они бесполезны. Формулы то нашел, проблема встала как их на язык перенести.
0
stake-k26
669 / 462 / 353
Регистрация: 25.04.2016
Сообщений: 1,325
23.11.2017, 10:55 5
Лучший ответ Сообщение было отмечено LightProger как решение

Решение

Побуду кэпом... LightProger, открываем гугл, вбиваем в строку поиска math.h и первая же ссылка ведет на википедию, открываем, и видим описание базовых функций, наприимер: "sqrt - квадратный корень", дальше открываем терминал, вбиваем man sqrt:

Кликните здесь для просмотра всего текста
SQRT(3) Linux Programmer's Manual SQRT(3)

NAME
sqrt, sqrtf, sqrtl - square root function

SYNOPSIS
#include <math.h>

double sqrt(double x);
float sqrtf(float x);
long double sqrtl(long double x);

Link with -lm.

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

sqrtf(), sqrtl():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION
These functions return the nonnegative square root of x.


Т.е. сразу же получаем всю необходимую информацию: функция sqrt предназначена для вычисления квадратного корня, получает аргумент типа double, возвращает значение double. Для ее использования необходимо указать #include <math.h> и собирать программу с ключом -lm

И да, я знаю, что вы на линуксе, так что и ман у вас должен быть. Пользователи windows могут точно так же вместо мана просто продолжить гуглить "sqrt() си".
1
LightProger
38 / 38 / 15
Регистрация: 29.12.2016
Сообщений: 291
23.11.2017, 14:18  [ТС] 6
stake-k26, Спасибо за разъяснение! Я и забыл про man у меня оказывается все под рукой, а я корячусь!
0
23.11.2017, 14:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2017, 14:18

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

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

Рассчитать расстояние между двумя точками в трехмерном пространстве
Здравствуйте, существует проблема с вводом чисел. Вот задание: &quot;Рассчитать расстояние между двумя...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru