推 wartmh:小心老師看板! 02/22 15:20
推 cranfis:單數題課本都有解答了~證明題不建議PO詳解... 02/22 22:46
#include <iostream>
#include <iomanip>
#include"matrix.h"
using namespace std;
#include <string>
#include <fstream>
#include <cstdlib>
int main()
{
int
calmatrix1[10][10],i,j,k,row,column,calmatrix2[10][10],ch,m,n,l,choice;
int
row1,row2,column1,column2,calmatrix3[10][10],calmatrix4[10][10],ch1,result[10][10];
matrix keyin,calmatrix,call,saveit;
string filename,filename1;
cout<<"if you want to plus or minus press 1. if you want to multiply
press 2."<<endl;
cin>>choice;
system("cls");
if(choice==1)
{
keyin.enterbykey(calmatrix1,calmatrix2,row,column);
cout<<"you want to plus, press 1. you want to minus, press
2."<<endl;
cin>>ch;
if(ch==1)
{
cout<<"matrixA+matrixB="<<endl;
calmatrix.calplus(calmatrix1,calmatrix2,row,column);
}
if(ch==2)
{
cout<<"matrixA-matrixB="<<endl;
calmatrix.calminus(calmatrix1,calmatrix2,row,column);
}
}
else if(choice==2)
{
keyin.enterbykey1(calmatrix1,calmatrix2,m,n,l);
calmatrix.calmultiple(calmatrix1,calmatrix2,m,n,l);
}
cout << "Please enter the name of the file you wish to open: ";
cin>>filename;
call.inputfromfile(filename,row1,column1,calmatrix3);
cout << "Please enter another name of the file you wish to open: ";
cin>>filename1;
call.inputfromfile(filename1,row2,column2,calmatrix4);
cout<<"you want to plus, press 1. you want to minus, press 2."<<endl;
cin>>ch;
if(ch==1)
{
cout<<"matrixA+matrixB="<<endl;
calmatrix.calplus(calmatrix3,calmatrix4,row1,column1);
/*cout<<"do you want to save?"<<endl;
cin>>ch1;
if(ch1==1)
{
cout << "Please enter the name of the file: ";
cin>>filename;
//saveit.outputscreen(filename,row1,column1,result);
}*/
}
if(ch==2)
{
cout<<"matrixA-matrixB="<<endl;
calmatrix.calminus(calmatrix3,calmatrix4,row2,column2);
}
system("pause");
return 0;
}
//,int numC[10][10]
#include <iostream>
#include <iomanip>
using namespace std;
#include <string>
#include <fstream>
#include <cstdlib>
class matrix
{
public:
void enterbykey(int[10][10],int[10][10],int&,int&);
void enterbykey1(int[10][10],int[10][10],int&,int&,int&);
void inputfromfile(string,int&,int&,int[10][10]);
void calplus(int[10][10],int[10][10],int,int);
void calminus(int[10][10],int[10][10],int,int);
void calmultiple(int[10][10],int[10][10],int&,int&,int&);
void outfile(string,int,int,int[10][10]);
};
void matrix::enterbykey(int number[10][10],int numB[10][10], int& row, int&
column)
{
int i,j;
cout<<"enter the row and the column"<<endl;
cout<<"row:";
cin>>row;
cout<<"column:";
cin>>column;
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cin>>number[i][j];
}
}
cout<<"matrixA"<<endl;
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cout<<setw(3)<<number[i][j];
}
cout<<endl;
}
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cin>>numB[i][j];
}
}
cout<<"matrixB"<<endl;
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cout<<setw(3)<<numB[i][j];
}
cout<<endl;
}
}
void matrix::enterbykey1(int number[10][10],int numB[10][10],int& m,int&
n,int& l)
{
int i,j;
cout<<"enter the content of matrixA(mXn) and matrixB(nXl)"<<endl;
cin>>m>>n>>l;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>number[i][j];
}
}
cout<<"matrixA"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<setw(3)<<number[i][j];
}
cout<<endl;
}
for(i=0;i<n;i++)
{
for(j=0;j<l;j++)
{
cin>>numB[i][j];
}
}
cout<<"matrixB"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<l;j++)
{
cout<<setw(3)<<numB[i][j];
}
cout<<endl;
}
}
void matrix::calplus(int numA[10][10],int numB[10][10],int row,int column)
{
int i,j;
int numC[10][10]={0};
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
numC[i][j]=numA[i][j]+numB[i][j];
}
}
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cout<<setw(3)<<numC[i][j];
}
cout<<endl;
}
}
void matrix::calminus(int numA[10][10],int numB[10][10],int row,int column)
{
int i,j;
int numC[10][10]={0};
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
numC[i][j]=numA[i][j]-numB[i][j];
}
}
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
cout<<setw(3)<<numC[i][j];
}
cout<<endl;
}
}
void matrix::calmultiple(int numa[10][10],int numb[10][10],int& m,int& n,int&
l)
{
int i,j;
int numC[10][10]={0};
for(i=0;i<m;i++)
{
for(j=0;j<l;j++)
{
for(int k=0;k<n;k++)
{
numC[i][j]+=numa[i][k]*numb[k][j];
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<l;j++)
{
cout<<numC[i][j]<<" ";
}
cout<<endl;
}
}
void matrix::inputfromfile(string filename,int& deter_row,int&
deter_column,int numA[10][10])
{
char check;
int sum=0,row=0,column=0,k;
ifstream read;
read.open(filename.c_str());
if (read.fail()) // check for a successful open
{
cout << "\nThe file was not successfully opened"
<< "\n Please check that the file currently exists."
<<endl;
system("pause");
exit(0);
}
cout << "\nThe file has been successfully opened for reading"<< endl;
do
{
read>>numA[row][column];
column=column+1;
if((check=read.get())=='\n')
{
row=row+1;
column=0;
}
}while(read.good());
for(int ii=0;ii<=row;ii++)
{
for(int jj=0;jj<column;jj++)
{
cout<<setw(3)<<numA[ii][jj];
}
cout<<endl;
}
deter_row=row+1;
deter_column=column;
}
/*void matrix::outfile(string filename,int row,int column,int numA[10][10])
{
ofstream out;
int sum=0,k;
out.open(filename.c_str());
if (out.fail()) // check for a successful open
{
cout << "\nThe file was not successfully opened"
<< "\n Please check that the file currently exists."
<<endl;
exit(0);
}
cout << "\nThe file has been successfully opened for reading"<< endl;
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
out<<numA[i][j]<<" ";
}
out<<'\n';
}
}
*/
※ 編輯: jasonfghx 來自: 118.168.133.60 (12/26 18:04)