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

div и mod - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.81
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
23.05.2011, 17:37     div и mod #1
Помогите, пожалуйста: вводимое с клавиатуры число n нужно разделить следующим образом (n, n1, n2 - целые ): если n четное, то n1 = n2 = n/2, если n нечетное, то n1 = n div 2 + 1, n2 = n - n1.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 17:37     div и mod
Посмотрите здесь:

C++ div и mod, вернее их аналоги в C++ не подходят для вещественных чисел
C++ mod и div
mod и div ?? C++
mod и div (Чистый С) C++
DIv MOD в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.05.2011, 18:15     div и mod #2
а в чем проблема?
стандартные операции: деление-"/", разность-"-".
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
23.05.2011, 18:31     div и mod #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int main()
{
    int n,n1,n2;
    cout<<"vvedite n,n1,n2: ";
    cin>>n>>n1>>n2;
    if(n%2) n1=n2=n/2;
    else
    {
        n1=n/2+1;
        n2=n-n1;
    }
    cout<<"n1="<<n1<<"  n2="<<n2;
    return 0;
}
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
23.05.2011, 18:34  [ТС]     div и mod #4
Проблема в том, что в проверке нужно использовать не стандартные операции деления, а операцию div..
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
23.05.2011, 18:40     div и mod #5
Цитата Сообщение от pro_mary Посмотреть сообщение
Проблема в том, что в проверке нужно использовать не стандартные операции деления, а операцию div..
А зачем? Ты уверен(а)? Вот что делает div:
Код
DIV(3)                                                                                  Linux Programmer's Manual                                                                                  DIV(3)

NAME
       div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an integer division

SYNOPSIS
       #include <stdlib.h>

       div_t div(int numerator, int denominator);
       ldiv_t ldiv(long numerator, long denominator);
       lldiv_t lldiv(long long numerator, long long denominator);

       #include <inttypes.h>

       imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       lldiv():
           _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
           or cc -std=c99

DESCRIPTION
       The  div() function computes the value numerator/denominator and returns the quotient and remainder in a structure named div_t that contains two integer members (in unspecified order) named quot
       and rem.  The quotient is rounded toward zero.  The result satisfies quot*denominator+rem = numerator.

       The ldiv(), lldiv(), and imaxdiv() functions do the same, dividing numbers of the indicated type and returning the result in a structure of the indicated name, in all cases with fields quot  and
       rem of the same type as the function arguments.

RETURN VALUE
       The div_t (etc.) structure.

CONFORMING TO
       SVr4, 4.3BSD, C89.  The functions lldiv() and imaxdiv() were added in C99.

EXAMPLE
       After

               div_t q = div(-5, 3);

       the values q.quot and q.rem are -1 and -2, respectively.

SEE ALSO
       abs(3), remainder(3)

COLOPHON
       This page is part of release 3.32 of the Linux man-pages project.  A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

                                                                                                2010-09-20                                                                                         DIV(3)
А тебе достаточно оператора "/".
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.05.2011, 18:45     div и mod #6
Есть кусок кода из длинной арифметики.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct div_result{
    std::vector<int> div;
    long long mod;
};
div_result div(std::vector<int> a,long long b){ //В каждой ячейке вектора 1 цифра, числа лежат в перевернутом виде
    div_result q;
    std::vector<int> c;
    bool k=false;
    long long x=0;
    for (int i=a.size()-1;i>=0; i--){
        x=x*10+a[i];
        if (x<b&&!k&&i) continue;
        k=true;
        c.push_back(x/b);
        x%=b;
    }
    std::reverse(c.begin(),c.end());
    q.div.assign(c.begin(),c.end());
    q.mod=x;
    return q;
}
Yandex
Объявления
23.05.2011, 18:45     div и mod
Ответ Создать тему
Опции темы

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