|
Модераторы: bsa |
|
Androidxx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.3.2018 Репутация: нет Всего: нет |
Всем привет и доброго времени суток!
И заранее извините за грамматику! Проблема вроде распростроненная и гуглил я по ней достаточно долго, но так ничерта и не понял. Начну с начала! Давно хотел начать учить программирование и тут на днях товарищ вдруг сообщает давай вместе учить Си. Ломатся я не стал и дело пошло. Вчера весь день ганяли теорию с разбором практических заданий, сегодня решили погонять только задания и тут началось. С горем по полам я добрался до 6-го задания в онлаин задачнке и тут сломался. Задание звучит так! Даны несколько пар чисел. В каждой паре нужно разделить первое на второе и вернуть результат округлённый до ближайшего целого. В случаях когда дробная часть равна точно 0.5 договоримся округлять вверх (т.е. прибавляя 0.5). Заметьте что для отрицательных чисел "вверх" означает "в сторону нуля". Во всех дальнейших задачах упоминающих округление нужно использовать именно такой алгоритм (если не сказано иное). Входные данные - в первой строке указано количество тестов. В остальных строках сами тесты (пары чисел, которые нужно делить). Ответ должен содержать результаты округления для каждого теста, разделенные пробелами. Для простоты использую пример из задачника, на самом деле чиста совсем другие, тестов там было 15, а числа в них примерно такие -7873287 3840767. Пример: входные данные: 3 12 8 11 -3 400 5 ответ: 2 -4 80 Написал я программу которая вроде даже что-то считает но вот незадача ответ не сходится. Собственно программа:
Писалось все в Cи без ++ А вот как это выглядит в консоли если задать числа из примера: Enter data here: 12 8 b2 = 2.000000 Intermediate data is:1 ╣1 Enter data here: 11 -3 b2 = -4.000000 Intermediate data is:-3 ╣2 Enter data here: 400 5 b2 = 80.000000 Intermediate data is:80 ╣3 a=4 output data=1 -3 80 и получается что мой ответ: 1 -3 80 а правельный 2 -4 80. И как бы вот оно b2 = 2.000000 на следующем шаге -4.000000 и т.д. но при переводе в int получается 1 в место 2 и -3 в место -4. Я бы просто сделал +1 но такое получается не всегда например 80.000000 нормально переводится и получается 80. Ну и напрашивается вопрос почему так происходит и как с этим боротся!? ПОМОГИТЕ! Спасибо за внимание! Это сообщение отредактировал(а) Androidxx - 4.3.2018, 22:10 |
|||
|
||||
Androidxx |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.3.2018 Репутация: нет Всего: нет |
Еще раз здравствуйте!
В общем я разобрался сам дурак проблема была в этой строке:
rint(b2) делался только для строки вывода и не сохронялся в переменную. правельный выриант:
И рас уш я тут может подскажите как правельно вводить и выводить данные в подобных случаях... потому что готовое задание в моем конкретном случае выглядит так:
очень много переменных мне кажется так не должно быть. спасибо! Это сообщение отредактировал(а) Androidxx - 5.3.2018, 08:14 |
||||||
|
|||||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
Это сообщение отредактировал(а) Romikgy - 5.3.2018, 15:25 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
Androidxx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.3.2018 Репутация: нет Всего: нет |
Примного благодарен!
|
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |