Lab cpp 07

background image

Laboratorium nr 7

Temat: Dziedziczenie, tablice obiektów oraz obiekty jako argumenty funkcji

1. Koncepcja dziedziczenia w C++

W C++ istnieje mo liwo definicji wielu klas, przy czym ró ne klasy mog zawiera tak e

elementy wspólne, np. zmienne czy funkcje składowe. W C++ istnieje mo liwo utworzenia pewnych

klas ogólnych, które nazywamy klasami bazowymi (base classes). Klasa bazowa zawiera składowe, które

b d wyst powa z kolei we wszystkich tzw. klasach pochodnych, np.

class macierz_integer :

public macierz {

private:

….

public:

….

}

gdzie klasa macierz_integer jest pochodn klasy bazowej macierz. W przypadku dziedziczenia nale y

zwróci uwag na deklaracje typu public oraz private przed nazw klasy bazowej.

# include <conio.h>
# include <iostream>
# include <stdio.h>
# include <stdlib.h>

using namespace std;

class macierz {
public:
int x,y;
int numer;
int wyswietl_i(class itg *M);
int wyswietl_f(class flt *M);
int wprowadz_i(class itg *M, int w);
int wprowadz_f(class flt *M, float w);
};

class itg:public macierz {
public:
int *tab;
itg(int nr, int n, int m);
~itg();
};

class flt:public macierz {
public:
float *tab;
flt(int nr, int n, int m);
~flt();
};

background image

int macierz::wyswietl_i(class itg *M){
cout << "\nNumer macierzy=" << numer << endl;
for (int i=0; i<x; i++) {
for (int j=0; j<y; j++) cout << *(M->tab+y*i+j) << "\t";
cout <<"\n";
};
};

int macierz::wprowadz_i (class itg *M, int w) {
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
*(M->tab+y*i+j)=w;
return 0;
};

int macierz::wyswietl_f(class flt *M){
cout << "\nNumer macierzy=" << numer << endl;
for (int i=0; i<x; i++) {
for (int j=0; j<y; j++) cout << *(M->tab+y*i+j) << "\t";
cout <<"\n";
};
};

int macierz::wprowadz_f (class flt *M, float w) {
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
*(M->tab+y*i+j)=w;
return 0;
};

itg::itg(int nr, int n, int m){
x=n;
y=m;
numer=nr;
tab=new int[n*m];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
*(tab+y*i+j)=0;
}

itg::~itg(){
delete[] tab;
};

flt::flt(int nr, int n, int m){
x=n;
y=m;
numer=nr;
tab=new float[n*m];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
*(tab+y*i+j)=0;
}

flt::~flt(){
delete[] tab;
};

background image

int main() {
int nr=0;
class itg M(++nr,1,1);
class itg *A[2];
class flt *B[2];
M.wprowadz_i(&M,1);
M.wyswietl_i(&M);
for (int i=2;i<4;i++){
A[i]=new itg(++nr,i,i);
A[i]->wprowadz_i(A[i],nr);
A[i]->wyswietl_i(A[i]);
B[i]=new flt(++nr,i,i);
B[i]->wprowadz_f(B[i],nr*1.1);
B[i]->wyswietl_f(B[i]);
};
system("PAUSE");
delete[] A;
delete[] B;
return 0;
}

2. Zadanie:

Zmodyfikuj powy szy program tak, aby istniała mo liwo deklaracji „n” tablic o kolejno zadanych

wymiarach i typach, przy czym program powinien posiada mo liwo :

• wy wietlania macierzy o zadanym numerze,

• wy wietlania macierzy według typu (integer, float)

• wypełnienia wybranej macierzy zadan liczb ,

• zerowanie wybranej macierzy macierzy,

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

2.

Wy wietl macierz, wg numeru

3.

Wy wietl macierze, wg typu

4.

Wypełnij macierz, wg numeru

5.

Zeruj macierz, wg numeru

6.

itp.

7.

Koniec


Wyszukiwarka

Podobne podstrony:
Lab cpp 12
lab cw 07 form
Test z Lab 3 06 07
Lab cpp 09
Lab cpp 02
lab cw 07 form
Lab cpp 06
Lab cpp 05
Lab cpp 08
Lab cpp 03
Lab MG 07
Lab cpp 04
Lab cpp 11
Lab cpp 12
Lab MG 07
07 lab hałas i osłony mater do sprawozd
07 lab ster elektr nap mat na sprawozd
Lab 07 Uwierzytelnianie v1 2

więcej podobnych podstron