Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> остаток от деления, функция Div 
:(
    Опции темы
Stesh_ka
Дата 31.7.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 12.8.2003

Репутация: нет
Всего: нет



Помогите пожалуйста разобраться - как вычислить остаток от деления переменной X на число Y.

как воспользоваться функцией div? 

судя по описанию:
Цитата

div_t div(int numerator,int denominator);
Функция div возращает частное и остаток, полученный в результате операции   numerator/denominator, в структуре div_t.

Структура div_t имеет 2 поля: 
int quot; //Частное 
int rem; // Остаток 


т.е. использовать надо вроде:
div (X,Y)... а как получить rem  этот самый?????? 
PM MAIL   Вверх
ILAgent
Дата 31.7.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 1.3.2006

Репутация: нет
Всего: нет



Код

int rem=div(x,y).rem;
int quot=div(x,y).quot;
 
PM MAIL   Вверх
Daevaorn
Дата 31.7.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Stesh_ka, 
Код

int z = x % y;
 
PM MAIL WWW   Вверх
EvgenZ
Дата 3.8.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: 1
Всего: 11



Цитата(Daevaorn @ 31.7.2006,  21:05)
Stesh_ka, 
Код

int z = x % y;

Просто и действенно ))) 



а зачем вообще div?


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Mayk
Дата 3.8.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(EvgenZ @  3.8.2006,  21:51 Найти цитируемый пост)
а зачем вообще div? 

Для экономии машинного времени? 
В некоторых компьютерах (напр. наших интелах) одной командой на асме можно вычислить и остаток и частное => не надо инструкцию вызывать дважды. 
А в историческом Z80 для примера команды деления вообще нет как таковой и приходится высчитывать чуть ли не столбиком. Опять таки сэкономим время, если вернём сразу и частное и остаток.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
EvgenZ
Дата 3.8.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: 1
Всего: 11



в ASMe согласен, но в С++ зачем?


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
sergejzr
Дата 3.8.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Затем, что

Код

resultat=x/y;
ostatok=x%y;


Займёт вдвое больше времени, чем

Код

div_t d=div(x,y);
resultat=d.quot;
ostatok=d.rem;


 Какая разница, Асм это или Ци? smile




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Daevaorn
Дата 3.8.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(sergej.z @  3.8.2006,  20:16 Найти цитируемый пост)
Займёт вдвое больше времени, чем

Я бы не торопился с выводамиsmile
MSVS 2005:
Код

;     :    int a = arg1 / arg2;
;     :    int b = arg1 % arg2;

    mov    eax, DWORD PTR _arg1$[esp-4]
    cdq
    idiv    DWORD PTR _arg2$[esp-4]

Ну как? Впечатляет? smile
В div недостаток один - она библиотечная и скорей всего не инлайнится.
PM MAIL WWW   Вверх
sergejzr
Дата 3.8.2006, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Daevaorn, не впечатляет. Это оптимизация компилятора. 
Попробуй тоже самое с MS VS6.

или
Код

int x=6;
int y=2;
int z=x/y;
if(!x)
x--;

int u=x%y;

Уже проходили это где-то здесь на форуме...





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Daevaorn
Дата 4.8.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(sergej.z @  3.8.2006,  21:45 Найти цитируемый пост)
 Это оптимизация компилятора. 

И что? Я это и хотел показать.


Цитата(sergej.z @  3.8.2006,  21:45 Найти цитируемый пост)
Попробуй тоже самое с MS VS6.

И что? Может ещё на Turbo C++ попробовать?smile

Цитата(sergej.z @  3.8.2006,  21:45 Найти цитируемый пост)
или

И что?

=)
PM MAIL WWW   Вверх
sergejzr
Дата 9.8.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(Daevaorn @  4.8.2006,  08:36 Найти цитируемый пост)

И что?

То, что то, что всё компилятор оптимировать не может. Он конечно львинную долю автоматом делает, но немного понимать как там что и к чему тоже надо..

PS: 
Конечно это хорошо - пользоваться калькулятором, но 2*2 неплохо и в уме уметь решать.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.