|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
||||||
Функция вычисления длины отрезка09.10.2017, 14:10. Показов 13600. Ответов 19
Метки нет (Все метки)
Доброго времени суток , помогите пожалуйста отладить программу , вот условие и мой код:
Напишите функцию, вычисляющую длину отрезка по координатам его концов. С помощью этой функции напишите программу, вычисляющую периметр треугольника по координатам трех его вершин. Входные данные На вход программе подается 6 целых чисел — координаты вершин треугольника. Все числа по модулю не превосходят 30000. Выходные данные Выведите значение периметра этого треугольника ровно с 10-ю знаками после десятичной точки ПРОБЛЕМА: При тестировании проги большинство тестов проходит корректно , но на некоторых выводит результат NAN некорректной операции , ниже пишу пример входной строки при которой происходит баг Test Ожидалось Получилось -15809 20304 18912 -10503 10020 22779 106814.5554724964 NaN
0
|
||||||
| 09.10.2017, 14:10 | |
|
Ответы с готовыми решениями:
19
Массив: Нахождение длины максимального отрезка Функция вычисления длины отрезка Функция для вычисления длины отрезка |
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
||||||||||||||||
| 09.10.2017, 14:40 | ||||||||||||||||
|
Я когда-то делал подобное задание. Но у меня там нет метода main и во вторых состоит из 2-х классов. Но, думаю, не составит труда взять нужные методы и в один класс с main запихнуть всё, если нужно
вот как вызывать:
0
|
||||||||||||||||
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|
| 09.10.2017, 14:43 | |
|
int на long поменять
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 09.10.2017, 14:49 | |
|
NaN - это у double превышение зарезервированной длинны. Слишком большие цифры берёшь для поиска значений, возможно
Добавлено через 2 минуты И нахождение периметра, вроде как не только сложить длинны сторон, но ещё и поделить на 2 эту сумму
0
|
|
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 14:51 [ТС] | |
|
ArtemFM , а как избавиться от этой проблемы ? ведь в условии требуют вводить именно эти числа
-15809 20304 18912 -10503 10020 22779 , насколько я знаю типа длиннее дабл уже нет Добавлено через 1 минуту поделить на 2 это уже полупериметр будет
0
|
|
|
Модератор
|
||||||
| 09.10.2017, 14:54 | ||||||
|
Дмитрий99667, вам же предложили вместо int использовать long.
Можно double.
0
|
||||||
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
||||||
| 09.10.2017, 15:07 | ||||||
|
Нет никаких ошибок. Вот с твоими числами проверил:
0
|
||||||
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:07 [ТС] | |
|
KolodeznyDiver , у меня изначально в исходном коде уже был записан double , а значения координат явно входят в тип int
-15809 20304 18912 -10503 10020 22779
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
||||||
| 09.10.2017, 15:08 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:10 [ТС] | |
|
но вы немного поменяли мой код , забиваю данные в свою пишет нан
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 09.10.2017, 15:12 | |
|
В общем double самый большой для дробных чисел.
И ничего с NaN не сделаешь. Просто не использовать числа, коль до 30000 разрешено по модуля, типа таких -30000 30000 или будешь ловить NaN. Это не ошибка программы, скорее ошибка поставленной задачи.
0
|
|
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:14 [ТС] | |
|
Так мои числа и не превосходили 30000 по модулю ,. а ошибку пишет все равно с ними вот в чем загвоздка
-15809 20304 18912 -10503 10020 22779
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 09.10.2017, 15:20 | |
|
Поменяй (x1-x2)*(x1-x2) на Math.pow(x1-x2, 2) и вторую часть так же и не будет ошибки
0
|
|
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:30 [ТС] | |
|
да , поменял тип на long и все заработало наверно и с дабл прокатит, но все равно не понимаю вот что : числа типа int возводятся в квадрат уже в методе len который возвращает тип double (именно здесь я уже учел возведение в квадрат) как видно из моего исходного кода, причем тут тип вводимых чисел ??? ведь я вызываю len которая уже double как видно из исходника , а вводимые числа соответствуют intу
Добавлено через 4 минуты А почему же у нас исчезла ошибка ? ведь ничего принципиально не изменилось-просто хочу докопаться до истины - что же тогда изменилось ???- просто не хочу расставлять типы методом перебора и тоже самое с функциями Math.pow(x1-x2, 2) , хочу понять что принципиально изменилось , объясните пожалуйста ведь это не есть хорошо подгонять под ответ
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 09.10.2017, 15:32 | |
|
Всё значение в скобках Math.sqrt() в начале то, которое ты туда отправил и лишь на выходе double
У тебя получается Math.sqrt(int - int * int - int +...) => double B видимо выходит за область инта
0
|
|
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:36 [ТС] | |
|
а что измениться если мы вызовем метод возведения в степень , какой тут механизм ?
0
|
|
|
Модератор
|
|||
| 09.10.2017, 15:40 | |||
|
Добавлено через 2 минуты
0
|
|||
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 09.10.2017, 15:40 | |
Сообщение было отмечено Дмитрий99667 как решение
Решение
Math.pow(int, 2)
получается выглядит так: (int x1 - int x2) тут оба значение int и ответом будет int но прежде чем ответ возводить в степень, Math.pow ответ от x1 - x2 кастует в double У тебя бы работало, если бы ты написал так return Math.sqrt((double )(x-xk) * (double) (x-xk)+ (double)(y-yk) * (double) (y-yk))); таким образом мы сразу будем после разности 2-х интов кастовать ответ в double и перемножали между друг другом уже не инты а даблы
1
|
|
|
0 / 0 / 0
Регистрация: 03.08.2016
Сообщений: 39
|
|
| 09.10.2017, 15:51 [ТС] | |
|
ArtemFM , спасибо , это походу то что я хотел услышать , теперь механизм вроде как ясен
0
|
|
| 09.10.2017, 15:51 | |
|
Помогаю со студенческими работами здесь
20
Функция нахождения длины отрезка
Написать вспомогательные функции вычисления длины отрезка
Функции вычисления длины отрезка по заданным координатам его концов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|