Skleciłem na szybko taki program.
Kod: Zaznacz cały
#include <iostream>
#include<cmath>
using namespace std;
class mac
{
private:
int k, w;
double**tab;
public:
void wprowadz();
double frobenius();
double pierwsza_norma();
double inf_norma();
void wypisz();
};
void mac::wypisz()
{
for ( int i = 0; i < w; ++i)
{
cout<<endl;
cout<<"| ";
for ( int j = 0; j < k; ++j)
cout<<tab[i][j]<<" | ";
}
cout<<endl;
}
void mac::wprowadz()
{
double tmp;
cout<<"Podaj liczbe kolumn:" ;
cin>>k;
cout<<"Podaj liczbe wierszy:" ;
cin>>w;
tab = new double *[w];
for ( int i = 0; i < w; ++i )
{
tab[i] = new double [k];
for ( int j = 0; j < k; ++j)
{
cout<<"Podaj wartosc A" <<i+1<<j+1<<endl;
cin>>tmp;
tab[i][j]=tmp;
}
}
};
double mac::frobenius()
{
double frob1;
double frob=0;
for ( int i = 0; i < w; i++)
{
for ( int j = 0; j < k; j++)
{
frob+=pow(tab[i][j], 2.0);
}
}
frob1=pow(frob, 0.5);
return frob1 ;
};
double mac::pierwsza_norma()
{
double* tabmax = new double(k);
double max;
for ( int i = 0; i < k; i++)
{
max=0;
for ( int j = 0; j <w; j++)
{
max+=tab[j][i];
}
tabmax[i]=max;
}
max=-1.8e38;
for(int i=0; i<k; i++)
{
if(tabmax[i]>max)
{
max=tabmax[i];
}
}
delete[] tabmax;
return max;
}
double mac::inf_norma()
{
double* tab_inf = new double(w);
double max_inf;
for ( int i = 0; i < w; i++)
{
max_inf=0;
for ( int j = 0; j < k; j++)
{
max_inf+=tab[i][j];
}
tab_inf[i]=max_inf;
}
max_inf=-1.8e38;
for(int i=0; i<w; i++)
{
if(tab_inf[i]>max_inf)
{
max_inf=tab_inf[i];
}
}
delete[] tab_inf;
return max_inf;
}
int main()
{
mac m1;
m1.wprowadz();
m1.wypisz();
double f=m1.frobenius();
cout<<"Norma Frobeniusa: "<<f<<endl;
double p=m1.pierwsza_norma();
cout<<"Pierwsza norma: "<<p<<endl;
double i=m1.inf_norma();
cout<<"Inf norma: "<<i<<endl;
return 0;
}