Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для froderik
0 / 0 / 0
Регистрация: 30.04.2011
Сообщений: 49

CLASS МАТРИЦА

05.05.2011, 12:23. Показов 2382. Ответов 24
Метки нет (Все метки)

я вроде разобрался как перезагружать операцию + , но сложение двух матриц в void 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
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
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <cstring>
#include <cstdlib>
using namespace std;
//---------------------------------------------------------------------------------------//
class TMatr {
    public :
   TMatr();                     //по умолч.
   TMatr(TMatr& m);             //конструктор копирования
   TMatr(int ix, int iy);       //конструктор с пар-ми
  ~TMatr();                     //деструктор
  void Write();                 //метод ввода
  void Show();                  //метод вывода
public: int x,y,*mas;
};
void TMatr::Write(){
        cout<<"\nVvedite kolichestvo strok matrici: "; 
        cin>>y; 
        cout<<"\nVvedite kolichestvo stolbcov matrici: "; 
        cin>>x;          
        cout << "Vvedite elementi matrici: \n"; 
        for (int i=0; i<y; i++){ 
            for(int j=0; j<x; j++){ 
                 cout << "mas[" << i+1 << "]" << "[" << j+1 << "]="; 
                 cin >> mas[4*i+j];} 
                                        } 
}
void TMatr::Show(){    
    cout<<"Zapolnennaya matrica: \n"; 
        for (int i=0; i<y; i++){ 
        for(int j=0; j<x; j++){ 
            cout<< mas[4*i+j]<<"   ";} 
            cout << "\n";}
 }
TMatr::TMatr(){
x=0;
y=0;
mas=new int[0];
mas[0]=0;
}
TMatr::TMatr(TMatr& m)
{
x=m.x;
y=m.y;
mas=new int[x*y];
for (int i=0; i<x*y; i++) mas[i]=m.mas[i];
}
TMatr::TMatr(int ix, int iy){
  x=ix;
  y=iy;
  mas=new int[x*y];          //выделяется память под матрицу
}
TMatr::~TMatr(){
 
delete [] mas;
}
 
TMatr operator +(TMatr& m1, TMatr& m2){
    if (m1.x != m2.x || m1.y != m2.y)
        return  TMatr();
TMatr res;
delete[] res.mas;
res.mas=new int[m1.x*m2.y];
m1.x=res.x;
m2.y=res.y;
for (int i=0; i < res.x; i++)
for(int j=0; j < res.y; j++)
        res.mas[4*i+j] =m1.mas[4*i+j]+m2.mas[4*i+j];
return res;
res.Show();
}
 
 
//---------------------------------------------------------------------------------------//
int main() 
{       
    TMatr m1(2,2);    
    TMatr m2(2,2);
    
    m1.Write();
    m1.Show();
    m2.Write();
    m2.Show();
         
    getch(); 
 
}
вот что должно быть сделано
Динамический двумерный массив целых чисел (матрица)
Базовый класс:
Конструкторы: по умолчанию
копирования
с разным количеством параметров
и др.
Деструктор
Функции: записать / получить элемент массива
вывод массива на экран
поиск элемента массива
Информация максимальный и текущий размер массива
очистки массива
и др.
Операции: = (присваивание массивов)
+, -, * (Поэлементные математические операции)
Производный класс: динамический двумерный массив целых чисел с произвольными (в т. ч. и отрицательными) границами


Добавлено через 17 часов 50 минут
кто знает помогите ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2011, 12:23
Ответы с готовыми решениями:

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Работа с class ами. Заполнение дин. массива типа class
Всем доброго времени суток! Это моя первая тема на этом сайте, поэтому если что извините меня (за неточности итд итп). Мне нужно...

Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
Плиз помогите. Не знал, что я такой чайник.) Итак: есть два класса: CMyClass.h CMyClass.cpp и

24
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.05.2011, 14:17
Рабочий код. Только вот логики создавать матрицу на определенное кол-во элементов в мейне, а потом запрашивать кол-во элементов я как-то не наблюдаю.

Глубоко не вдавался по сути. Так работает для матриц одинаковой размерности.
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
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdlib>
using namespace std;
//---------------------------------------------------------------------------------------//
class TMatr {
    public :
   TMatr();                     //по умолч.
   TMatr(const TMatr& m);             //конструктор копирования
   TMatr(int ix, int iy);       //конструктор с пар-ми
  ~TMatr();                     //деструктор
  void Write();                 //метод ввода
  void Show();                  //метод вывода
public: int x,y,*mas;
};
void TMatr::Write(){
        cout<<"\nVvedite kolichestvo strok matrici: "; 
        cin>>y; 
        cout<<"\nVvedite kolichestvo stolbcov matrici: "; 
        cin>>x;                  
        cout << "Vvedite elementi matrici: \n"; 
                for (int i=0; i<y; i++){ 
                        for(int j=0; j<x; j++){ 
                 cout << "mas[" << i+1 << "]" << "[" << j+1 << "]=";
                 cout << "Index: "<< x*i+j << '\n';
                                 cin >> mas[x*i+j];} 
                                        } 
}
void TMatr::Show(){        
        cout<<"Zapolnennaya matrica: \n"; 
                for (int i=0; i<y; i++){ 
        for(int j=0; j<x; j++){ 
                        cout<< mas[x*i+j]<<"   ";} 
                    cout << "\n";}
 }
TMatr::TMatr(){
x=0;
y=0;
mas = 0;
}
TMatr::TMatr(const TMatr& m)
{
    cout << "Copy ctor\n";
x=m.x;
y=m.y;
mas=new int[x*y];
for (int i=0; i<x*y; i++) mas[i]=m.mas[i];
}
TMatr::TMatr(int ix, int iy){
  x=ix;
  y=iy;
  mas=new int[x*y];          //выделяется память под матрицу
}
TMatr::~TMatr(){
 
delete [] mas;
}
 
TMatr operator +(const TMatr& m1, const TMatr& m2){
        if (m1.x != m2.x || m1.y != m2.y)
                return  TMatr();
TMatr res;
res.mas=new int[m1.x*m2.y];
res.x = m1.x;
res.y = m1.y;
for (int i=0; i < res.x; i++)
for(int j=0; j < res.y; j++)
                res.mas[res.x*i+j] =m1.mas[res.x*i+j]+m2.mas[res.x*i+j];
return res;
}
 
 
//---------------------------------------------------------------------------------------//
int main() 
{       
    TMatr m1(3,3);    
        TMatr m2(3,3);
        m1.Write();
        m1.Show();
        m2.Write();
        m2.Show();
        TMatr m3 = m1 + m2;
        m3.Show();
}
1
 Аватар для froderik
0 / 0 / 0
Регистрация: 30.04.2011
Сообщений: 49
05.05.2011, 14:47  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
Рабочий код. Только вот логики создавать матрицу на определенное кол-во элементов в мейне, а потом запрашивать кол-во элементов я как-то не наблюдаю.
я тоже не наблюдаю и все равно если убрать пар-ры матриц m1 и m2 в мэйне выбивает ошибку?

Добавлено через 29 секунд
а с пар-ми работает

Добавлено через 12 минут
введите пожалуйста две матрицы 2*3 с элементами единицами, выбьет ошибку
0
 Аватар для froderik
0 / 0 / 0
Регистрация: 30.04.2011
Сообщений: 49
05.05.2011, 14:51  [ТС]
вот ошибка
Миниатюры
CLASS МАТРИЦА  
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.05.2011, 15:05
froderik, Логично. Я ведь сказал что я делал для квадратных матриц.) Там как-то похитрее надо.
0
 Аватар для froderik
0 / 0 / 0
Регистрация: 30.04.2011
Сообщений: 49
06.05.2011, 12:14  [ТС]
ясно, ну если будет идея просьба напишите

Добавлено через 46 минут
народ пишите если кто то что то знает

Добавлено через 3 часа 39 минут
вызывает ошибку только когда строк больше чем столбцов например когда складывается 2 матрицы 3*2 размером, наверное где-то с циклами проблема???

Добавлено через 16 часов 39 минут
всем снова добрый день!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2011, 12:14

Create a programm that creates an object of created class Time and tests the member functions of class
Time Class Create a class called Time that might be used to represent time. 1. Your class should include three data...

enum и class как составляющие другого class
Как организовать ввод enuma с клавиатуры (51-я строка)? Как прикрепить класс date к employee в private? :wall: #include...

Как вызвать функцию class A, из функции class B
Как вызвать функцию class A, из функции class B К примеру Class A{ public: int a,b; void fun1(); } Class B:public A{ ...

vector<[class]> in class и перегрузка (ostream)
Доброе всем время суток ) столкнулся с проблемой Есть у меня несколько классов и есть класс внутри которого созданы векторы хранящие...

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type"
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru