Как работает оператор модуля?
Скажем, что мне нужно отформатировать вывод массива для отображения фиксированного количества элементов в строке. Как мне это сделать, используя операцию модуляции?
Используя C++, приведенный ниже код работает для отображения 6 элементов в строке, но я понятия не имею, как и почему он работает?
for ( count = 0 ; count < size ; count++)
{
cout << somearray[count];
if( count % 6 == 5) cout << endl;
}
Что делать, если я хочу отображать 5 элементов в строке? Как найти точное выражение?
Ответы
Ответ 1
в выражении C++ a % b
возвращает остаток деления a на b (если они положительны. Для отрицательных чисел знак результата определяется реализацией). Например:
5 % 2 = 1
13 % 5 = 3
С помощью этих знаний мы можем попытаться понять ваш код. Счет состояния count % 6 == 5
означает, что новая строка будет записана, если остаток деления на 6 равен пяти. Как часто это происходит? Точно 6 линий друг от друга (упражнение: записывайте числа 1..30 и подчеркивайте те, которые удовлетворяют этому условию), начиная с 6-й строки (счет = 5).
Чтобы получить желаемое поведение от вашего кода, вы должны изменить условие на count % 5 == 4
, что даст вам новую строку каждые 5 строк, начиная с 5-й строки (count = 4).
Ответ 2
В основном модуль оператора дает вам простой простой пример в математике, что осталось/осталось от 11, деленное на 3? ответ 2
за то же самое C++ имеет оператор модуля ('%')
Основной код для объяснения
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
Что будет отображаться
остаток составляет 2
Ответ 3
Это дает вам остальную часть дивизии.
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
Ответ 4
Вы можете думать о модуле оператора как о том, чтобы дать вам остаток. count% 6 делит 6 из счета столько раз, сколько может, и дает вам остаток от 0 до 5 (это все возможные остатки, потому что вы уже разделили 6 столько раз, сколько сможете). Элементы массива печатаются в цикле for, но каждый раз, когда остаток равен 5 (каждый шестой элемент), он выводит символ новой строки. Это дает вам 6 элементов в строке. Для 5 элементов в строке используйте
if (count% 5 == 4)
Ответ 5
Этот проект JSFiddle может помочь вам понять, как работает модуль: http://jsfiddle.net/elazar170/7hhnagrj
function modulus(x,y){
var m = Math.floor(x / y);
var r = m * y;
return x - r;
}