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

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

Войти
Регистрация
Восстановить пароль
 
Odyss
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 9
Завершенные тесты: 1
#1

Замена оператора % - C++

14.11.2016, 00:52. Просмотров 180. Ответов 4
Метки нет (Все метки)

Привет всем форумчанам! Впервые тут, так как только начал учиться программировать.

Подскажите, кто знает - как заменить оператор %? то есть, есть ли другие способы деления с модулем, не используя оператор %? Заранее спасибо всем за ответ.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2016, 00:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена оператора % (C++):

Избыточное копирование объекта при реализации оператора умножения и оператора присваивания - C++
Есть класс работы с матрицами. Есть операция умножения матриц, описанная как оператор класса. В данном коротком примере я просто моделирую...

Неправильная работа оператора присваивания после работы оператора суммирования - C++
Доброго времени суток. У меня есть класс вектор class TVector {//ewde public: TVector(); //Vector(Vector &v); TVector(int...

Придумайте простую программу с использованием условного оператора IF и оператора switch - C++
Пожалуйста, придумайте простую программу с использованием: условного оператора IF и оператора switch . Эти программы должны быть...

Вызов прегруженного оператора вывода в поток из аналогичного оператора - C++
Программирую в c9.io с g++ получается тоже самое. Элементами стека(pointList) являются стеки(list) для которых уже определен оператор...

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

сочетания оператора цикла и условного оператора - C++
Известна оценка каждого ученика по физике, посчитать сколько пятерок, количество человек в классе, четверок, трояк, и двоек..

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,687
14.11.2016, 01:08 #2
Odyss,

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
    const int num = 19;
    const int delim = 5;
 
    cout << num % delim << endl;
    cout << num - (int)(num / delim)*delim << endl;
}
3
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
14.11.2016, 02:02 #3
rikimaru2013, Можно на несколько символов короче
C++
1
cout << num - (num / delim)*delim << endl;
Она сама догадается...
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
14.11.2016, 12:26 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Odyss Посмотреть сообщение
то есть, есть ли другие способы деления с модулем, не используя оператор %?
Вам уже привели тот способ, котрый часто встречается тут в коде студентов, не знающих о существовании оператора %

Можно также добавить, что стандартная библиотека языка С содержит функцию div, которая вычисляет пару из частного и остатка

C++
1
2
3
4
5
6
7
8
#include <cstdlib>
#include <iostream>
 
int main()
{
  std::div_t pair = std::div(42, 11);
  std::cout << pair.rem << std::endl;
}
А также, если делимое является степенью 2, то оператор % может быть легко заменен на битовую операцию

C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    unsigned num = 42, den = 8;
    std::cout << (num & (den - 1)) << std::endl;
}
Но это работает "правильно" только для положительных операндов. А для отрицательных - поведение зависит от ряда факторов.

Добавлено через 10 часов 3 минуты
Цитата Сообщение от Байт Посмотреть сообщение
rikimaru2013, Можно на несколько символов короче
C++
1
cout << num - (num / delim)*delim << endl;
Она сама догадается...
Ну тогда уж еще короче

C++
1
cout << num - num / delim * delim << endl;
4
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
14.11.2016, 17:21 #5
ТС, зачем вам нужны другие способы? Может, нужны также для * + - и пр?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2016, 17:21
Привет! Вот еще темы с ответами:

Сочетания оператора цикла и условного оператора - C++
вывести на экран все числа a от до b , кратные некоторому числу c

Выполните, пожалуйста, задание, при этом вместо оператора цикла while используйте оператора цикла do_while - C++
Используя оператор цикла while, напишите программу для вычисления ниже следующей суммы. // fkdj.cpp: определяет точку входа...

Замена букв в предложении. Не работает замена кириллицы - C++
Суть программы заменить все определенные буквы в предложении на другую. Собственно, вот код. Латиницу заменяет как надо. Но если ввести...

Переопределение оператора - C++
У меня есть класс вектора. Надо переопределить оператор умножения числа на вектор. class myvector { private: int x,y,z; public:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.11.2016, 17:21
Ответ Создать тему
Опции темы

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