Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Операторы div и mod


Автор: Dаedra 16.5.2009, 22:39
Помогите разобраться с этими операторами. Это не операторы Си, хотя в си есть аналог, но мне очень нужно разобраться с вычислинием таких выражений.
Уже месяц мучаюсь в попытках понять механизм вычисления результата. Как можно описать их МАТЕМАТИЧЕСКИ? То есть мне интересно, если a mod b = c, то как вычислить это С без помощи компилятора?
Вот как понять "остаток от деления"? Если 3/4=0.75, то 75 будет остатком от деления? Или остаток от деления - это число, которое остается в делимом (при делении столбиком) при невозможности делить дальше, когда делимое меньше делителя? В общем, вот так непонятно описал, но подскажите по этой теме, как находить все эти div и mod?

Автор: azesmcar 16.5.2009, 22:44
Цитата(Dаedra @  16.5.2009,  22:39 Найти цитируемый пост)
То есть мне интересно, если a mod b = c, то как вычислить это С без помощи компилятора?

c = a - (a / b) * b;

Автор: Dаedra 16.5.2009, 22:47
Цитата

c = a - (a / b) * b;

Спасибо. А можно точно так же разложить div?

Автор: mes 16.5.2009, 22:47
Есть такое понятие, как целочисленное деление. То которое проходили в начальной школе (помойму 3й класс  smile ),  до того как начали изучать дроби.
Остаток числа, который нельзя поделить нацело, и есть нужный Вам остаток.

3 mod 4 = 3; // так как делимое меньше делителя, оно все является остатком.
3 div 4 =0;

29 mod 3 = 2; // 29 - (29 div 3)*3 = 29 -9*3 = 29-27 =2;
29 div 3   =9;  
 smile 



Автор: azesmcar 16.5.2009, 22:47
Цитата(Dаedra @  16.5.2009,  22:47 Найти цитируемый пост)
Спасибо. А можно точно так же разложить div? 

DIV если не ошибаюсь в Pascal называлось обычное целочисленное деление.

Вообще div - divide - деление. В C/C++ это делает оператор /

Автор: Dаedra 16.5.2009, 22:52
Вот спасибо! А то такие мелочи упустил когда-то в школе, а теперь приходится поднимать информацию и выискивать, где можно..

Добавлено через 3 минуты и 25 секунд
Цитата

c = a - (a / b) * b;

И последний вопрос.. Здесь ведь по идее a/b (в скобках) должно быть целым числом? Потому что в Си, например, при точности числовых типов это все-таки должно дать ноль.

Автор: Lazin 17.5.2009, 00:31
Цитата(mes @  16.5.2009,  22:47 Найти цитируемый пост)
Есть такое понятие, как целочисленное деление. То которое проходили в начальной школе (помойму 3й класс  smile ),  до того как начали изучать дроби.


ну вообще, все это - элементы теории чисел, вы в 3-м классе проходили теорему Ферма? smile 

http://ru.wikipedia.org/wiki/%D0%9E%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA_%D0%BE%D1%82_%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F

http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0

Автор: mes 17.5.2009, 00:49
Цитата(Dаedra @  16.5.2009,  21:52 Найти цитируемый пост)
Здесь ведь по идее a/b (в скобках) должно быть целым числом? Потому что в Си, например, при точности числовых типов это все-таки должно дать ноль. 

нет, для целых чисел в Си применяется целочисленное деление, поэтому   24/5 =4, а  24/5*5 =20


Цитата(Lazin @  16.5.2009,  23:31 Найти цитируемый пост)
ну вообще, все это - элементы теории чисел, вы в 3-м классе проходили теорему Ферма? 

не понял на что Вы намекаете, но в третьем  (или даже пораньше) классе мы (также как и другие школьники) проходили деление с остатком - как раз то о котором сейчас идет речь.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)