Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 18.05.2017
Сообщений: 1

Задача на округление

17.07.2017, 21:33. Показов 1563. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Недавно начал изучать С++. Решаю потихоньку задачи с CodeAbbey.

Возникла проблема, которую не могу не то что решить, а даже найти.

Задача.
Даны несколько пар чисел. В каждой паре нужно разделить первое на второе и вернуть результат округлённый до ближайшего целого.
В случаях когда дробная часть равна точно 0.5 договоримся округлять вверх (т.е. прибавляя 0.5). Заметьте что для отрицательных чисел "вверх" означает "в сторону нуля".

Моё решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int count = 0;
    cin >> count;
    for (int i = 1; i <= count; i++)
    {
        int a, b;
        cin >> a >> b;
        double fresult = 0, remnant = 0;
        int intresult = 0;
        fresult = (double)a / b;
        intresult = (int)a / b;
        remnant = fresult - intresult;
        if (remnant >= 0.5) intresult++;
        if ((intresult < 0)&&!(remnant <= -0.5)) intresult--;
        cout << intresult << " ";
    }   
}

Почему не воспользовался готовыми решениями для округления? - Решил попрактиковаться.
На моих, да и всех других небольших входных данных это работает. Но на тех, которые выдает сайт, нет.


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Входные данные:
13
5178825 453
2396251 -3288904
-3415974 -644913
17343 1816
-4983025 2722634
3321775 -2346758
-8678543 -3278137
2905948 907
7670557 245
4936539 382
13195 1754
2790863 466
7041377 795
Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int count = 0;
    cin >> count;
    for (int i = 1; i <= count; i++)
    {
        int a, b;
        cin >> a >> b;
        double fresult = 0, remnant = 0;
        int intresult = 0;
        fresult = (double)a / b;
        intresult = (int)a / b;
        remnant = fresult - intresult;
        if (remnant >= 0.5) intresult++;
        if (remnant <= -0.5) intresult--;
        cout << intresult << " ";
    }   
}
Исправил сам, спасибо доброму программеру за помощь в лс :3
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2017, 21:33
Ответы с готовыми решениями:

Задача про округление
Знаю, что эта задача была буквально недавно, но всё же ответа правильного та к и не было. Запрещено пользоваться if while for abs()...

Округление
function GetAspect: string; var Aspect: single; W, H: LongWord; begin W := GetSystemMetrics(SM_CXSCREEN); // H := ...

Округление
Округление Нужно найти корень числа 3. Должно получиться 2, но у меня выходит 1, тк нужно округлить. Помогите пожайлуста, можно...

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.07.2017, 21:35
Цитата Сообщение от Envoice Посмотреть сообщение
Но на тех, которые выдает сайт, нет.
Что он выдаёт, покажи.
0
 Аватар для palva
4274 / 2967 / 692
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
17.07.2017, 21:39
Цитата Сообщение от Envoice Посмотреть сообщение
C++
1
if (remnant >= 0.5) intresult++;
Это работает только если частное положительное. А если отрицательное, то remnant также получается отрицательным. И должен работать такой оператор
C++
1
if (remnant < -0.5) intresult--;
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.07.2017, 21:47
Вот неплохой способ округления
C++
1
2
double d;
cout << (int)(d+0.5);
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
17.07.2017, 21:50
Байт, это только для положительных. Для отрицательных нужен d-0.5
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2017, 21:50
Помогаю со студенческими работами здесь

Округление
Как сделать что бы введенное число округлялось до 10 например если ввести 17 то число превращалось в 20 или 111 превращалось в 110 ???

Округление в c#
Доброго времени. Проверяю работу калькулятора, но у калькулятора только семь цифр, при делении выходит за пределы и он значения округляет....

Округление
Здравствуйте, дурацкий вопрос, но не могу найти ответа. Есть числа, предположим, большие (85,950504940504059444) и маленькие, типа...

Округление
Доброго времени суток. Есть следующая формула: function changeText1() { var rezultat11 = 1; rezultat11 *=...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru