Laboratorium nr 13
Temat: Program samodzielny interaktywna obsługa macierzy.
1. Zadanie
Napisz program, który będzie umożliwiał deklaracje szeregu macierzy o dowolnych wymiarach i
typach (integer, float, char, itp.) oraz podstawowe działania na macierzach (dodawanie, mnożenie,
transpozycja, itp.) z wykorzystaniem opanowanych elementów języka C++.
Uwaga:
" Program powinien składać się z oddzielnych plików, tzn. pliku głównego oraz plików
zdefiniowanych klas, itp.
" Program powinien posiadać szereg zabezpieczeń, np. sprawdzanie czy wybrane macierzy mają
odpowiednie typy i wymiary oraz czy istnieje przestrzeń na utworzenie kolejnej macierzy, itp.
!!! Program nie powinien posiadać żadnego menu wyboru
Przykład: (opracowanie własnego pomysłu mile widziane a nawet zalecane)
# include
# include
# include
# include
# include
using namespace std;
class macierz {
float *tab;
static int licznik;
int numer;
public:
int x,y;
void wyswietl();
void wprowadz(float w);
macierz operator++(void);
int operator==(macierz m);
macierz * operator+(macierz m);
friend macierz * operator^(const class macierz &, float p);
macierz(int n=0, int m=0, int nr=0);
~macierz();
};
int macierz::licznik=0;
void macierz::wyswietl(){
cout << "\nMacierz:" << numer << endl;
for (int i=0; i for (int j=0; jtab+y*i+j) << "\t";
cout <<"\n";
};
};
void macierz::wprowadz (float w) {
for (int i=0; i for (int j=0; jtab+y*i+j)=w;
};
macierz macierz::operator++(void){
licznik++;
return *this;
};
int macierz::operator==(macierz m){
if ((m.x==this->x)&&(m.y==this->y)) return 1;
else return 0;
};
macierz * macierz::operator+(macierz m){
class macierz *tmp;
tmp=new macierz(m.x,m.y);
for(int i=0; i for(int j=0; j *(tmp->tab+tmp->y*i+j)=*(this->tab+this->y*i+j)+*(m.tab+m.y*i+j);
return tmp;
};
macierz::macierz(int n, int m, int nr){
x=n;
y=m;
numer=nr;
tab=new float[n*m];
for (int i=0; i for (int j=0; j *(tab+y*i+j)=0.0;
}
macierz::~macierz(){
};
macierz * operator^(const class macierz &m1, float p){
class macierz *tmp;
tmp=new macierz(m1.x,m1.y);
for(int i=0; i for(int j=0; j *(tmp->tab+tmp->y*i+j)=pow(*(m1.tab+m1.y*i+j),p);
return tmp;
};
int main() {
class macierz *M[100];
char znak;
int n,m,w=0;
float liczba;
M[0]=new macierz(0,0,0); //macierz do operacji
w++;
while (znak!='q'){
cout << "[In:] "; cin >> znak;
cout << "[Out:] ";
switch (znak) {
case 'u' : cin >> n >> m;
M[w]=new macierz(n,m,w);
M[w]->wyswietl();
w++;
break;
case 'd' : cin >> n;
M[n]->wyswietl();
break;
case 'w' : cin >> n >> liczba;
M[n]->wprowadz(liczba);
M[n]->wyswietl();
break;
case 's' : cin >> n >> m;
if (*M[n]==*M[m]) {
M[0]=*M[n]+*M[m];
M[0]->wyswietl();
}
else cout << "Blad\n";
break;
case 'h' : cout <<"Dostepne komendy:\n";
cout << "\tu - tworzy macierz o zadanych wymiarach, np. u 2 2\n";
cout << "\td - wyswietla macierz o zadanym numerze, np. d 1\n";
cout << "\tw - wypelnia macierz okreslona liczba, np. w 1 1.0\n";
cout << "\ts - sumuje dwie macierze, np. s 1 2\n";
cout << "\tq - koniec\n";
cout << "\th - wyswietla pomoc\n";
break;
default : cout << "Blad\n";
break;
};
};
delete [] M;
return 0;
}
Uwaga: po uruchomieniu wpisz kolejno wpisz kolejno np. następując rozkazy:
u 2 2
u 2 2
w 1 1
w 2 2
s 1 2
d 0
Wyszukiwarka
Podobne podstrony:
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
CPP (2)
lab chemia korozja
więcej podobnych podstron