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

Помoгите преобразовать программу! - C++

Восстановить пароль Регистрация
 
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
19.02.2012, 10:43     Помoгите преобразовать программу! #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
#include <iostream>
using namespace std;
int main ()
{
int A[10][10],i,j,p,k;
//Ввод матрицы с клавиатуры
cout<<"Введите размерность матриц: "<<endl;
cin>>p>>k;
if (p==k&&p>0)
{
cout<<"===================="<<endl;
cout<<"Матрица симметрична!"<<endl;
cout<<"===================="<<endl;
}
else 
{
cout<<"======================="<<endl;
cout<<"Матрица не симметрична!"<<endl;
cout<<"======================="<<endl;
cout<<"Невозможны операции над матрицами разных размеров!";
system ("pause");
return (-1);
}
cout<<"Заполните первую матрицу: "<<endl;
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
  cin>>A[i][j];    
  }
 cout<<endl;                
 }
int y,B[10][10],C[10][10];
cout<<"Заполните вторую матрицу: "<<endl;
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
  cin>>B[i][j];    
  }
 cout<<endl;                
 }
//Вывод первой матрицы на экран
cout<<"Первая матрица: "<<endl;
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
  cout<<A[i][j];
  cout<<" ";    
  }
 cout<<endl;                
 }
cout<<"Вторая матрица: "<<endl;
//Вывод второй матрицы на экран 
for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
  cout<<B[i][j];
  cout<<" ";    
  }
 cout<<endl;                
 }
cout<<"Сумма матриц: "<<endl;
//сложение двух матриц
for (i=0;i<p;i++)
 {
 for (j=0;j<p;j++)
  {
  C[i][j]=A[i][j]+B[i][j];
  }   
 }
 
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
   cout<<C[i][j];
   cout<<" ";    
  }
 cout<<endl;                
 }
cout<<"Разность матриц: "<<endl;
//вычитание двух матриц
for (i=0;i<p;i++)
 {
 for (j=0;j<p;j++)
  {
  C[i][j]=A[i][j]-B[i][j];
  }   
 }
 
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
   cout<<C[i][j];
   cout<<" ";    
  }
 cout<<endl;
 }                
//умножение двух матриц
cout<<"Умножение матриц: "<<endl;
for (i=0;i<p;i++)
 {
 for (j=0;j<p;j++)
  {
   C[i][j]=0;
   for (y=0;y<k;y++)
   {
    C[i][j]+=(A[i][y]*B[y][j]);
   }
  }   
 }
 
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
    cout<<C[i][j];
    cout<<" ";   
  }
 cout<<endl;
 }
//умножение матрицы на число
cout<<"===Умножение матрицы на число==="<<endl;
cout<<"Введите число, на которое нужно умножить матрицу: "<<endl;
int N;
cin>>N;
cout<<"Умножение матрицы на число: "<<endl;
for (i=0;i<p;i++)
 {
 for (j=0;j<p;j++)
  {
    C[i][j]=(N*A[i][j]);
  }   
 }
 
 for(i=0;i<p;i++)
 {
  for (j=0;j<k;j++)
  {
    cout<<C[i][j];
    cout<<" ";   
  }
 cout<<endl;
 }
system("pause");
return(0);  
}
Добавлено через 1 минуту
Если возможно, то пожалуйста пишите еще свои комментарии
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
19.02.2012, 11:29     Помoгите преобразовать программу! #2
пользуйтесь поиском. в разделе полно таких тем. и во многих из них есть нужный вам класс.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
19.02.2012, 11:40  [ТС]     Помoгите преобразовать программу! #3
Цитата Сообщение от retmas Посмотреть сообщение
пользуйтесь поиском. в разделе полно таких тем. и во многих из них есть нужный вам класс.
Вы правы. Но я пару раз пытался преобразовать свою программу с использованием классов, и у меня ничего не получалось.
Вот - -посмотрите, пожалуйста. Я тут прогуглил программу ИМЕННО такого содержания которое мне нужно. Но проблема в том, что я не понимаю что и когда там вводится и выводится. Помогите кому не сложно!
 Комментарий модератора 
Ссылки на форумы запрещены!
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
19.02.2012, 11:51     Помoгите преобразовать программу! #4
код который вы нашли + пара комментариев
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 "stdafx.h"
#include "iostream"
#include "conio.h"
 
class matrix
{int m,n,i;
float **a;
    void input();   //прототипы собственно методов класса. в этой строке ввод
    void output(); //вывод
    void verification(); //странно, но при поверхностном просмотре кода данный метод не обнаружен
    matrix operator*(float k); //перегрузка оператора "*"
    matrix operator+(float k); // перегрузка "+"
    matrix operator-(float k); //перегрузка "-"
    matrix (int,int);
}
 
matrix::matrix(int line,int column) //конструктор класса в параметры передаются размерности матрицы
{int m=line; n=column;
a=(float**)malloc(m*sizeof(float*)); 
for(i=0; i<m; i++)
a[i]=(float*)malloc(n*sizeof(float));
}
 
void matrix::input() //метод ввода. элементарный вложенный цикл
{int i,j;
 
for (i=0;i<m;i++)
for (j=0;j<n;j++)
scanf ("%f", &a[i][j]);
}
 
void matrix::output() //аналогичен предыдущему методу, только выводим
{int i,j;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
printf("%5.2f",a[i][j]);
printf("\n");
}
 
matrix matrix::operator+(float k) //благодаря этому методу символ "+" будет инициировать собственно следующий код
{   int i,j;
    matrix temp(m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{temp.a[i][j]=a[i][j]+k.a[i][j] ;}
return temp;
}
 
matrix matrix::operator-(float k)
{matrix temp;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{temp.a[i][j]=a[i][j]-k.a[i][j]};
}
 
matrix matrix::operator*(float k)
{matrix temp;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{temp.a[i][j]=a[i][j]*k};
}
 
void main()
{
    matrix m,n,b;
    m.input(); 
    n.input();
    b=m+n;
    b.output();
}
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
19.02.2012, 12:59  [ТС]     Помoгите преобразовать программу! #5
Я имел ввиду что в это программе нет диалога с пользователем. Например: в ведите длину матрицы. потом ширину и т.д.

Добавлено через 6 минут
Цитата Сообщение от Черный ворон Посмотреть сообщение
код который вы нашли
Спасибо КЭП
Yandex
Объявления
19.02.2012, 12:59     Помoгите преобразовать программу!
Ответ Создать тему
Опции темы

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