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

Классы cpp - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где можно узнать о типе HDC? http://www.cyberforum.ru/cpp-beginners/thread1209140.html
Не подскажете, где можно узнать о типе HDC?
C++ Каждый элемент матрицы увеличить на сумму элементов его строки 3. Дан массив 5х4 (элементы массивы задаются случайным образом). Каждый элемент соответствующей строки увеличить на сумму элементов этой строки. http://www.cyberforum.ru/cpp-beginners/thread1209139.html
C++ Увеличить в массиве все четные числа, содержащиеся в массиве, на исходное значение первого четного числа
2. Дан массив, состоящий из N элементов (количество элементов массива и элементы массива вводятся с клавиатуры). Увеличить все четные числа, содержащиеся в массиве, на исходное значение первого четного числа. Если четные числа в массиве отсутствуют, то оставить массив без изменений.
C++ Записи: вывести номера тех, у которых зачетные оценки по всем трем предметам
Дается список учеников с отметками о результатах по трем предметам. Требуется вывести номера тех, у которых зачетные оценки по всем трем предметам (зачетными считаются оценки не ниже тройки). #include<iostream> #include<fstream> #include<iomanip> using namespace std; ifstream in("input.txt"); ofstream out("output.txt");
C++ Решаем уравнение http://www.cyberforum.ru/cpp-beginners/thread1209125.html
дано: х=2 q=4 функция: q=(++q\wedge x<<1)|(q&x++) сначала перевожу все в двоичный код получаю: x=2=0010 q=4=0100
C++ Перевод массива из char в int есть массив символьного типа. нужно перевести его в тип int для того, что бы далее производить над ним действия уже как с цифрами. как это сделать? подробнее

Показать сообщение отдельно
superNOOB
3 / 3 / 0
Регистрация: 04.10.2013
Сообщений: 37
16.06.2014, 01:07     Классы cpp
У меня есть mystring.h
Помогите пожалуйста исправить и дописать классы .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
/*----------------/
 mystring.h
/---------------*/
 
/*#ifndef MYSTRING_H
#define MYSTRING_H
#ifndef COMPLEX_H
#define COMPLEX_H
#ifndef IDENTIFICATION_H
#define IDENTIFICATION_H*/
 
#ifndef _STRING_HEADER_INCLUDED
#define _STRING_HEADER_INCLUDED
#include <stdlib.h>
#include <stdio.h>
 
// MYSTRING_H
class mystring           //базовый класс строки
{
protected:
    char *p;          // Указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки
    int length;      // Значение типа int - хранит длину строки в байтах
public:             // Обязательные методы должны выполнять следующие действия:
    mystring();    // Конструтор без параметров
    mystring(const char *s);     // Конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
    mystring(char c);           // Конструктор, принимающий в качестве параметра символ (char)
    mystring(const mystring &str);    // Конструктор копирования
    ~mystring();                     // Деструктор
    int get_length();               // Получение длины строки
};
 
 
 
 // IDENTIFICATION_H
// Производный от строка класс строка идентификатор (_A-Za-z0-9)
class identification: public mystring
{
public:                                 // Обязательные методы:
    identification();                  // Конструтор без параметров
    identification(const char *s);    // Конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
    identification(char c);          // Конструктор, принимающий в качестве параметра символ (char)
    identification(const identification &str);    // Конструктор копирования
    ~identification();                           // Деструктор
 
//---------------------------------------------------------------
//здесь перевод всех символов строки (кроме цифр) в верхний регистр, реализованный на ассме
//==================================================
 
 
 
    identification operator+(identification id);    // Переопределим сложение  (+) - операция конкатенации строк
    identification operator=(identification id);   // Переопределим присваивание (=)
    bool operator<(identification id);            // Переопределим оператор  <   - проверка на меньше. Строка считается меньше другой,
                                                 //если код символа первой строки в i-й позиции
                                                // (i изменяется от 0 до n-1, где n - длина более
                                               // короткой строки) меньше кода символа в той же позиции
                                              // кода символа в той же позиции во второй строке,
                                             // длины строк могут не совпадать.
};
 
 
 
 
 // COMPLEX_H
// Производный от строка класс комплексное число (+-0-9i)
class complex: public mystring
{
public:
    complex();                              // Конструтор без параметров
    complex(const char *s);                // Конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом)
    complex(const complex &str);          // Конструктор копирования
    ~complex();                          // Деструктор
    complex operator*(complex com);     // Переопределим умножение (*)
    complex operator=(complex com);    // Переопределим присваивание (=)
    complex operator==(complex com);  // Проверка на равенство
};
 
#endif

Вот нерабочий кусок классов .cpp

/*----------------/
mystring.cpp совсем не работает, всё ошибочно
/---------------*/

/*----------------/
identification.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//тут старый кусок, переменные не все на месте
 
identification::identification(void):mystring()
{
     print_i("конструктор класса identification по умолчанию.\0");
}
 
identification::identification(const identification &s)
{
    print_i("конструктор копирования класса identification.\0");
    char *st = const_cast<identification &>(s).getString();
    int width = strlen(st);
    str = (char*)malloc(width);
    strcpy(str,st);
    str[width] = '\0';
}
 
 
identification::identification(char *s) : mystring(s)
{
     print_i("конструктор класса identification, принимающий строку.\0");
    int i=0,fl = 0;
    if(!((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')||str[i]=='_')) fl=1;
    while(str[++i])
        if(!((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')||str[i]=='_'||(str[i]>='0'&&str[i]<='9'))) fl = 1;
    char *reserved_words[AMOUNT_OF_RESERVED_WORDS] =
    {
        "asm",          "else",     "new",              "this",
        "auto",         "enum",     "operator",         "throw",
        "bool",         "explicit", "private",          "true",
        "break",        "export",   "protected",        "try",
        "case",         "extern",   "public",           "typedef",
        "catch",        "false",    "register",         "typeid",
        "char",         "float",    "reinterpret_cast", "typename",
        "class",        "for",      "return",           "union",
        "const",        "friend",   "short",            "unsigned",
        "const_cast",   "goto",     "signed",           "using",
        "continue",     "if",       "sizeof",           "virtual",
        "default",      "inline",   "static",           "void",
        "delete",       "int",      "static_cast",      "volatile",
        "do",           "long",     "struct",           "wchar_t",
        "double",       "mutable""switch",           "while",
        "dynamic_cast", "namespace","template"
    };
    for(i=0; i< AMOUNT_OF_RESERVED_WORDS; i++)
        if(!strcmp(str,reserved_words[i])) fl = 1;
    if(fl)
    {
        free(str);
        str = NULL;
    }
}
 
identification::~identification(void)
{
     print_i("деструктор класса identification, принимающий строку.\0");
}
 
void identification::operator=(identification &s)
{
    print_i("identification::operator=. \0");
    width = strlen(s.getString());
    free(str);
    str = (char*)malloc(width);
    strcpy(str,s.getString());
    str[width] = '\0';
}
 
int identification::operator==(identification &s)
{
    print_i("identification::operator==. \0");
    char *st = s.getString();
    if(!strcmp(st,str)) return 1;
    return 0;
}
 
 
//часть с ассемблером
 
 
identification& identification::operator-(identification &s)
{
    print_i("identification::operator-. \0");
    if( !str || !strcmp(s.getString(),str) )
    {
        identification *t = new identification;
        return *t;
    }
    int w = strlen(s.getString()),p,k=0;
    char *str2 = (char*)malloc(w);
    char *str3 = (char*)malloc(width);
    strcpy(str2,s.getString());
    for(int i=0; i<width; i++)
    {
        p=0;
        for(int j=0; j<w; j++)
        {
            if( str[i] == str2[j] ) break;
            p++;
        }
        if(p==w)
        {
            str3[k] = str[i];
            k++;
        }
    }
    str3 = (char*)realloc(str3,k);
    str3[k] = '\0';
    identification *result = new identification(str3);
    free(str2);
    free(str3);
    return *result;
}
И комплексное число не знаю как описать

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