Laboratorium nr 8
Temat: Przeci anie funkcji składowych oraz konstruktorów klas
1. Koncepcja przeci ania funkcji w C++
W C++ nie ma konieczno ci przestrzegania typów danych, gdy jest on w stanie sam sprawdzi
typ danych a nast pnie stwierdzi czy wywołana funkcja została zdefiniowana z danym tym typem
danych. Ta sama funkcja mo e by w C++ zdefiniowana wielokrotnie dla ró nych typów parametrów,
przy czym C++ u yje automatycznie wła ciwej wersji funkcji, któr odnajdzie na podstawie typu i liczby
przesyłanych argumentów.
# include <iostream>
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
using namespace std;
class macierz {
public:
int x,y;
int *tab_itg;
float *tab_flt;
int wyswietl(int *tab);
int wyswietl(float *tab);
int wprowadz(int *tab, int w);
int wprowadz(float *tab, float w);
macierz(int n, int m, int w);
macierz(int n, int m, float w);
~macierz();
};
int macierz::wyswietl(int *tab){
cout << "\nMacierz: Integer" << endl;
for (int i=0; i<x; i++) {
for (int j=0; j<y; j++) cout << *(tab+y*i+j) << "\t";
cout <<"\n";
};
};
int macierz::wyswietl(float *tab){
cout << "\nMacierz: Float" << endl;
for (int i=0; i<x; i++) {
for (int j=0; j<y; j++) cout << *(tab+y*i+j) << "\t";
cout <<"\n";
};
};
int macierz::wprowadz (int *tab, int w) {
for(int i=0;i<x;i++) for(int j=0;j<y;j++)*(tab+y*i+j)=w;
return 0;
};
int macierz::wprowadz (float *tab, float w) {
for(int i=0;i<x;i++) for(int j=0;j<y;j++)*(tab+y*i+j)=w;
return 0;
};
macierz::macierz(int n, int m, int w){
x=n;
y=m;
tab_itg=new int[n*m];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
*(tab_itg+y*i+j)=w;
}
macierz::macierz(int n, int m, float w){
x=n;
y=m;
tab_flt=new float[n*m];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
*(tab_flt+y*i+j)=w;
}
macierz::~macierz(){
delete[] tab_itg;
delete[] tab_flt;
};
int main() {
class macierz *A, *B;
A=new macierz(3,3,(int)0);
A->wprowadz(A->tab_itg,1);
A->wyswietl(A->tab_itg);
B=new macierz(3,3,(float)0);
B->wprowadz(B->tab_flt,2.2);
B->wyswietl(B->tab_flt);
getch();
delete A;
delete B;
return 0;
}
2. Zadanie:
Zmodyfikuj powy szy program tak, aby istniała dodatkowo mo liwo deklaracji macierzy
znakowych, przy czym program powinien posiada podstawowe operacje na elementach macierzy (tzn.
kasowanie, dopisywanie, itp.) w zale no ci od typu danych
Uwaga: Program powinien składa si z oddzielnych plików, tzn. pliku głównego oraz plików
zdefiniowanych klas, itp.
Program powinien posiada krótkie menu wyboru, np.:
1.
Utwórz macierz: integer, float, char
2.
Wy wietl macierz
3.
Wpisz element macierzy
4.
Kasuj element macierzy
5.
itp.
6.
Koniec