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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kiborg_18
4 / 4 / 0
Регистрация: 21.02.2011
Сообщений: 61
#1

Поле чисел от 0 до N - C++

19.04.2011, 18:37. Просмотров 288. Ответов 4
Метки нет (Все метки)

Как в С++ или в С создать поле чисел, которое включает в себя все числа от 0 до N?
Напрмер поле чисел 0_3, включает в себя 0,1,2. 2+1 должно давать 0, 1+2 должно давать 0. кто-нибудь может помочь? Буду очень признателен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 18:37     Поле чисел от 0 до N
Посмотрите здесь:

C++ Статическое поле
Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах C++
Вещественное поле C++
Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) C++
C++ шахматное поле
Поле first — целое число, левая граница диапазона, включается в диапазон; поле second — целое число, правая граница диапазона, не включается в диапазо C++
C++ Поле шахматной доски определяется парой натуральных чисел
C++ Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? C++
Поле со списком C++
Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел C++
C++ Поле чудес С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
19.04.2011, 19:21     Поле чисел от 0 до N #2
Создаешь свой класс, пишешь операторы. Cложение будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
...
int n;
int value;
pole operator+=(pole b)
{
    value = (value + b.value)%n;
    return *this;
}
...
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.04.2011, 22:04     Поле чисел от 0 до N #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/////////////////////////////////////////////////////////////////////////////////////////
//Как в С++ или в С создать поле чисел, которое включает в себя все числа от 0 до N?
//Напрмер поле чисел 0_3, включает в себя 0,1,2. 2+1 должно давать 0, 1+2 должно давать 0.
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
template<int  characteristic>
class  T_field
{    
    int  val_;
    //-----------------------------------------------------------------------------------
public:
    //-----------------------------------------------------------------------------------
    T_field(int  int_val) : val_(normalize(int_val))
    {
        if(!is_prime(characteristic))
        {
            std::cout << "Характеристика поля "
                      << characteristic
                      << " не является простым числом."
                      << std::endl;
 
            throw(0);
        }
    }
    //-----------------------------------------------------------------------------------
    T_field  operator- ()
    {
        return  -val_;    
    }
    //-----------------------------------------------------------------------------------
    friend T_field  operator+ (T_field  f,  T_field  g)
    {
        return  f.val_ + g.val_;
    }
    //-----------------------------------------------------------------------------------
    friend T_field  operator- (T_field  f,  T_field  g)
    {
        return  operator+ (f, -g);
    }
    //-----------------------------------------------------------------------------------
    friend T_field  operator* (T_field  f,  T_field  g)
    {
        return  f.val_ * g.val_;
    }
    //-----------------------------------------------------------------------------------
    friend T_field  operator/ (T_field  f,  T_field  g)
    {
        if(g.val_ == 0)
        {
            std::cout << "Деление на ноль."
                      << std::endl;
            throw(0);
            return  0;
        }
        while(f.val_ % g.val_ != 0)
        {
            f.val_ += characteristic;
        }
        return  f.val_ / g.val_;
    }
    //-----------------------------------------------------------------------------------
    friend  std::ostream&  operator<< (std::ostream&  ostr, T_field  f)
    {
        ostr << f.val_;
        return  ostr;
    }
    //-----------------------------------------------------------------------------------
private:
    //-----------------------------------------------------------------------------------
    int  normalize(int  n)
    {
        while(n < 0)
        {
            n += characteristic;
        }
        return  n % characteristic;
    }
    //-----------------------------------------------------------------------------------
    bool  is_prime(int  n)
    {
        for(int  i = 2; i * i <= n; ++i)
        {
            if(n % i == 0)  return  false;
        }
        return  true;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    //typedef  T_field<6>  T_field_6;
    //T_field_6  g(7);
 
    typedef  T_field<5>  T_field_5;
    T_field_5  f_7 = 7;
    std::cout << "f_7 = "
              << f_7
              << std::endl;
 
    T_field_5  f_11(11);
    std::cout << "f_11 = "
              << f_11
              << std::endl;
 
    T_field_5  f_3_1(3);
    T_field_5  f_3 = f_3_1;
    T_field_5  f_4(4);
 
    std::cout << "f_3 * f_4 = "
              << f_3 * f_4
              << std::endl;
 
    std::cout << "f_3 * 4 = "
              << f_3 * 4
              << std::endl;
 
 
    std::cout << "3 * f_4 = "
              << 3 * f_4
              << std::endl;
 
 
    std::cout << "f_3 / f_4 = "
              << f_3 / f_4
              << std::endl;
 
    std::cout << "f_3 - f_4 = "
              << f_3 - f_4
              << std::endl;
 
    std::cout << "-f_3 = "
              << -f_3
              << std::endl;
 
    T_field_5  f_1(1);
    std::cout << "f_1 / f_3 = "
              << f_1 / f_3
              << std::endl;
 
    std::cout << "1 / f_3 = "
              << 1 / f_3
              << std::endl;
 
    std::cout << "997 / f_3 = "
              << 997 / f_3
              << std::endl;
 
    std::cout << "(f_3 + f_4) * f_3 = "
              << (f_3 + f_4) * f_3
              << std::endl;
 
    std::cout << "f_4 / (f_3 - f_3) = "
              //<< f_4 / (f_3 - f_3)
              << std::endl;
}
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
19.04.2011, 22:17     Поле чисел от 0 до N #4
Mr.X, а почему характеристика поля должно быть простым числом??
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.04.2011, 22:31     Поле чисел от 0 до N #5
Цитата Сообщение от Overmind024 Посмотреть сообщение
Mr.X, а почему характеристика поля должно быть простым числом??
Согласно теории, характеристика конечного поля является простым числом.
Число элементов любого конечного поля есть его характеристика в натуральной степени: |Fq| = q = p^n.
Я взял простейший случай n = 1.
Yandex
Объявления
19.04.2011, 22:31     Поле чисел от 0 до N
Ответ Создать тему
Опции темы

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