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

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

Войти
Регистрация
Восстановить пароль
 
Тина_Ливингстон
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 59
#1

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

15.02.2012, 21:52. Просмотров 697. Ответов 3
Метки нет (Все метки)

Задание 1

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

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

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

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

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

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

Задача по объектам и классам - C++
Задача из книги Праты. Дан заголовочный файл, нужно определить методы и написать программу. Компилируется , но выводится какая-то...

Лафоре задача по классам - C++
Задача из книги лафоре по классам №7: нужно написать программу используя классы для ввода и вывода координат, кроме того нужно написать...

Лабораторные по классам - C++
С абсолютно не знаю, поэтому пришел сюда за помощью. Лабораторная 1 Описать базовый класс «Элемент». Поля: - имя элемента...

Вопрос по классам - C++
Есть такой код #include <iostream> class C1{ public: C1(){std::cout <<" 1 is open"<<std::endl;}; ~C1(){std::cout <<" 1...

от структур к классам - C++
Добрый вечер. Помогите пожалуйста разобраться в классах, только начал их изучать. Есть задание переделать структуру в класс ну и сделать...

Программа по классам - C++
Нужна помощь по классам, помогите с написание кода Описать класс, реализующий стек и работу с ним. 1.) Класс должен содержать следующие...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
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 ;
}
Помогите пожалуйста изменить код так, чтобы числа вводились не вручную, а с помощью генератора случайных чисел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2012, 00:27     Задача по классам.с++
Еще ссылки по теме:

лабораторная по классам - C++
Доброго вечера ув. гуру. Очень прошу вас помочь написать небольшую программу, связанной с великим ООП, а конкретнее работой с классами....

Программа по классам - C++
Всем доброго времени суток, обращаюсь с просьбой помощи! = ) Нужно написать программу в которой: 1) Создать класс 2) Создать...

Литература по классам - C++
Посоветуйте какую-то книгу где хорошо описано объявления, как работать с классами и все о классах!

Вопрос по классам - C++
Вообщем есть два класса, TTriangular и TPoint. В TTriangular есть метод, который должен вводить координаты заданной точки. В TPoint...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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     Задача по классам.с++
Ответ Создать тему
Опции темы

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