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

ООП, разобрать задание. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ справочная система компонентов компьютерной техники - С++ http://www.cyberforum.ru/cpp-beginners/thread285537.html
Помогите пожалуйста!!!Тема курсовой-справочная система компонентов компьютерной техники Нужно написать программу на языке С++ Поняла только что необходимо использовать тему классы и можно будет воспользоваться массивом
C++ Лабораторная на C++. Строки. Очень прошу помочь!) Нужно написать программу на языке C++ с использованием стандартных функций для обработки строк.(не CString) Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. Длина текста не больше 200 символов, могут быть использованы любые символы. Словом считать последовательность символов, не содержащую пробел. Выдать слова текста и их длины.... http://www.cyberforum.ru/cpp-beginners/thread285535.html
C++ программа которая по дате находит день недели на который эта дата приходится
Ребята помогите пожалуйста написать программу, можно на с++ или на java или c#. Если не тяжело помогите для зачета нужно пожалуйста!
C++ Работа с файлами
задача выводит банные, просматривает и нужно удалять , для простоты скажим удалять всё не пользуясь способом открытия файла. #include"stdafx.h" #include<string.h> #include<fstream> #include<iostream> #include<stdlib.h> using namespace std;
C++ симметричная прогонка http://www.cyberforum.ru/cpp-beginners/thread285489.html
Всем доброго времени суток! помогите написать симметричную прогонку для трехдиагональной матрицы на С++. пожалуйста
C++ Разыменование нулевого указателя Как вообще по стандарту ведет себя программа после разыменования нулевого указателя? Указано-ли это явно? Просто сегодня на работе обнаружил код вроде #include <iostream> #define SOME_DEFINE class NullClass { подробнее

Показать сообщение отдельно
fastfooddgd
0 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 7

ООП, разобрать задание. - C++

29.04.2011, 12:16. Просмотров 791. Ответов 7
Метки (Все метки)

Составить описание класса для представления комплексных чисел с возможностью задания вещественной и мнимой частей как числами типов double, так и целыми числами. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел

Нужно посмотреть в коде ошибки, препод придирается к ней, но не поясняет в чем проблема

Main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "compl.h"
void main() {
    compl c1( 102, 71 ), c2( 3.2, 2.1 ), c3;
    cout << "Complex number 1 = \t";
    c1.getCompl();
    cout << "Complex number 2 = \t";
    c2.getCompl();
    cout << "Number 1 + Number 2 = \t";
    c3 = c1 + c2;
    c3.getCompl();
    cout << "Number 1 - Number 2 = \t";
    c3 = c1 - c2;
    c3.getCompl();
    cout << "Number 1 * Number 2 = \t";
    c3 = c1 * c2;
    c3.getCompl();
}
Файл Compl.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef COMPL_H
#define COMPL_H
using namespace std;
class compl {
    double d, m;
public:
    compl( int d, int m );
    compl( double d, double m );
    compl();
    compl operator+ ( compl c2 );
    compl operator- ( compl c2 );
    compl operator* ( compl c2 );
    void getCompl();
};
#endif /* COMPL_H */
Файл Compl.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
#include <iostream>
#include "compl.h"
compl::compl( int d, int m ) 
{
    this->d = d;
    this->m = m;
}
 
compl::compl( double d, double m ) 
{
    this->d = d;
    this->m = m;
}
compl::compl() {    }
compl compl::operator+( compl c2 ) 
{
    compl temp;
    temp.d = d + c2.d;
    temp.m = m + c2.m;
    return temp;
}
compl compl::operator-( compl c2 ) 
{
    compl temp;
    temp.d = d - c2.d;
    temp.m = m - c2.m;
    return temp;
}
compl compl::operator*( compl c2 ) 
{
    compl temp;
    temp.d = d * c2.d - m * c2.m;
    temp.m = d * c2.m + m * c2.d;
    return temp;
}
void compl::getCompl() { cout << "d = " << d << ",\tm = " << m << endl; }
Добавлено через 10 минут
Так же если не трудно помогите разобрать задачи.

Составить описание объектного типа TMatr, обеспечивающего размещение матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы.

main.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
#include "matrix.h"
#include <iostream>
void main() {
    int rows, cols;
    cout << "Rows - ";
    cin >> rows;
    cout << "Cols - ";
    cin >> cols;
    matrix TMatr( rows, cols );
    TMatr.set();
    cout << "Enter number for change rows: ";
    cin >> rows;
    cout << "Enter number for change cols: ";
    cin >> cols;
    if ( rows != 0 || cols != 0 ) {
        if ( (rows >= 0 && cols > 0) || (rows > 0 && cols >= 0) )
            TMatr.plus_plus( rows, cols );
        if ( (rows <= 0 && cols < 0) || (rows < 0 && cols <= 0) )
            TMatr.minus_minus( rows, cols );
        if (rows < 0 && cols > 0)
            TMatr.minus_plus( rows, cols );
        if (rows > 0 && cols < 0)
            TMatr.plus_minus( rows, cols );
    }
    TMatr.print();
    int pos_i, pos_j, num_r, num_c;
    cout << "Enter i position of element: ";
    cin >> pos_i;
    cout << "Enter j position of element: ";
    cin >> pos_j;
    cout << "Enter number of rows of new matrix: ";
    cin >> num_r;
    cout << "Enter number of cols of new matrix: ";
    cin >> num_c;
    TMatr.printSub( pos_i, pos_j, num_r, num_c );
}
matrix.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef MATRIX_H
#define MATRIX_H
using namespace std;
class matrix {
    int rows, cols;
    double **matr; 
public: 
    matrix( int, int );
    void set();
    void plus_plus( int, int );
    void minus_minus( int, int );
    void minus_plus( int, int );
    void plus_minus( int, int );
    void print();
    void printSub( int, int, int, int );
};
#endif /* MATRIX_H */
matrix.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
#include "matrix.h"
#include <iostream>
matrix::matrix( int rows, int cols ) {
    this->rows = rows;
    this->cols = cols;
    matr = new double *[rows];
    for ( int i = 0; i < rows; i ++ ) {
        matr[i] = new double [cols];
    }
}
void matrix::set() {
    for ( int i = 0; i < rows; i ++ ) {
        for (int j = 0; j < cols; j ++ ) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> matr[i][j];
        }
    }
}
void matrix::plus_plus( int new_r, int new_c ) {
    int i, j;
    matr = ( double** ) realloc( matr, (rows + new_r) * sizeof( double* ));
    for ( i = rows; i < (rows + new_r); i ++ )
        matr[i] = NULL;
    for ( i = 0; i < (rows + new_r); i ++ )
        matr[i] = ( double* ) realloc( matr[i], (cols + new_c) * sizeof( double ));
    cout << "Fill new row/rows:" << endl;
    for ( i = rows; i < (rows + new_r); i ++ ) {
        for ( j = 0; j < cols; j ++ ) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> matr[i][j];
        }
    }
    rows += new_r;
    cout << "Fill new col/cols:" << endl;
    for ( i = 0; i < rows; i ++ ) {
        for ( j = cols; j < (cols + new_c); j ++ ) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> matr[i][j];
        }
    }
    cols += new_c;
}
void matrix::minus_minus( int new_r, int new_c ) {
    int i, j;
    matr = ( double** ) realloc( matr, (rows + new_r) * sizeof( double* ));
    for ( i = rows; i < (rows + new_r); i ++ )
        matr[i] = NULL;
    for ( i = 0; i < (rows + new_r); i ++ )
        matr[i] = ( double* ) realloc( matr[i], (cols + new_c) * sizeof( double ));
    rows += new_r;
    cols += new_c;
}
void matrix::minus_plus( int new_r, int new_c ){
    int i, j;
    matr = ( double** ) realloc( matr, (rows + new_r) * sizeof( double* ));
    for ( i = rows; i < (rows + new_r); i ++ )
        matr[i] = NULL;
    for ( i = 0; i < (rows + new_r); i ++ )
        matr[i] = ( double* ) realloc( matr[i], (cols + new_c) * sizeof( double ));
    cout << "Fill new rows/cols:" << endl;
    for ( i = 0; i < (rows + new_r); i ++ ){
        for ( j = cols; j < (cols + new_c); j ++ ){
            cout << "A[" << i << "][" << j << "] = ";
            cin >> matr[i][j];
        }
    }
    rows += new_r;
    cols += new_c;
}
void matrix::plus_minus( int new_r, int new_c ) {
    int i, j;
    matr = ( double** ) realloc( matr, (rows + new_r) * sizeof( double* ));
    for ( i = rows; i < (rows + new_r); i ++ )
        matr[i] = NULL;
    for ( i = 0; i < (rows + new_r); i ++ )
        matr[i] = ( double* ) realloc( matr[i], (cols + new_c) * sizeof( double ));
    cout << "Fill new rows/cols:" << endl;
    for ( i = rows; i < (rows + new_r); i ++ ) {
        for ( j = 0; j < (cols + new_c); j ++ ) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> matr[i][j];
        }
    }
    rows += new_r;
    cols += new_c;
}
void matrix::print() {
    int i, j;
    cout << "Matrix:" << endl;
    for ( i = 0; i < rows; i ++ ) {
        for (j = 0; j < cols; j ++ ) {
            cout << matr[i][j] << "  ";
        }
        cout << endl;
    }
}
void matrix::printSub( int pos_i, int pos_j, int num_r, int num_c ) {
    int i, j;
    cout << "Your matrix:" << endl;
    for ( i = pos_i; i < pos_j + num_r; i ++ ) {
        for ( j = pos_j; j < pos_i + num_c; j ++ ) {
            cout << matr[i][j] << "  ";
        }
        cout << endl;
    }
}
Добавлено через 1 минуту
Составить описание класса одномерных массивов строк, каждая строка которых задается длиной и указателем на выделенную для нее память. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы индексов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, печать (вывод на экран) элементов массива и всего массива.

Main.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
#include "ArrayStr.h"
#include <iostream>
 
void main() {
    int n = 3;
    string *str1, *str2;
 
    str1 = new string[n];
    str2 = new string[n];
 
    str1[0] = "One";
    str1[1] = "Two";
    str1[2] = "Three";
 
    str2[0] = "-One";
    str2[1] = "Two";
    str2[2] = "-Three";
 
    ArrayStr s1( n, str1 ), s2( n, str2 ), s3;
 
    cout << "String 1" << endl;
    s1.getArrayStr( 3 );
    cout << "String 2" << endl;
    s2.getArrayStr( 1 );
    cout << "String 3 = s1 + s2" << endl;
    s3 = s1 + s2;
    s3.getArray();
    cout << "String 3 = s1 xor s2" << endl;
    s3 = s1.Merge(s2);
    s3.getArray();
    delete [] str1;
    delete [] str2;
 
}
ArrayStr.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef ARRAYSTR_H
#define ARRAYSTR_H
 
#include <string>
 
using namespace std;
 
class ArrayStr {
    int n;
    string *s;
public:
    ArrayStr( int n, string *str );
    ArrayStr();
 
    ArrayStr operator+( ArrayStr s2 );
    ArrayStr Merge( ArrayStr a2 );
 
    void getArrayStr( int ind );
    void getArray();
};
#endif /* ARRAYSTR_H */
ArrayStr.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
#include <iostream>
#include "ArrayStr.h"
 
ArrayStr::ArrayStr( int n, string *str ) {
    this->n = n;
    s = new string[n];
    for ( int i = 0; i < n; i++ ) {
        s[i] = str[i];
    }
}
ArrayStr::ArrayStr() {}
ArrayStr ArrayStr::operator+( ArrayStr a2 ) {
    ArrayStr tmp;
    tmp.n = n;
    tmp.s = new string[n];
    for( int i = 0; i < n; i++ ) {
        tmp.s[i] = s[i] + a2.s[i];
    }
    return tmp;
    delete [] tmp.s;
}
ArrayStr ArrayStr::Merge( ArrayStr a2 ) {
    ArrayStr tmp;
    tmp.n = n;
    tmp.s = new string[n];
    for( int i = 0; i < n; i++ ) {
        if (s[i] != a2.s[i]) {
            tmp.s[i] = s[i] + a2.s[i];
        }
        continue;
    }
    return tmp;
    delete [] tmp.s;
}
void ArrayStr::getArrayStr( int ind ) {
    if (ind >= 0 && ind <= n) {
        cout << "s[" << ind << "] = " << s[ ind - 1 ] << endl;
    }
    else cout << "Error!" << endl;
}
void ArrayStr::getArray() {
    for( int i = 0; i < n; i++ ) {
        cout << "str[" << i+1 << "] = " << s[ i ] << endl;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru