• Nie Znaleziono Wyników

WZORCE (SZABLONY) KLAS - PRZYKŁAD

N/A
N/A
Protected

Academic year: 2021

Share "WZORCE (SZABLONY) KLAS - PRZYKŁAD "

Copied!
2
0
0

Pełen tekst

(1)

WZORCE (SZABLONY) KLAS - PRZYKŁAD

1 //PLIK stosy.cpp

// Przyklad definicji stosu znakow i stosu liczb calkowitych // Nalezy zwrocic uwage na to, czym roznia sie definicje stosow // znakow i liczb calkowitych. Plik stos_t.cpp zawiera przyklad

// wykorzystania koncepcji klasy wzorcowej do uproszczenia (sparametryzowania) // definicji stosu dla dowolnego, istniejacego typu obiektow

#include <iostream.h>

#include <constream.h>

//Definicja klasy obiektow STOS ZNAKOW class StosZnakow {

char* v;

char* p;

int rozm;

public:

StosZnakow(int r) {v=p=new char[rozm=r];}

~StosZnakow(){delete [] v;}

void wloz(char a){*p++=a;}

char zdejmij (){return *--p;}

int rozmiar() const {return p-v;}

}; // koniec klasy stos

//Definicja klasy obiektow STOS LICZB CALKOWITYCH class StosLiczbCalkowitych {

int* v;

int* p;

int rozm;

public:

StosLiczbCalkowitych(int r) {v=p=new int[rozm=r];}

~StosLiczbCalkowitych(){delete [] v;}

void wloz(int a){*p++=a;}

int zdejmij (){return *--p;}

int rozmiar() const {return p-v;}

}; // koniec klasy stos

//Czesc testowa void main() {

clrscr();

cout<<"\n\t PRZYKLAD: Definicja stosu znakow \n";

//Stos znakow

StosZnakow sc(100);

cout <<"\nKolejnosc kladzenia znakow na stosie\n\t";

for(int i=33;i<100;i++){ sc.wloz(char(i));cout<<char(i);}

cout <<"\nKolejnosc pobierania znakow ze stosu\n\t";

for( i=33;i<100;i++)cout<<sc.zdejmij();

cout<<"\n\n\n\n\t PRZYKLAD: Definicja stosu liczb calkowitych\n";

//Stos liczb calkowitych

StosLiczbCalkowitych si(100);

cout <<"\nKolejnosc kladzenia liczb na stosie\n\t";

for( i=0;i<20;i++){ si.wloz(i);cout<<setw(3)<<i;}

cout <<"\nKolejnosc pobierania liczb ze stosu\n\t";

for( i=0;i<20;i++)cout<<setw(3)<<si.zdejmij();

}// koniec main()

(2)

WZORCE (SZABLONY) KLAS - PRZYKŁAD

2 //PLIK: stos_t.cpp

// Przyklad definicji stosu znakow i stosu liczb calkowitych // przy uzyciu wzorca klasy

// Jest to uogolnione rozwiĄzanie pozwalajĄce konstruowac

// stos dowolnego typu obiektu w oparciu o jedna definicje stosu // Ten program jest rownowaznikiem przykladowego programu stosy.cpp

#include <iostream.h>

#include <constream.h>

template <class TypIstniejacy> // TypIstniejacy jest pramterem

// ktory w definicji stosu nalezy zamienic // na nazwe istniejacego typu (wbudowanego // lub zdefiniowanego przez uzytkownika) class stos {

TypIstniejacy* v;

TypIstniejacy* p;

int rozm;

public:

stos(int r) {v=p=new TypIstniejacy[rozm=r];}

~stos(){delete [] v;}

void wloz(TypIstniejacy a){*p++=a;}

TypIstniejacy zdejmij (){return *--p;}

int rozmiar() const {return p-v;}

}; // koniec klasy stos

///Czesc testowa void main() {

clrscr();

cout<<"\n\t PRZYKLAD: Definicja stosu znakow przy uzyciu wzorca klasy\n";

//Stos znakow - identyczne dzialanie jak programu stosch.cpp

stos <char> sc(100); // tutaj za TypIstniejacy wstawiamy typ char // UWAGA: musimy uzyc nawiasow <>

cout <<"\nKolejnosc kladzenia znakow na stosie\n\t";

for(int i=33;i<100;i++){ sc.wloz(char(i));cout<<char(i);}

cout <<"\nKolejnosc pobierania znakow ze stosu\n\t";

for( i=33;i<100;i++)cout<<sc.zdejmij();

cout<<"\n\n\n\n\t PRZYKLAD: Definicja stosu liczb przy uzyciu wzorca klasy\n";

//Stos liczb calkowitych - identyczne dzialanie jak programu stosint.cpp stos <int> si(100); //tutaj za TypIstniejacy wstawiamy typ int

cout <<"\nKolejnosc kladzenia liczb na stosie\n\t";

for( i=0;i<20;i++){ si.wloz(i);cout<<setw(3)<<i;}

cout <<"\nKolejnosc pobierania liczb ze stosu\n\t";

for( i=0;i<20;i++)cout<<setw(3)<<si.zdejmij();

}// koniec main()

************************************** LISTING WYKONANIA PROGRAMU *********************************

PRZYKLAD: Definicja stosu znakow przy uzyciu wzorca klasy

Kolejnosc kladzenia znakow na stosie

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc Kolejnosc pobierania znakow ze stosu

cba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!

PRZYKLAD: Definicja stosu liczb przy uzyciu wzorca klasy

Kolejnosc kladzenia liczb na stosie

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Kolejnosc pobierania liczb ze stosu

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Cytaty

Powiązane dokumenty

[r]

Przy każdej z poniższych pięciu liczb n podaj w miejscu kropek liczbę cyfr liczby n oraz pierwszą (od lewej) cyfrę liczby n w zapisie

Opierając się na szablonie klasy z zadania 2 wyposażonej dodatkowo w funkcje liczenia sumy oraz sumy kwadratów elementów, wyprowadzić dwuwymiarową tablicę liczb dowolnego typu

W artykule omówiono zasadê dzia³ania ogniwa paliwowego typu PEMFC (ang. Proton Exchange Membrane Fuel Cell).. Scharakteryzowano ró¿ne typy

Hipoteza Goldbacha (1742) (I) Każda liczba naturalna wi¸eksza niż 5 może być przedstawiona w postaci sumy trzech liczb pier- wszych.. (II) Każda liczba parzysta wi¸eksza niż 2

Hipoteza Goldbacha (1742) (I) Każda liczba naturalna wi¸eksza niż 5 może być przedstawiona w postaci sumy trzech liczb pier- wszych.. (II) Każda liczba parzysta wi¸eksza niż 2

Odejmowanie liczby można zastąpić dodawaniem liczby do niej

Odejmowanie liczby można zastąpić dodawaniem liczby do niej