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

Реализовать методы класса Sint (secure integer) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ "Пробег" по массиву. http://www.cyberforum.ru/cpp-beginners/thread352398.html
Здравствуйте! Стоит следующая задача: Программе необходимо проверить длину серии одинаковых элементов массива. И вывести максимальную длину серии. Например, для следующего массива из 20 элементов максимальный пробег будет 5 нулей. {'0','1','0','1','1','0','0','0','1 ', '1','0','0','0','0','0','1','0', '1','0', '0'} Мой вариант программы теряет промежуточные величину пробега. Хотел...
C++ Подскажите как прочитать целочисленное значение из string. Помогите! Есть файл содержащий значения для некоторых целочисленных переменных в виде "имя = значение": vn1 = 11 vn2 = 131 vn3 = 74 *Числа могут быть либо трёхзначные, либо двухзначные. Вопрос - как проще и логичнее считать эти числа в свои переменные?(можно переформатировать файл) Я сделал так: 1) Прочитал файл в одномерный символьный массив 2) Используя strstr() находил нужное имя... http://www.cyberforum.ru/cpp-beginners/thread352393.html
C++ Как выучить C++?
Привет всем! У меня такой вопрос тем кто учил или учит C++: Как выучить C++? А именно меня интересует какую литературу прочитать, может быть какието подборки книг что бы не чего не упустить. На какие сайты сходить посмотреть. Какие видео уроки посмотреть. Вообщем хотелось бы что бы был какойто план для язучения C++.
C++ как правльно вовести результат с помощью файлов
#include <iostream> #include <stream> using namespace std; int main() { ifstream in; ofstream out; in.open ("input.txt"); out.open("output.txt");
C++ Обратный порядок цифр в числе http://www.cyberforum.ru/cpp-beginners/thread352373.html
После ввода числа (in) не выводится выходное число (out). Код: #include <iostream> #define STEP 10 using namespace std; int main() { int in;
C++ Консоль. Чисто технический вопрос. Вопрос такой. Как работать с консолью?.. Нет, первая мысль плохая. Может я плохо выразился. Впрочем - скорее всего. Поясняю. Есть программа, написанная на C#. Она скачивает из ин-та страничку и сохраняет в файл. Есть концепция. Реализация на C++ (потому что надо на нём, для самореализации и понимания основ языка). Она должна этот скачанный файл открыть. Проблема - я не хочу перед открытием... подробнее

Показать сообщение отдельно
fort-_-minor
6 / 6 / 2
Регистрация: 30.07.2010
Сообщений: 87
20.09.2011, 21:50  [ТС]     Реализовать методы класса Sint (secure integer)
вот пример файл sint.cpp
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
// sint.cpp :Secure Integer Class
// this file contains a sample test program that may be used to test your solution
// the actual test program may contain additional tests
 
#include <iostream>
#include "sint.h"
using namespace std;
 
// sint class implementation goes here
 
int main(void) {
    signed char c1 = 5;
    signed char c2 = 12;
    signed char c3 = 127;
 
    sint sc1(c1);
    sint sc2(c2);
    sint sc3(c3);
 
    try {
        sc1 = sc1;
        cout << "sc1 = " << sc1 << endl;
 
        sc1 = sc1 + sc2;
        cout << "sc1 = " << sc1 << endl;
 
        sc2 = sc2 + 4;
        cout << "sc2 = " << sc2 << endl;
 
        sc2 = 7 + sc2;
        cout << "sc2 = " << sc2 << endl;
 
        sc2 = -125;
        cout << "sc2 = " << sc2 << endl;
 
        sc2 = sc1 + sc3 + sc2;
        cout << "sc2 = " << sc2 << endl;
 
        sc1 = sc2 + sc1 + 10;
        cout << "sc1 = " << sc1 << endl;
    }
    catch (SignError ie) {
        cerr << "Sign error" << endl;
    }
    catch (RangeError ie) {
        cerr << "Range error" << endl;
    }
    catch (Overflow ie) {
        cerr << "Overflow" << endl;
    }
 
    try {
        sc2 = sc1 + sc3;
        cout << "sc2 = " << sc2 << endl;
    }
    catch (SignError ie) {
        cerr << "Sign error" << endl;
    }
    catch (RangeError ie) {
        cerr << "Range error" << endl;
    }
    catch (Truncation) {
        cerr << "Truncation" << endl;
    }
    catch (Overflow ie) {
        cerr << "Overflow" << endl;
    }
 
    signed int si1 = 10;
    signed int si2 = 100;
 
    sint ssi1(si1);
    sint ssi2(si2);
 
    ssi1 = ssi1 + ssi2;
    ssi2 = ssi2 + si2;
 
    unsigned int ui1 = 56;
    unsigned int ui2 = 32;
    sint sui1(ui1), sui2(ui2);
    sui1 = sui1 + ui2;
    sui2 = sui1 + sui2;
 
    // conversions
 
    sui2 = ssi1 + sc2;
 
    sint i(10), j(12);
    i = c1 + c2;
    i = j + 7;
    i = 5 + j;
    i = j + i + 5;
 
    return 0;
}
файл sint.h
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
class IntError {};
class Overflow : public IntError {};
class DivideByZero : public IntError {};
class Truncation : public IntError {};
class SignError: public IntError {};
class RangeError: public IntError {};
class UnknownIntegerType : public IntError {};
 
class sint {
public:
    // don't use char without a sign, not supported
    typedef enum { signed_char = 1, signed_short = 2, signed_int = 3,
           signed_long = 4, signed_long_long = 5,
           unsigned_char = 6, unsigned_short = 7, unsigned_int = 8,
           unsigned_long = 9, unsigned_long_long = 10} integer_type;
 
    typedef union sinteger_ {
        signed char sc;
        signed short ss;
        signed int si;
        signed long sl;
        signed long long sll;
        unsigned char uc;
        unsigned short us;
        unsigned int ui;
        unsigned long ul;
        unsigned long long ull;
    } sinteger;
 
    sint(const signed char sc);
    sint(const signed int short ss);
    sint(const signed int init);
    sint(const signed long init);
    sint(const signed long long init);
    sint(const unsigned char uc);
    sint(const unsigned int short us);
    sint(const unsigned int init);
    sint(const unsigned long init);
    sint(const unsigned long long init);
 
    sint & operator= (const sint& rhs);
    sint & operator= (const signed char& rhs);
    sint & operator= (const signed short& rhs);
    sint & operator= (const signed int& rhs);
    sint & operator= (const signed long& rhs);
    sint & operator= (const signed long long& rhs);
    sint & operator= (const unsigned char& rhs);
    sint & operator= (const unsigned short& rhs);
    sint & operator= (const unsigned int& rhs);
    sint & operator= (const unsigned long& rhs);
    sint & operator= (const unsigned long long& rhs);
 
    const sint operator+ (const sint& rhs) const;
    const sint operator+ (const signed char&) const;
    const sint operator+ (const signed short&) const;
    const sint operator+ (const signed int& rhs) const;
    const sint operator+ (const signed long& rhs) const;
    const sint operator+ (const signed long long& rhs) const;
    const sint operator+ (const unsigned char&) const;
     const sint operator+ (const unsigned short&) const;
    const sint operator+ (const unsigned int& rhs) const;
    const sint operator+ (const unsigned long& rhs) const;
    const sint operator+ (const unsigned long long& rhs) const;
 
    const bool is_signed();
    const bool is_unsigned();
    const signed long long get_signed_value();
    const unsigned long long get_unsigned_value();
    const char *get_type();
 
private:
    sinteger i;
    integer_type descriminator;
};
 
Текущее время: 07:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru