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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
#1

Операции над матрицами-сложение, вычитание, умножение на число - C++

01.06.2014, 12:12. Просмотров 3270. Ответов 54
Метки нет (Все метки)

Здравствуйте,помогите пожалуйста по такой проблемке-в С++ надо создать матрицу и действия над ней..буду очень благодарен кто поможет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 12:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции над матрицами-сложение, вычитание, умножение на число (C++):

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами - C++
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление), над комплексными числами. Использовать...

Организовать ввод двух вещественных чисел и операции над ними: сложение, вычитание, умножение и деление - C++
Парни всем привет! Начинаю новую тему по решению задач Задача звучит так: Написать программу, которая запрашивает ввод двух...

Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание) - C++
здравствуйте. Эта программа рабочая, работает для аргумента, сложения, вычитания, умножения, модуля комплексных чисел. Проверьте её...

Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число - C++
Всем здравствуйте! надеюсь написать с вашей помощью программку для сложения, вычитания и умножения полиномов, а также деления на число....

Сложение, вычитание, умножение - C++
Доброго времени суток! Помогите с задачей: Написать функцию, которая складывает, вычитает или умножает два целых числа и возвращает...

Нестандартное сложение, вычитание, умножение и деление - C++
Что-то на форуме скучно, давайте устроим небольшой интерактивчик, придумываем самые нестандартные способы сложения, вычитания, умножения и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
01.06.2014, 12:19 #2
А поискать в теме:
Класс "Матрица"
Реализовать класс "Матрица"
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
01.06.2014, 14:08  [ТС] #3
но там нет ничего подобного мне...помогите как нибуть пожалуйста...
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
01.06.2014, 14:29 #4
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
но там нет ничего подобного
Вы уверены? Тогда объясните подробнее, что именно надо.
Lenovo_G575
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 41
01.06.2014, 14:34 #5
Вот когда-то решал, домашка была.
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
#include <iostream>
using namespace std;
int main() 
{
    int n, k, s=0, c=0;
    cout<<"enter n=";
    cin>>n;
    cout<<"enter k=";
    cin>>k;
    int **a=new int*[n];
    for(int i=0; i<n; i++)
        a[i]=new int[k];
    for(int j=0; j<k; j++)
        for(int i=0; i<n; i++)
            cin>>a[j][i];
    for(int j=0; j<k; j++)
    {
        cout<<endl;
        for(int i=0; i<n; i++)
            cout<<a[j][i];
    }
    cout<<endl;
    for(int j=0; j<k; j++)
    {
        for(int i=0; i<n; i++)
            s=s+a[j][i];
        cout<<"summa elim "<<j<<" stroki="<<s<<endl;
        s=0;
    }
    for(int j=0; j<k; j++)
    {
        
        for(int i=0; i<n; i++)
            c=c+a[i][j];
        cout<<"summa elim "<<j<<" stolbca="<<c<<endl;
        c=0;
    }
    cin.get();
    cin.get();
    return 0;
}
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
01.06.2014, 15:05  [ТС] #6
нее это не то что надо..

Добавлено через 1 минуту
надо сделать программу, в которой реализуются операции над матрицами-сложение,вычитание.умножение на число и еще какие нибуть..
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
01.06.2014, 15:06 #7
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
нее это не то что надо
И чего же Вам надо?
Советую в следующий раз определитесь с задачей, а потом только обращайтесь!
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
01.06.2014, 16:57  [ТС] #8
ну то есть в консоли вводим матрицу потом еще одну,далее они складываются вычитаются,и одна матрица умножается на число..прошу прощения что так некоректно выражаюсь..

Добавлено через 1 час 47 минут
ну так что неужели ни у кого ничего нет??
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
01.06.2014, 18:23 #9
См. раздел матрицы:
Большая коллекция решенных задач
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
01.06.2014, 20:29  [ТС] #10
извините пожалуйста-там нашел похожий код-вставил его в visual studio 2008 но при компиляции выдает 20 ошибок-не найден идентификатор,подскажите в чем дело пожалуйста?

Добавлено через 1 минуту
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <exception>
#include <stdexcept>
#include <matrix.h>
#include <stdafx.h>
using namespace std;
 
class Array
{
protected:
        int** _data;
        int _cols, _rows;
public:
        Array(void) : _data(0), _rows(0),_cols(0) {};
        Array(int rows, int cols, bool fill=false, int filler=0)
                : _rows(rows), _cols(cols), _data(0)
        {
                _data = new int* [_rows];
                for (int i=0; i<_rows; i++)
                {
                        _data[i] = new int[_cols];
                        if (fill)
                                for (int j=0; j<_cols; j++)
                                        _data[i][j] = filler;
                }
        }
 
        Array(const Array& other) :
                _cols(other.cols()),
                _rows(other.rows())
        {
                _data = new int* [_rows];
                for (int i=0; i<_rows; i++)
                {
                        _data[i] = new int[_cols];
                        for (int j=0; j<_cols; j++)
                                _data[i][j] = other._data[i][j];
                }
        }
 
        // возвращает транспонированную матрицу
        const Array transpon() const
        {
                Array C(_cols, _rows);
                for (int i=0; i<_cols; i++)
                        for (int j=0; j<_rows; j++)
                                C[i][j] = _data[j][i];
                return C;
        }
 
        // возвращает определитель матрицы,
        // не писал
        const int determinant() const
        {
                int det=0;
                // тут должен быть код вычисления
                // определителя матрицы
                return det;
        }
 
        // сложение двух матриц
        const Array operator+(const Array& other) const
        {
                if ((_cols != other.cols()) || (_rows != other.rows()))
                        throw out_of_range("Multiplied matrixes do not have same number of cols and rows.");
                Array C(_rows, _cols);
                for (int i=0; i<C.rows(); i++)
                        for (int j=0; j<C.cols(); j++)
                                C._data[i][j] = _data[i][j] + other._data[i][j];
                return C;
        }
 
        // умножение двух матриц
        const Array operator*(const Array& other) const
        {
                if (_cols != other.rows())
                        throw out_of_range("Multiplied matrixes do not have same number of cols and rows.");
                Array C(_rows, other.cols(), true);
                for (int i=0; i<C.rows(); i++)
                        for (int j=0; j<C.cols(); j++)
                                for (int k=0; k<_cols; k++)
                                C[i][j] += _data[i][k]*other._data[k][j];
                return C;
        }
 
        // присваивание матрицы
        Array& operator= (const Array& other)
        {
                if (this!=&other)
                {
                        if (_data!=0)
                        {
                                for (int i=0; i<_rows; i++)
                                        delete [] _data[i];
                                delete [] _data;
                        }
                        _rows = other.rows();
                        _cols = other.cols();
 
                        _data = new int* [_rows];
                        for (int i=0; i<_rows; i++)
                                _data[i] = new int[_cols];
 
                        for (int i=0; i<_rows; i++)
                                for (int j=0; j<_cols; j++)
                                        _data[i][j] = other._data[i][j];
                }
                return *this;
        }
 
        // вывод матрицы
        friend ostream& operator<< (ostream& o, const Array& a)
        {
                for (int i=0; i<a._rows; i++)
                {
                        for (int j=0; j<a._cols; j++)
                                o << setw(4) << a._data[i][j];
                        o << endl;
                }
                return o;
        }
 
void fill_random()
{
for (int i=0; i<_rows; i++)
for (int j=0; j<_cols; j++)
_data[i][j] = rand()%100+1;
}
int* operator[](int i) { return _data[i]; }
int& at(int i, int j) { return _data[i][j]; }
const int cols() const { return _cols; }
const int rows() const { return _rows; }
 
        ~Array()
        {
                if (_data!=0)
                {
                        for (int i=0; i<_rows; i++)
                                delete [] _data[i];
                        delete [] _data;
                }
        }
};
 
int main()
{
        srand(static_cast<unsigned int>(time(0)));
 
        Array x(3, 3, true, 1);
        Array y(3, 3, true, 1);
        Array z(3, 5);
        z.fill_random();
 
        cout << (x*y) << endl;
        cout << (x+y) << endl;
        cout << z << endl << z.transpon() << endl;
 
        return 0;
}

1>------ Построение начато: проект: matrix, Конфигурация: Debug Win32 ------
1>Компиляция...
1>matrix.cpp
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(1) : warning C4627: #include <iostream>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(2) : warning C4627: #include <iomanip>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(3) : warning C4627: #include <cstdlib>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(4) : warning C4627: #include <ctime>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(5) : warning C4627: #include <exception>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(6) : warning C4627: #include <stdexcept>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(7) : warning C4627: #include <matrix.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(9) : error C2871: std: пространство имен с таким именем не существует
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(115) : error C2143: синтаксическая ошибка: отсутствие ";" перед "&"
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(115) : error C2433: ostream: 'friend' не разрешается для объявлений данных
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(115) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(115) : error C2061: синтаксическая ошибка: идентификатор "ostream"
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(116) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(116) : error C2805: бинарный 'operator <<' имеет слишком мало параметров
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(116) : error C2333: Array::operator <<: ошибка в объявлении функции; пропуск основного текста функции
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(68) : error C3861: out_of_range: идентификатор не найден
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(80) : error C3861: out_of_range: идентификатор не найден
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(130) : error C3861: rand: идентификатор не найден
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(150) : error C3861: srand: идентификатор не найден
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(150) : error C3861: time: идентификатор не найден
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(157) : error C2065: cout: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(157) : error C2065: endl: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(158) : error C2065: cout: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(158) : error C2065: endl: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(159) : error C2065: cout: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(159) : error C2065: endl: необъявленный идентификатор
1>c:\users\user\documents\visual studio 2008\projects\matrix\matrix.cpp(159) : error C2065: endl: необъявленный идентификатор
1>Журнал построения был сохранен в "file://c:\Users\user\Documents\Visual Studio 2008\Projects\matrix\Debug\BuildLog.htm"
1>matrix - ошибок 20, предупреждений 7
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
01.06.2014, 20:38 #11
Цитата Сообщение от АЛЕКСЕЙ_92 Посмотреть сообщение
#include <stdafx.h>
Ну хотябы эту гадость Вы можете самостоятельно выкинуть из проекта?
Да и вообще, разве кроме <iostream> здесь что-нибудь используется?
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
02.06.2014, 18:55  [ТС] #12
извини такое дело просто-мы учимся первый год,заочно,ну и сам я с деревни и времени вообще не хватает на самоизучение а тут такое дали на курсовую,вообщем я мало что понимаю в С++ поэтому друг и посоветовал ваш форум-сказав что здесь люди добрые понимающие жизненные ситуации и помогут..так что вот такая ситуация и прошу помочь мне пожалуйста так как никто в округе ничего не знает и не поможет..

Добавлено через 22 часа 4 минуты
ну не ужели никто не сможет мне помочь??
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
02.06.2014, 19:06 #13
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <iomanip>
//#include <cstdlib>
#include <ctime>
//#include <exception>
//#include <stdexcept>
//#include <matrix.h>
//#include <stdafx.h>
using namespace std;
Так в VS компилируется без ошибок.

Если очень хочется с предкомпилированными заголовками, то надо так
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include <iostream>
#include <iomanip>
//#include <cstdlib>
#include <ctime>
//#include <exception>
//#include <stdexcept>
//#include <matrix.h>
 
using namespace std;
АЛЕКСЕЙ_92
3 / 3 / 0
Регистрация: 01.06.2014
Сообщений: 130
02.06.2014, 20:45  [ТС] #14
2 вариант подошел,спасибо-но программа в консоли уже вся рассчитанная а мне бы желательно чтоб сам вводил все данные и после получил решение-реально ли так сделать??
gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
02.06.2014, 21:20 #15
АЛЕКСЕЙ_92, Конечно, реально. Только надо переделать код
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2014, 21:20
Привет! Вот еще темы с ответами:

Сложение и вычитание, умножение и деление, сравнение сумм - C++
Уважаемые форумчане! помогите, пожалуйста, нужно написать программу для работы с устаревшей денежной системой Великобритании. В ней...

Сделать сложение, вычитание, умножение и деление длинных чисел - C++
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел. Сумму сделал, с вычитанием какая-то засада....

Сложение / Вычитание / Умножение чисел записанных в виде массива char символов - C++
доброго времени суток. такой вопрос, как мне сделать выше перечилненные математичиские вычесления чилам записсаных как массив char но ...

С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. - C++
Буду благодарен=(( С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. Добавлено через 2...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.06.2014, 21:20
Ответ Создать тему
Опции темы

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