Предыдущая задача должна иметь операторы ввода-вывода в файл.
Схема работы задачи:
1. если файл базы не найден, то программа создаёт файл новый с различными матрицами (размер у каждой матрицы храниться в файле перед значениями матрицы),
2. ввод матриц осуществлять в диалоговом режиме (хотите ввести ещё матрицу? Да/Нет) )
3. если файл найден, то матрицы считываются из файла, пока не достижим символ EOF.
4. Результат чтения из файла выводится на экран.
И я бы все сама сделала,но препод не хочет объяснять тему с файлами,тк обиделась на группу...не знаю что делать:( Help me anybody!
Вот моя программа,которая уже есть...
Код: Выделить всё
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
class mat
{private:
int **mas;
int n, m;
public:
mat ();
mat(int N,int M);
mat(mat & obj);
~mat();
void random();
void vivod();
mat operator + (const mat & A);
mat operator = (mat A);
mat operator * (int c);
friend mat operator * (int c, mat A);
friend ostream & operator <<(ostream & out, mat A);
friend istream & operator >>(istream & in, mat & A);
};
mat::mat ()
{ int i;
cout<<"Vvedite razmernost matrici1:\n";
cin>>n>>m;
mas=new int*[n];
for (i=0; i<n; i++)
{
mas[i]=new int[m];
}
}
mat::mat(int N,int M)
{int i;
n=N;
m=M;
mas=new int*[n];
for (i=0; i<n; i++)
{
mas[i]=new int[m];
}
}
mat::mat(mat &obj)
{int i, j;
n=obj.n;
m=obj.m;
mas=new int*[n];
for(i=0;i<n;i++)
{
mas[i]=new int[m];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
mas[i][j]=obj.mas[i][j];
}
}
}
mat::~mat()
{int i;
for(i=n-1;i>=0;i--)
{
delete[]mas[i];
mas[i]=0;
}
delete[]mas;
mas=0;
}
void mat::random()
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
mas[i][j]=rand()%201-100;
}
}
void mat::vivod()
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
cout<<mas[i][j]<<"\t";
}
cout<<endl;
}
}
ostream & operator <<(ostream & out, mat A)
{
for (int i=0; i<A.n; i++)
{
for (int j=0; j<A.m; j++)
out<<A.mas[i][j]<<"\t";
out<<endl;
}
out<<endl;
return out;
}
istream & operator >>(istream & in, mat & A)
{
for (int i=0; i<A.n; i++)
for (int j=0; j<A.m; j++)
in>>A.mas[i][j];
return in;
}
mat mat ::operator + (const mat & A)
{
int minn, minm;
if (A.n<=n) minn=A.n;
else minn=n;
if (A.m<=m) minm=A.m;
else minm=m;
mat sum(minn, minm);
{ int i,j;
for (i = 0; i < sum.n; i++ )
for (j=0; j<sum.m; j++ )
sum.mas[i][j]=mas[i][j]+A.mas[i][j];
return sum;
}
}
mat mat::operator = (mat A)
{int i,j;
for (i=n-1; 0<=i; i--)
{
delete [] mas[i];
mas[i]=0;
}
delete []mas;
mas=0;
n=A.n;
m=A.m;
mas = new int* [n];
for ( i=0;i<n;i++)
mas[i]=new int[m];
for (i=0; i<n; i++)
for (j=0; j<m; j++)
mas[i][j]=A.mas[i][j];
return *this;
}
mat mat::operator * (int c)
{ mat A(n,m);
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
A.mas[i][j]=mas[i][j]*c;
return A;
}
mat operator*(int c, mat A)
{
return (A*c);
}
void main(void)
{ int k;
srand((unsigned) time(NULL));
mat A,B,C(3,3);
A.random();
cout<<"Matrica A=\n";
cout<<A<<endl;
B.random();
cout<<"Matrica B=\n";
cout<<B<<endl;
C=A+B;
cout<<"C=A+B=\n";
cout<<C<<endl;
cout<<" Vvedite chislo na cotoroe nujno umnojit k=\n";
cin>>k;
C=C*k;
cout<<"C*k=\n";
cout<<C;
}