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

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

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

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

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

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

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

Перегрузка оператора [] - C++
Что не правильно я перегрузил? #include <iostream> #include <locale.h> using namespace std; struct S_List { char c; S_List...

Перегрузка оператора [] - C++
Возможно ли создать два перегруженных оператора индексации, чтобы один из них возвращал l-value, другой r-value? В этом примере в обоих...

перегрузка оператора - C++
Как перегрузить оператор , чтобы его можно было использовать для операций присваивания новых значений определённого члена массива? покажите...

Перегрузка оператора [] - C++
Есть код перегрузки оператора для получения данных из массива. #include <iostream> class obj { private: int *arr; ...

Перегрузка оператора = - C++
StringOne& StringOne::operator=(char *s) { char b; strcpy(b, s); StringOne a = b; return a;//возвращает тоже самое почемуто...

Перегрузка оператора - C++
#include <iostream> class Node { public: char *s; int length; Node * next; public: Node(); Node(char* val) {

С++ перегрузка оператора - C++
Разработать класс Random. Конструктор класса должен предполагать инициализацию последовательности. В классе следует перегрузить оператор ,...

Перегрузка оператора <= - C++
Основная задача данного фрагмента отсортировать массив структур по полю name в алфавитном порядке, используя добавление с бинарным поиском...

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

Перегрузка оператора [][] - C++
допустим у меня есть клас Matrix и я хочу опедилить оператор доступа к его елементу как реализовть оператор если простой масив я знаю а...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
2406 / 1100 / 238
Регистрация: 30.11.2013
Сообщений: 3,624
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;
}
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
14.11.2016, 02:02     Замена оператора % #3
rikimaru2013, Можно на несколько символов короче
C++
1
cout << num - (num / delim)*delim << endl;
Она сама догадается...
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3642 / 1917 / 505
Регистрация: 18.10.2014
Сообщений: 3,480
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;
zer0mail
2323 / 1949 / 192
Регистрация: 03.07.2012
Сообщений: 6,996
Записей в блоге: 1
14.11.2016, 17:21     Замена оператора % #5
ТС, зачем вам нужны другие способы? Может, нужны также для * + - и пр?
Yandex
Объявления
14.11.2016, 17:21     Замена оператора %
Ответ Создать тему
Опции темы

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