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

поясните по оператору "%" - C++

Восстановить пароль Регистрация
 
wolfgang073
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
08.10.2012, 10:54     поясните по оператору "%" #1
Привет товарищи. По оператору "%" я правильно понимаю???

C++
1
2
3
4
5
6
7
8
9
 int x, y;
    x = 6;
    y = 3;
    z = 7;
    cout << x / y;
    cout << "\n\n";
    cout << x % y;
    cout << z % y;
    cout << "\n\n";
Выводит:

При делении 6 / 3 =2
6 % 3 =0
7 % 3 =1

Вот эти "0" и "1" указывают на то, что есть остаток или нет (по подобию false, true)?

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.10.2012, 11:04     поясните по оператору "%" #2
Остаток от деления на цело. Есть дробное деление и деление на цело. Например, 5.0/2.0 = 2.5, но 5/2=2. При делении на цело частное целое и равно целой части нормального частного. Но обратная операция даёт 2*2=4. 5-4=1, это остаток, значит 5%2=1. 10%3 тоже равно 1, а 11%3=2, потому что 11.0/3.0=3.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333...333333333333333333333333333333333333333333333333, 11/3=3, 3*3=9, 11-9=2. Остаток всегда строго меньше делителя, но может быть и нулевым, если делимое кратно делителю.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
08.10.2012, 15:55     поясните по оператору "%" #3
Цитата Сообщение от wolfgang073 Посмотреть сообщение
6 % 3 =0
6 делим на 3, остаток 0
7 делим на 2 остаток 1
это не true и не false, не путать, это именно ОСТАТОК ОТ ДЕЛЕНИЯ!
wolfgang073
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
08.10.2012, 16:22  [ТС]     поясните по оператору "%" #4
C++
1
2
3
4
5
int t;
    cin >> t; //введите время в сек.
    cout << (t/3600) % 24 <<".";
    cout << (t/60)% 60  << ".";
    cout << t % 60 << endl;

Зачем здесь делят по модулю?
wtf?
19 / 19 / 0
Регистрация: 03.10.2010
Сообщений: 48
08.10.2012, 16:37     поясните по оператору "%" #5
C++
1
2
3
4
    
    cout << (t/3600) % 24 <<".";
    cout << (t/60)% 60  << ".";
    cout << t % 60 << endl;
1-ая строка это ограничение в 24 часа, если введёте количество секунд больше 24 часов, на екране выведется 0 часов
2-ая строка это количество минут, если количество минут кратное 60 значит оно уже учтено и выведено в виде часов
3-ая строка это количество секунд если количество секунд кратное 60 значит оно уже учтено и выведено в виде минут
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
08.10.2012, 16:37     поясните по оператору "%" #6
Цитата Сообщение от wolfgang073 Посмотреть сообщение
C++
1
2
3
4
5
int t;
    cin >> t; //введите время в сек.
    cout << (t/3600) % 24 <<".";
    cout << (t/60)% 60  << ".";
    cout << t % 60 << endl;

Зачем здесь делят по модулю?
где вы видите модуль? скобки ставят, чтобы указать компилятору приоритет операций
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.10.2012, 16:42     поясните по оператору "%" #7
Цитата Сообщение от wtf? Посмотреть сообщение
-ая строка это ограничение в 24 часа, если введёте количество секунд больше 24 часов, на екране выведется 0 часов
Нет. 0 выведется только если количество секунд >=24-х часов, но <25-ти. Или >=48-ми, но <50-ти. Ну и так далее. А если ввести 47 часов, то выведется 23.

Добавлено через 2 минуты
Цитата Сообщение от panicwassano Посмотреть сообщение
где вы видите модуль? скобки ставят, чтобы указать компилятору приоритет операций
Не путай вычисление по модулю и модуль числа. Модуль числа - это функция, игнорирующая знак, а деление на 3600 по модулю 24 - это остаток от деления на цело на 24 частного от деления на 3600, то есть как раз (t/3600)%24.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 17:27     поясните по оператору "%"
Еще ссылки по теме:

Поясните принцип работы паттерна "абстрактная фабрика" C++
C++ Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода?
На C++ в строке после символа - "+" поставить символ "*" и посчитать сколько "+" C++

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

Или воспользуйтесь поиском по форуму:
wolfgang073
9 / 9 / 0
Регистрация: 03.10.2012
Сообщений: 35
08.10.2012, 17:27  [ТС]     поясните по оператору "%" #8
Цитата Сообщение от panicwassano Посмотреть сообщение
где вы видите модуль? скобки ставят, чтобы указать компилятору приоритет операций
В учебнике. Глава арифметические операторы. % - оператор деление по модулю.
Yandex
Объявления
08.10.2012, 17:27     поясните по оператору "%"
Ответ Создать тему
Опции темы

Текущее время: 01:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru