![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 26.11.2012
Сообщений: 7
|
![]()
помогите пожалуйста, мне нужно что чтоб матрицу а1 и в1 не вводить с клавиатуры ф чтоб были эти данные
int A[n][m]={{5,1,7},{10,-2,1},{0,1,2}}; int B[n][m]={{2,4,1},{2,1,0},{7,2,1}} вот мой код // завдання1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <string> #include <math.h> using namespace std; class matrix { public: matrix (int k, int p, bool pr=true); matrix operator+(matrix M); matrix operator-(matrix M); matrix operator*(matrix M); matrix operator*(float M); ~matrix();void show_matrix(); //Метод вывода матрицы на экран построчно. private: float **a;//Двойной указатель для хранения матрицы. int n;//Число строк в матрице. int m;//Число столбцов в матрице. //Логическая переменная fl принимает значение false, //если матрицу сформировать не удалось. bool fl; }; //Главная функция. int main() { matrix a1(3,3), b1(3,3), c1(3,3,false); c1=a1+b1; c1.show_matrix(); c1=a1-b1; c1.show_matrix(); c1=a1*3; c1.show_matrix(); c1=a1*b1; c1.show_matrix(); } //Конструктор. matrix::matrix(int k, int p,bool pr) { int i,j; n=k; m=p; fl=true; a=new float*[n]; for(i=0;i<n;i++) a[i]=new float[m]; if (pr) { cout<<"Matrix"<<endl; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[i][j]; } else for(i=0;i<n;i++) for(j=0;j<m;j++) a[i][j]=0; } //Перегрузка операции сложения матриц. matrix matrix: ![]() { int i,j; //Временная матрица temp для хранения результата //сложения двух матриц. matrix temp(n,m,false); //Если обе матрицы одинакового размера, то if ((n==M.n)&&(m==M.m)) { //формируем матрицу temp, как сумму матриц. for(i=0;i<n;i++) for(j=0;j<m;j++) temp.a[i][j]=a[i][j]+M.a[i][j]; } else //Если размеры матриц не совпадают, то fl=false //(результирующую матрицу сформировать не удалось). temp.fl=false; //Возвращаем матрицу temp, как результат операции. return temp; } //Перегрузка операции вычитания матриц. matrix matrix: ![]() { int i,j; //Временная матрица temp для хранения результата //вычитания двух матриц. matrix temp(n,m,false); //Если обе матрицы одинакового размера, то if ((n==M.n)&&(m==M.m)) { //формируем матрицу temp, как разность матриц. for(i=0;i<n;i++) for(j=0;j<m;j++) temp.a[i][j]=a[i][j]-M.a[i][j]; } else //Если размеры матриц не совпадают, то fl=false //(результирующую матрицу сформировать не удалось). temp.fl=false; //Возвращаем матрицу temp, как результат операции. return temp; } //Перегрузка операции умножения матриц matrix matrix: ![]() { int i,j,k; //Временная матрица temp для хранения результата //умножения двух матриц. matrix temp(n,M.m,false); //Если количество столбцов в первой матрицы совпадает //с количеством строк во второй матрицы, то if ((m==M.n)) { //выполняем умножение матриц for(i=0;i<n;i++) for(j=0;j<M.m;j++) for(k=0,temp.a[i][j]=0;k<m;k++) temp.a[i][j]+=a[i][k]*M.a[k][j]; } //Если количество столбцов в первой матрицы не //совпадает с количеством строк во второй матрице, //то fl=false (результирующую матрицу //сформировать не удалось). else temp.fl=false; //Возвращаем матрицу temp, как результат операции return temp; } //Перегрузка операции * для выполнения операции //умножения матрицы на вещественное число. matrix matrix: ![]() { int i,j; matrix temp(n,m,false); for(i=0;i<n;i++) for(j=0;j<m;j++) temp.a[i][j]=a[i][j]*M; //Возвращаем матрицу temp, как результат операции. return temp; } matrix::~matrix() { } //Метод вывода матрицы. void matrix::show_matrix() { int i,j; //Если матрица сформирована, то выводим ее на экран. if (fl) { cout<<"Matrix"<<endl; for(i=0;i<n;cout<<endl,i++) for(j=0;j<m;j++) cout<<a[i][j]<<"\t"; } //Если матрицу сформировать не удалось, то выводим //сообщение об этом на экран. else cout<<"No Matrix"<<endl; } ![]() |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 25.11.2012
Сообщений: 13
|
![]()
Мои предложения:
1) сделать конструктор матрицы с параметром - текстовой строкой, содержащей элементы матрицы, например "5,1,7; 10,-2,1; 0,1,2" Внутри конструктора сделать разбор строки. 2) Если у конструктора параметры - размеры матрицы и string, то можно сделать ввод из потока, связанного со string. Не помню, допустимы ли знаки препинания, но для такой строки сработает: "5 1 7 10 -2 1 0 1 2" М.б. использовать в качестве разделителя строк матрицы перевод строки? "5 1 7 \n 10 -2 1 \n 0 1 2"
С глубоким уважением,
Александр |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать ввод с клавиатуры через пробел? | DIQUON | Помощь студентам | 0 | 06.11.2012 19:35 |
Как осуществить ввод с клавиатуры и вывод цифры на дисплее? | ALKOrobot | Java Мобильная разработка (Android) | 0 | 03.09.2011 20:39 |
Как определить был ли ввод с клавиатуры или нет? | invertor | Общие вопросы C/C++ | 4 | 02.07.2010 11:51 |
Как запретить/разрешить ввод от клавиатуры любых символов (в том числе и юникодных)? | SkAndrew | Общие вопросы Delphi | 8 | 15.08.2008 15:30 |