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

Задача по классам.с++ - C++

Восстановить пароль Регистрация
 
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
15.02.2012, 21:52     Задача по классам.с++ #1
Задание 1

Разработать пользовательский тип (класс) «матрица целых чисел».

Класс должен содержать:
– все нужные поля, исходя из условия задачи (будет оцениваться РАЗУМНЫЙ выбор полей и правильные имена),
– конструктор по умолчанию,
– конструктор с параметрами,
– конструктор копирования,
– деструктор.

Также класс должен содержать:
– “get” и “set” методы для элементов матрицы;
– “get” методы для размеров матрицы;
лучайных чисел.

Код класса нужно оформить в виде двух файлов: заголовочного файла с объявлением класса и файла реализации.

Для демонстрации возможностей класса необходимо написать программу (отдельный файл), последовательно демонстрирующую все перечисленные методы.
методы транспонирования, сложения, умножения и печати матриц.

Для сложения и умножения матриц предусмотреть необходимые проверки .
Матрицу хранить в динамическом двумерном массиве.
Размерность вводить с клавиатуры.
Заполнять матрицу через генератор случайных чисел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 21:52     Задача по классам.с++
Посмотрите здесь:

учебник по классам C++
C++ Вопрос по классам
Вопрос по Классам... C++
C++ Вопрос по классам
Задача по объектам и классам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
15.02.2012, 22:07     Задача по классам.с++ #2
Тина_Ливингстон, такие задания решать скучно и не интересно, никто вам очередной вариант сам набирать скорее всего не будет так что ищите готовый вариант в гугле либо здесь на форуме, эту задачу решали много-много-много раз.

Добавлено через 1 минуту
Вот например http://www.cyberforum.ru/faq/thread4...ml#post2471796
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
15.02.2012, 23:25  [ТС]     Задача по классам.с++ #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
#include "hedr.h"
Matrix::Matrix ( int nR , int nC )
{
    if ( ( nR <= 0 ) || ( nC <= 0 ) )
        throw "Размеры мтрицы введены неверно";
    nRow = nR;
    nCol = nC;
    matr = new float * [nRow];
    for ( int i = 0 ; i <nRow ; i++ )
        matr [i] = new float [nCol];
    for ( int i = 0 ; i < nRow ; i++ )
        for ( int j = 0 ; j < nCol ; j++ )
            matr [i][j] = 0 ;
}
Matrix ::Matrix(const Matrix &b)
{
    nRow = b.nRow ;
    nCol = b.nCol ;
    matr = new float * [nRow] ;
    for ( int i = 0 ; i < nRow ; i++ )
        matr [i] = new float [nCol];
    for ( int i = 0 ; i < nRow ; i++ )
        for ( int j = 0 ; j < nCol ; j++ )
            matr [i][j] = b.matr[i][j];
}
 
 
int Matrix ::get_row()
{
    return nRow ;
}
int Matrix ::get_col()
{
    return nCol;
}
double Matrix ::get_item( int i, int j )
{
    return matr [i][j] ;
}
void Matrix ::set_item(int i , int j , double t )
{
    matr [i][j] = t ;
}
void Matrix ::Summa(const Matrix &m)
{
    for ( int i = 0 ; i < nRow ; i++ )
        for ( int j = 0 ; j < nCol ; j++ )
            matr[i][j]+=m.matr[i][j];
}
void Matrix ::Transponirov(const Matrix &m)
{
    for ( int i = 0 ; i < nRow ; i++ )
        for ( int j = 0 ; j < nCol ; j++ )
            matr[i][j]=m.matr[j][i];
}
Matrix Matrix ::Proizv(const Matrix &m) const
{
    Matrix tmp ( nRow , m.nCol ) ;
    for ( int i = 0 ; i < nRow ; i++ )
        for ( int j = 0 ; j < m.nCol ; j++ )
            for ( int k = 0 ; k < nCol ; k++ )
                tmp.matr[i][j]+=matr[i][k]*m.matr[k][j];
    return tmp;
}
Matrix ::~Matrix()
{
    for ( int i =0 ; i < nRow ; i++ )
        delete [] matr [i];
    delete [] matr ;
}
Заголовочный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Matrix
{
private:
    int nRow, nCol;
    float **matr;
public:
    Matrix (int, int);//конструктор с параметрами
    Matrix (const Matrix &);//конструктор копирования
    Matrix ();
    int get_row ();
    int get_col ();
    double get_item (int, int);
    void set_item (int, int, double);
    ~Matrix ();
    void Summa (const Matrix &m); // метод, реализующий сумму матриц
                            // к текущему объекту добавляется матрица m
    void Transponirov (const Matrix &m);//метод,реализующий разность матриц
    Matrix Proizv (const Matrix &m) const; // метод, реализующий произведение матриц
                                // Возвращает новый объект
    int determin ();
};
Main

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
#include "hedr.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
    setlocale (LC_ALL,".1251");
    int r , c ;
    double R ;
    cout << "Введите размер :\n" ;
    cin >> r >> c ;
    Matrix n ( r , c );
    //заполняем матрицу
    for ( int i = 0 ; i < n .get_row () ; i++ )
        for ( int j = 0 ; j < n.get_col() ; j++ )
        {
            cout << "введите элементы";
            cin >> R ;
            n.set_item ( i , j , R ) ;
        }
        Matrix n1 (n);
        n1.set_item(0 , 0 , -1 );
        cout << "Исходная матица" << endl ;
        for ( int i = 0 ; i < n.get_row() ; i++ )
        {
            for ( int j = 0 ; j < n.get_col (); j++ )
                cout<< setw (8) << n.get_item ( i , j );
                cout << endl ;
        }
        cout << "Новая матрица" << endl ;
        for ( int i = 0 ; i < n1.get_row() ; i++ )
        {
            for ( int j = 0 ; j < n1.get_col (); j++ )
                cout<< setw (8) << n1.get_item ( i , j );
                cout << endl ;
        }
        n.Summa(n1);
        cout << "Сложение:" << endl ;
        for ( int i = 0 ; i < n.get_row() ; i++ )
        {
            for ( int j = 0 ; j < n.get_col (); j++ )
                cout<< setw (8) << n.get_item ( i , j );
                cout << endl ;
        }
        Matrix n2 = n.Proizv ( n1 );
        cout << "Умножение: " << endl ;
        for ( int i = 0 ; i < n2.get_row() ; i++ )
        {
            for ( int j = 0 ; j < n2.get_col (); j++ )
                cout<< setw (8) << n2.get_item ( i , j );
                cout << endl ;
        }
        n.Transponirov(n1);
        cout << "Трнспонирование:" << endl ;
        for ( int i = 0 ; i < n.get_row() ; i++ )
        {
            for ( int j = 0 ; j < n.get_col (); j++ )
                cout<< setw (8) << n.get_item ( i , j );
                cout << endl ;
        }
        return 0 ;
}
Помогите пожалуйста изменить код так, чтобы числа вводились не вручную, а с помощью генератора случайных чисел.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
16.02.2012, 00:27     Задача по классам.с++ #4
Тина_Ливингстон, ну добавьте в класс метод
C++
1
2
3
4
5
6
7
8
9
10
11
#include <cstdlib>
#include <ctime>
class Matrix
{
//...
    void randomFill(int minVal, int maxVal){
        for ( int i = 0; i < nRow; ++i )
            for ( int j = 0; j < nCol; ++j )
                matr[i][j] = rand() % (maxVal - minVal + 1) + minVal;
    }
//...
а в main()
C++
1
2
3
4
5
6
//...
    srand(time(0));
//...
    Matrix n ( r , c );
    n.randomFill(0, 99); // к примеру
//...
Yandex
Объявления
16.02.2012, 00:27     Задача по классам.с++
Ответ Создать тему
Опции темы

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