Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 19:57   #1
Olga@->-->--
 
Регистрация: 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:perator+(matrix M)
{
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:perator-(matrix M)
{
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:perator*(matrix M)
{
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:perator*(float M)
{
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;

}
Olga@->-->-- вне форума Ответить с цитированием
Старый 28.11.2012, 10:25   #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"
С глубоким уважением,
Александр
Александр Павлович вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ввод с клавиатуры через пробел? 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