Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 5.00
bossman
4 / 4 / 0
Регистрация: 20.06.2010
Сообщений: 147
#1

Деление по модулю отрицательных чисел - C++

10.10.2012, 23:01. Просмотров 4287. Ответов 5
Метки нет (Все метки)

Какие в математике правила для деления по модулю отрицательных чисел?
Например -15(mod 26).
Почему в этом случае С++(mvc++) дает результат 7?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деление по модулю отрицательных чисел (C++):

Найти произведения 4-х отрицательных и 4-х положительных чисел, и большее из них по модулю - C++
Написать программу, которая вычисляет произведение отри¬цательных и положительных заданных четырех чисел, а затем сообщает, какое из...

деление по модулю 2 - C++
Здравствуйте такая задача есть массив g {111101} который заполнен таким образом и есть массив p {1111010000000} который заполнен вот так,...

Деление по модулю % - C++
Даны два числа X и Y проверить истинность того что оба числа четные. // При записи (x%2) корректно не работает, а в примере ниже работает...

Деление по модулю 2 - C++
Добрый день уважаемые! Нужно написать алгоритм кодирования двоичных последовательностей циклическим кодом, и столкнулся вот с такой...

деление по модулю - C++
Вообщем пишу калькулятор и наткнулся на проблемку #include "stdafx.h" #include <tchar.h> #include <stdio.h> #include <iostream> ...

Деление по модулю - C++
Нужно вычислить следующее выражение Написал но вот % работает только с целыми числами а у меня виходыт 0.33333333 % 17680 #include...

5
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
10.10.2012, 23:42 #2
Не знаю что у вас там неправильно считает, но у меня ответ верный выдает равный 11.
Попробуйте написать так -15%26 это тоже самое.
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.10.2012, 00:06 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Деление с остатком числа a на b — это представление a в виде bq + r, где r ∈ [0; b). Такой способ единственнен. Для вашего случая: –15 = 26 × –1 + 11.

Что касается С++, то по стандарту % должен удовлетворять уравнению (a / b) * b + a % b == a. То есть должен вообще возвращать –15, так как -15 / 26 == 0.
4
bossman
4 / 4 / 0
Регистрация: 20.06.2010
Сообщений: 147
11.10.2012, 00:11  [ТС] #4
(a / b) * b + a % b == a.
(a / b) * b зачем умножение на b в формуле

Добавлено через 2 минуты
как я понял изза того что там целочисленное деление
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.10.2012, 00:15 #5
Потому что ⌊a / b⌋ = (a − a mod b) / b, где ⌊a⌋ = округление вниз a.

Но в C++ ⌊a⌋ трактуется (обычно, в стандарте так и написано) как [a] — целая часть, округление к нулю. Немного нетождественных преобразований — и получаем, что должно выходить –15. В принципе, это не нарушает первое уравнение, если забить на ограничение значения остатка: –15 = 26 × 0 + (–15), но выглядит странно.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 08:23 #6
Добавлю. Сама теорема звучит так:
для любых целых a и b, http://www.cyberforum.ru/cgi-bin/latex.cgi?b\neq 0, существует, и притом единственное, разложение вида
a = bq+r, где q,r - целые и http://www.cyberforum.ru/cgi-bin/latex.cgi?0\leq r < |b|.
Из этой теоремы получается важное следствие:
для любых целых a и b, http://www.cyberforum.ru/cgi-bin/latex.cgi?b>1, существует, и притом единственное, разложение вида
http://www.cyberforum.ru/cgi-bin/latex.cgi?a = a_tb^t+...+a_1b+a_0, где http://www.cyberforum.ru/cgi-bin/latex.cgi?0\leq a_0,...,a_t < b. Коэффициенты данного разложения это цифры числа a в b-ичной системе счисления:
http://www.cyberforum.ru/cgi-bin/latex.cgi?a = (a_t...a_1a_0)_b
0
11.10.2012, 08:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2012, 08:23
Привет! Вот еще темы с ответами:

Деление по модулю - C++
Здравствуйте. Пишу функцию деления по модулю: int ring(int num, int max) { return num - (max%num)*(num/max); } Для (12, 12)...

Деление по модулю, работа с функцией rand() - C++
Мне нужно сгенерировать случайное число от 66 до 122, максимальное число RAND_MAX = 32767, мне нужно узнать на что нужно делить по модулю...

Сумма положительных и отрицательных по модулю элементов массива - C++
Ребят! а можете помочь вот с такой задачкой. вот условие: Дан массив С. получить и напечатать значение переменной Fl по...

Среди отрицательных элементов целочисленного массива найти максимальный по модулю - C++
Помогите, пожалуйста:( Для заданного массива целых чисел составьте программу для нахождения отрицательного элемента массива, имеющего...


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

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

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