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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Только 1.5 месяца знаком с С++, а уже такое задают http://www.cyberforum.ru/cpp-beginners/thread1849932.html
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов...
C++ Из указанной области матрицы выбрать значения элементов, сумма которых будет максимальной Задать матрицу размерности m * n (m, n> 2). Начиная с левого нижнего угла матрицы и двигаясь только вправо и вверх, достичь ее правого верхнего угла и выбрать при этом такие значения элементов, сумма... http://www.cyberforum.ru/cpp-beginners/thread1849929.html
Подсчет символов в строке C++
Помогите, пожалуйста, написать программу на языке C++, которая будет подсчитывать количество введенных слов, которые заканчиваются на букву f или F Желательно БЕЗ использования массивов и...
C++ Найти сумму таких чисел в диапазоне [a; b], которые при возведении в квадрат превышают b
Всем привет,надо составить блоксхему к этому заданию. Вводятся числа a и b. Найти сумму таких чисел в диапазоне , которые при возведении в квадрат превышают b. тема занятия цикл for.
C++ Исправить ошибку времени выполнения http://www.cyberforum.ru/cpp-beginners/thread1849887.html
Всем привет вот уже больше 2-х часов вожусь с простой задачей на динамическую память. Непосредственно весь код #include <iostream> #include <conio.h> #include <math.h> #include <algorithm>...
C++ Список. Найти сумму элементов, больших 3 и меньших 8 и поместить ее в начало списка Помогите мне пожалуйста Создать программу для создания списка из 10 целых чисел, вводимых с клавиатуры и вывода его на экран. Предусмотреть обработку элементов списка в соответствии с вариантов и... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4274 / 2293 / 567
Регистрация: 18.10.2014
Сообщений: 3,910
14.11.2016, 12:26
Цитата Сообщение от 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru