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

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

Войти
Регистрация
Восстановить пароль
 
Ianyska
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 2
#1

Создать динамический класс Матрица и найти А+В, А-В, А*В - C++

07.04.2014, 16:27. Просмотров 900. Ответов 5
Метки нет (Все метки)

Всем добрый день! Мне нужно создать динамический класс Матрица и найти А+В, А-В, А*В. У меня возникла проблема: пишет Build Error. НЕ могу понять, в чём ошибка. Помогите найти ошибки и их исправить. Заранее благодарна

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 <stdio.h>
#include <conio.h>
#include <iostream.h>
class matrix
{int sizem, sizen;
float**v;
public:
       matrix(int a,int b)
         {sizem=a; sizen=b;
         v=new float*[a];
         for(int i=0;i<a;i++)
         v[i]=new float[b];}
 
       void init()
         {printf("Enter matrix \n");
         for(int i=0;i<sizem;i++)
          {for(int j=0;j<sizen;j++)
          scanf("%f",&v[i][j]); printf("\n");}}
 
       matrix(matrix&x,matrix&y)
         {sizem=x.sizem; sizen=y.sizen;
         v=new float*[sizem];
         for(int i=0;i<sizem;i++)
         v[i]=new float[sizen];}
 
       friend matrix & operator + (matrix&x,matrix&y)
         {matrix z(x,y);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
          z.v[i][j]=x.v[i][j]+y.v[i][j];
          return z;}
 
       friend matrix & operator - (matrix&x,matrix&y)
         {matrix z(x,y);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
          z.v[i][j]=x.v[i][j]-y.v[i][j];
          return z;} 
 
       friend matrix & operator * (matrix&x,matrix&y)
         {matrix z(x,y);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
           for(int k=0;k<x.sizen;k++)
            for(int m=0;m<y.sizem;m++)
            z.v[i][j]=z.v[i][j]+x.v[i][k]*y.v[m][j];
            return z;} 
 
       friend int porivniannia (matrix&x,matrix&y)
         {int i=0;
         if((x.sizem==x.sizen)&&(y.sizem==y.sizen)) i=1;
         if((x.sizem==y.sizem)&&(x.sizen==y.sizen)) i=2;
         if(x.sizen==y.sizem) i=3;
         return i;}
 
       void out()
         {for(int i=0;i<sizem;i++)
          {for(int j=0;j<sizen;j++)
          printf("%f",v[i][j]); printf("\n");}}
};
 
int main()
{matrix A,B;
printf("Vvedite razmernost matrix A \n");
int a,b;
scanf("%d,%d",&a,&b);
matrix A(a,b);
A.init();
printf("Vvedite razmernost matrix B \n");
int c,d;
scanf("%d,%d",&c,&d);
matrix B(c,d);
B.init();
matrix z;
matrix z(A,B);
int p=porivniannia(A,B);
if((p==1)||(p==2))
  {z=A+B;
  printf("Matrix A+B=\n"); z.out();
  z=A-B;
  printf("Matrix A-B=\n"); z.out();}
if((p==1)||(p==3))
  {z=A*B;
  printf("Matrix A*B=\n"); z.out();}
if(p==0)
  printf("Error\n");
getch();
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2014, 16:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать динамический класс Матрица и найти А+В, А-В, А*В (C++):

Создать класс-динамический массив - C++
Помогите, пожалуйста!! не могу решить задачу, очень важно! Условие:создайте класс – динамический массив. В качестве элементов массива...

Создать шаблонный класс - двумерный динамический массив - C++
Задание:Создать шаблонный класс - двумерный динамический массив. Тип элементов массива определяется параметром шаблона. Предусмотреть...

Создать динамический класс для работы с матрицами - C++
Доброго времени суток. Нужно создать динамический класс для работы с массивами. Вопрос как его создать? В книгах Дейтела и Лафоре...

Создать класс с 1 полем: динамический массив char - C++
Необходимо создать класс с 1 полем: динамический массив char. С конструктором, куда передавать динамический массив char. В main создать...

Создать класс который реализует динамический массив - C++
Доброго времени суток! Помогите с такой задачей - Создать класс который реализует динамический массив(нельзя использовать шаблон...

Разработать класс "Квадратная матрица"; создать массив матриц и найти в нём матрицу, удовлетворяющую условию - C++
Доброго времени суток!Нужно разработать класс матриц размера 3x3.Переопределить операции сложения, вычитания матриц, прибавления к каждому...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
07.04.2014, 16:34 #2
Цитата Сообщение от Ianyska Посмотреть сообщение
C++
1
matrix A,B;
Вызывается консутркутор без параметров, который у Вас не описан
Цитата Сообщение от Ianyska Посмотреть сообщение
C++
1
matrix(matrix&x,matrix&y)
wtf?? это типо конструктор копирования подразумевался?
исправить на
C++
1
 matrix(const matrix&x)
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
07.04.2014, 16:37 #3
aLarman, реконструктор. Х)
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
07.04.2014, 16:52 #4
SatanaXIII, я чего то не знаю? объясняйте
0
Ianyska
0 / 0 / 0
Регистрация: 07.04.2014
Сообщений: 2
07.04.2014, 17:02  [ТС] #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
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
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
class matrix
{int sizem, sizen;
float**v;
public:
       matrix(int a,int b)
         {sizem=a; sizen=b;
         v=new float*[a];
         for(int i=0;i<a;i++)
         v[i]=new float[b];}
 
       void init()
         {printf("Enter matrix \n");
         for(int i=0;i<sizem;i++)
          {for(int j=0;j<sizen;j++)
          scanf("%f",&v[i][j]); printf("\n");}}
 
 
       friend matrix & operator + (matrix&x,matrix&y)
         {matrix z(x.sizem,y.sizen);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
          z.v[i][j]=x.v[i][j]+y.v[i][j];
          return z;}
 
       friend matrix & operator - (matrix&x,matrix&y)
         {matrix z(x.sizem,y.sizen);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
          z.v[i][j]=x.v[i][j]-y.v[i][j];
          return z;} 
 
       friend matrix & operator * (matrix&x,matrix&y)
         {matrix z(x.sizem,y.sizen);
         for(int i=0;i<z.sizem;i++)
          for(int j=0;j<z.sizen;j++)
           for(int k=0;k<x.sizen;k++)
            for(int m=0;m<y.sizem;m++)
            z.v[i][j]=z.v[i][j]+x.v[i][k]*y.v[m][j];
            return z;} 
 
       friend int porivniannia (matrix&x,matrix&y)
         {int i=0;
         if((x.sizem==x.sizen)&&(y.sizem==y.sizen)) i=1;
         if((x.sizem==y.sizem)&&(x.sizen==y.sizen)) i=2;
         if(x.sizen==y.sizem) i=3;
         return i;}
 
       void out()
         {for(int i=0;i<sizem;i++)
          {for(int j=0;j<sizen;j++)
          printf("%f",v[i][j]); printf("\n");}}
};
 
int main()
{printf("Vvedite razmernost matrix A \n");
int a,b; 
scanf("%d,%d",&a,&b);
matrix A(a,b);
A.init();
printf("Vvedite razmernost matrix B \n");
int c,d;
scanf("%d,%d",&c,&d);
matrix B(c,d);
B.init();
matrix z(a,d);
int p=porivniannia(A,B);
if((p==1)||(p==2))
  {z=A+B;
  printf("Matrix A+B=\n"); z.out();
  z=A-B;
  printf("Matrix A-B=\n"); z.out();}
if((p==1)||(p==3))
  {z=A*B;
  printf("Matrix A*B=\n"); z.out();}
if(p==0)
  printf("Error\n");
getch();
return 0;
}
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
07.04.2014, 17:08 #6
C++
1
2
int a,b;
scanf("%d,%d",&a,&b);
для начала посмотрите что запишется в а и b (просто выведите их после ввода)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 17:08
Привет! Вот еще темы с ответами:

Как создать динамический массив типа string? Как создать класс такого массива? - C++
Как создать динамический массив типа string? Как создать класс такого массива? =-O Помогите, пожалуйста, очень нужна помощь!

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

Создать класс Matrix, реализующий двухмерный динамический массив типа int - C++
Здравствуйте! Задание: Создать класс Matrix, реализующий двухмерный динамический массив типа int. Конструктор должен заполнять массив...

Создать динамический класс для работы со строками. Перегрузка строкового класса - C++
Форумчане, помогите пожалуйста с задачей. Никак не пойму как перегрузить часть операторов. Вот условие задачи : Создать динамический...


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

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

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