niedawno pisalem post odnosnie macierzy, jednak nikt nie pomogl. Teraz prawie sam do wszystkiego doszedlem jednak mam problem. Tu mam tylko macierz 2x2 a musze miec tez inne rozmiary, moglby mi ktos podpowiedziec jak przerobic kod, aby obslugiwal tez inne rozmiary?
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
class macierz
{
private:
int pier[2];
int dru[2];
public:
macierz operator+( macierz a);//prze³adowanie +
macierz operator-( macierz a);//prze³adowanie -
macierz operator*( macierz a);//prze³adowanie *
macierz operator*( int a);//prze³adowanie * przez liczbe zeczywist¹
macierz operator/(int a);//prze³adowanie ~ negacja
friend ostream & operator<< (ostream &, macierz &);
friend istream & operator>>(istream &, macierz &);
};
int i;
macierz macierz::operator+(macierz a)//prze³adowanie +
{
macierz suma;
for(i=0; i<2; i++)
{
suma.pier[i] = pier[i] + a.pier[i];
suma.dru[i] = dru[i] + a.dru[i];
}
return suma;
}
macierz macierz::operator-(macierz a)//prze³adowanie +
{
macierz suma;
for(i=0; i<2; i++)
{
suma.pier[i] = pier[i] - a.pier[i];
suma.dru[i] = dru[i] - a.dru[i];
}
return suma;
}
macierz macierz::operator*(macierz a)//prze³adowanie +
{
macierz suma;
suma.pier[0] = pier[0] * a.pier[0] + pier[1] * a.dru[0];
suma.dru[0] = dru[0] * a.pier[0] + dru[1] * a.dru[0];
suma.pier[1] = pier[0] * a.pier[1] + pier[1] * a.dru[1];
suma.dru[1] = dru[0] * a.pier[1] + dru[1] * a.dru[1];
return suma;
}
macierz macierz::operator*(int a)//prze³adowanie +
{
macierz suma;
for(i=0; i<2; i++)
{
suma.pier[i] = pier[i] * a;
suma.dru[i] = dru[i] * a;
}
return suma;
}
macierz macierz::operator/(int a)//prze³adowanie +
{
macierz suma;
a= pier[0] * dru[1] + pier[1] * dru[0];
suma.pier[0] = dru[1]*(1 / a) ;
suma.dru[0] = pier[1] * -1*(1 / a);
suma.pier[1] = dru[0] *-1*(1 / a);
suma.dru[1] = pier[0]*(1 / a);
return suma;
}
macierz pokaz;
ostream & operator<< (ostream & oko, macierz & pokaz) //przeci¹¿ony operator strumienia wyjscia
{
oko << " " << pokaz.pier[0] << " " << pokaz.pier[1]<< " ";
oko <<endl<< " " << pokaz.dru[0] << " " << pokaz.dru[1]<< " ";
return oko;
}
istream & operator>>( istream & klik,macierz & pokaz)//przeci¹¿ony operator strumienia wejœcia
{
cout<<" pierwsza kolumna: "<<endl ;
klik>>pokaz.pier[0] >>pokaz.dru[0] ;
cout<<" druga kolumna : "<<endl ;
klik>>pokaz.pier[1]>>pokaz.dru[1] ;
return klik;
}
int main(int argc, char *argv[])
{
int b=0,li=0;
int q=0,w=1;
macierz pierwsza,druga,wynik;
for(; q!=w;)
{
system("cls");
cout<<"\n\n************ MENU GLUWNE **************\n\n\n";
cout<<"wybierz operacje jakiej chcesz dokonaæ na macierzach\n\n";
cout<<"1 dodawanie\n2 odejmowanie\n3 mnozenie\n4 mnozenie przez liczbe rzeczywista\n5 odwrotnosc\n";
cout<<"6 zakoncz program\n";
cin>>b;
switch (b)
{
case 1:
system("cls");
cout<<"KAZDY ELEMENT MACIERZY PROSZE ZATWIERDZIC KLAWISZEM\n\n";
cout<<" E N T E R ";
cout<<"\n\n\n";
cout<<"\npodaj parametry pierwszej macierzy\n";
cin>>pierwsza;
cout<<"\npodaj parametry drugiej macierzy\n";
cin>>druga;
cout<<"\n\ntwoja operaca to : \n\n"<<pierwsza<<"\n\n + \n\n"<<druga<<endl;
wynik = pierwsza * druga;
cout<<"wynik twojej operacji : \n\n"<<wynik<<endl;
getch();
break;
case 2:
system("cls");
cout<<"KAZDY ELEMENT MACIERZY PROSZE ZATWIERDZIC KLAWISZEM\n\n";
cout<<" E N T E R ";
cout<<"\n\n\n";
cout<<"\npodaj parametry pierwszej macierzy\n";
cin>>pierwsza;
cout<<"\npodaj parametry drugiej liczby\n";
cin>>druga;
cout<<"\n\ntwoja operaca to : \n\n"<<pierwsza<<"\n\n - \n\n"<<druga<<endl;
wynik = pierwsza - druga;
cout<<"wynik twojej operacji : \n\n"<<wynik<<endl;
getch();
break;
case 3:
system("cls");
cout<<"KAZDY ELEMENT MACIERZY PROSZE ZATWIERDZIC KLAWISZEM\n\n";
cout<<" E N T E R ";
cout<<"\n\n\n";
cout<<"\npodaj parametry pierwszej macierzy\n";
cin>>pierwsza;
cout<<"\npodaj parametry drugiej macierzy\n";
cin>>druga;
cout<<"\n\ntwoja operaca to : \n\n"<<pierwsza<<"\n\n * \n\n"<<druga<<endl;
wynik = pierwsza * druga;
cout<<"wynik twojej operacji : \n\n"<<wynik<<endl;
getch();
break;
case 4:
system("cls");
cout<<"KAZDY ELEMENT MACIERZY PROSZE ZATWIERDZIC KLAWISZEM\n\n";
cout<<" E N T E R ";
cout<<"\n\n\n";
cout<<"\npodaj parametry macierzy\n";
cin>>pierwsza;
cout<<"\npodaj liczbe rzeczywista\n";
cin>>li;
cout<<"\n\ntwoja operaca to : \n\n"<<pierwsza<<"\n\n - \n\n"<<druga<<endl;
wynik = pierwsza * li;
cout<<"wynik twojej operacji : \n\n"<<wynik<<endl;
getch();
break;
case 5:
system("cls");
cout<<"KAZDY ELEMENT MACIERZY PROSZE ZATWIERDZIC KLAWISZEM\n\n";
cout<<" E N T E R ";
cout<<"\n\n\n";
cout<<"\npodaj parametry macierzy\n";
cin>>pierwsza;
cout<<"\n\ntwoja operaca to odwracanie macierzy : \n\n"<<pierwsza<<endl;
wynik = pierwsza / 1 ;
getch();
break;
case 6:
w=0;
break;
default:
cout<<"zla opcja sprobuj ponownie";
getch();
break;
}// for q w
}
system("PAUSE");
return EXIT_SUCCESS;
}