Форум программистов, компьютерный форум CyberForum.ru

Остаток от деления (%) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
eek
4 / 4 / 0
Регистрация: 20.05.2012
Сообщений: 174
24.11.2013, 22:43     Остаток от деления (%) #1
Не могу понять как можно изменить структуру кода, чтобы программа считала правильно на отрицательные значения цифр. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    int x = -78, y = 33;
    std :: printf("Результаты деления: %d\n", x/y);
    std :: printf("Остаток: %d\n", x%y);
    system("pause > nul");
    return 0;
}
На положительные числа программа делает остаток правильный, а вот на отрицательный — нет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 22:43     Остаток от деления (%)
Посмотрите здесь:

остаток от деления C++
остаток от деления C++
остаток от деления C++
Остаток от деления C++
C++ Остаток от деления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.11.2013, 22:54     Остаток от деления (%) #2
И какой же там выводится остаток, что ты считаешь его неправильным(правильный ответ -12 если что)
eek
4 / 4 / 0
Регистрация: 20.05.2012
Сообщений: 174
24.11.2013, 23:04  [ТС]     Остаток от деления (%) #3
Почему же? При делении с остатком отрицательного числа x = -78 на y = 33 получаем -3 и остаток 21.
Flaker
1 / 1 / 0
Регистрация: 07.07.2012
Сообщений: 90
24.11.2013, 23:18     Остаток от деления (%) #4
Цитата Сообщение от eek Посмотреть сообщение
Почему же? При делении с остатком отрицательного числа x = -78 на y = 33 получаем -3 и остаток 21.
-78 / 33 = -2.36(36)

33 * -2 = -66

abc(-78) - abc(-66) = 12 => Остаток от деления это 12. (Остаток от деления не может быть отрицательным числом)

Добавлено через 8 минут
test
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.11.2013, 23:23     Остаток от деления (%) #5
Flaker, остаток от деления и не может быть отрицательным! Я же написал, что ответ - 12 (положительное число)
Flaker
1 / 1 / 0
Регистрация: 07.07.2012
Сообщений: 90
24.11.2013, 23:26     Остаток от деления (%) #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Flaker, остаток от деления и не может быть отрицательным! Я же написал, что ответ - 12 (положительное число)
Я ведь не вас комментировал. Но у вас, кстати, стоит именно минус, а не тире, и даже без пробела.

Единственно, если делимое отрицательное, то, в итоге, остаток тоже становится отрицательным.

P.S. Что бы поставить тире, достаточно нажать ALT и на numpad ввести 0151.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.11.2013, 23:31     Остаток от деления (%) #7
Ну, вообще говоря, автор прав в одном: остаток от деления не всегда верно работае с отрицательными числами!
http://stackoverflow.com/questions/7...egative-values
eek
4 / 4 / 0
Регистрация: 20.05.2012
Сообщений: 174
24.11.2013, 23:41  [ТС]     Остаток от деления (%) #8
Проверка: -78 = 33*(-3) + 21. Это не десятичная дробь, а остаток. Это арифметика.
Flaker
1 / 1 / 0
Регистрация: 07.07.2012
Сообщений: 90
24.11.2013, 23:51     Остаток от деления (%) #9
Округление в меньшую строну делается... Поэтому не 3 а 2.
eek
4 / 4 / 0
Регистрация: 20.05.2012
Сообщений: 174
24.11.2013, 23:54  [ТС]     Остаток от деления (%) #10
С остатком округления нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 00:07     Остаток от деления (%)
Еще ссылки по теме:

Найти остаток от деления C++
Для двух целых чисел найти остаток и частное от целочисленного деления, частное от вещественного деления C++
Остаток от деления C++

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

Или воспользуйтесь поиском по форуму:
Flaker
1 / 1 / 0
Регистрация: 07.07.2012
Сообщений: 90
25.11.2013, 00:07     Остаток от деления (%) #11
ostatok = num1 - (num2 * floor(num1 / num2))
Yandex
Объявления
25.11.2013, 00:07     Остаток от деления (%)
Ответ Создать тему
Опции темы

Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru