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

Замена оператора % - 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 Желательно БЕЗ использования массивов и указателей Сама попыталась накидать это: (типа сначала пробелы заменяются на новые строки, потом считаются), но корректно оно не работает #include<iostream> #include<stdio.h> #include<clocale> int...
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> #include <ctime> #include <vector>
C++ Список. Найти сумму элементов, больших 3 и меньших 8 и поместить ее в начало списка Помогите мне пожалуйста Создать программу для создания списка из 10 целых чисел, вводимых с клавиатуры и вывода его на экран. Предусмотреть обработку элементов списка в соответствии с вариантов и вывести преобразованный список на экран. Создать двунаправленный список и выполнить в нем ту же задачу. Сравнить количество операции при выполнении задания с использованием однонаправленного и... подробнее

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