Zad_1
a)
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
const int N=30;
class Stos
{
private:
int maxRozmiar;
vector<double> wekStosu;
int szczyt;
public:
Stos(int s): maxRozmiar(s), szczyt(-1) //konstruktor
{
wekStosu.reserve(maxRozmiar); //ustawienie rozmiaru wektora z danymi
}
void poloz(double p) //kładzie element na szczycie
{
wekStosu[++szczyt] = p; //zwiększa szczyt, wstawia element
}
double zdejmij(double z) //pobiera element ze szczytu
{
wekStosu[szczyt--] = z; //zmniejsza szczyt
}
double sprawdzSzczyt() //zwraca element na szczycie
{
return wekStosu[szczyt];
}
bool jestPusty() //prawda, gdy stos jest pusty
{
return (szczyt == -1);
}
bool jestPelny() //prawda, gdy stos jest wypełniony
{
return (szczyt == maxRozmiar-1);
}
}; //koniec klasy Stosik
int main ()
{
int i=0;
char txt1[N], txt2[N];
Stos stosik(N);
cout << "Podaj jakis tekst (max 30 znakow) : ";
cin >> txt1;
while(txt1[i]) //na stosik
{
stosik.poloz(txt1[i++]);
}
cout << "\n Obrucony tekst : ";
while(i!=0) //ze stosiku
{
stosik.zdejmij(txt1[i--]);
cout << txt1[i];
}
cout << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
c)
#include <iostream>
#include <vector>
using namespace std;
const int N=10;
class Stos
{
private:
int maksRozmiar;
vector<char> wekStosu;
int szczyt;
public:
Stos(int s):maksRozmiar(s),szczyt(-1) //konstruktor
{
wekStosu.reserve(maksRozmiar);//ustawienie rozmiaru wektora z danymi
}
void poloz(char j) //kładzie element na szczycie
{
wekStosu[++szczyt]=j; //zwiększa szczyt, wstawia element
}
char zdejmnij() //pobiera element ze szczytu
{
return wekStosu[szczyt--]; //zmniejsza szczyt
}
char sprawdz_szczyt() //zwraca element na szczycie
{
return wekStosu[szczyt];
}
bool jestPusty() //prawda, gdy stos jest pusty
{
return (szczyt==-1);
}
char czytaj(int nr)
{
return wekStosu[nr];
}
int czytajSzczyt()
{
return szczyt;
}
}; //koniec klasy stos
int main()
{
char ch[N];
bool czy2=false;
Stos stosik(N);
gets(ch);
for(int i=0; ch[i]!=0; i++)
{
stosik.poloz(ch[i]);
for(int j=0; j<stosik.czytajSzczyt(); j++)
if(ch[i]==stosik.czytaj(j))
czy2=true;
}
if(czy2)
cout << " Na stosie sa min. 2 elemety identyczne";
else
cout << " Na stosie nie ma elemetow identycznych";
cout << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
b)
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
const int N=10;
class Stos
{
private:
int maxRozmiar;
vector<int> wekStosu;
int szczyt;
public:
Stos(int s): maxRozmiar(s), szczyt(-1) //konstruktor
{
wekStosu.reserve(maxRozmiar); //ustawienie rozmiaru wektora z danymi
}
void poloz(int p) //kładzie element na szczycie
{
wekStosu[++szczyt] = p; //zwiększa szczyt, wstawia element
}
int zdejmij() //pobiera element ze szczytu
{
return wekStosu[szczyt--]; //zmniejsza szczyt
}
int sprawdzSzczyt() //zwraca element na szczycie
{
return wekStosu[szczyt];
}
bool jestPusty() //prawda, gdy stos jest pusty
{
return (szczyt == -1);
}
bool jestPelny() //prawda, gdy stos jest wypełniony
{
return (szczyt == maxRozmiar-1);
}
}; //koniec klasy Stosik
int main ()
{
Stos stosik(N), p(N), np(N);
int x;
srand(time(0));
cout << "Nasz stosik : \n";
for(int i=0; i<N; i++)
{
x = rand()%100;
cout << x << "\t";
stosik.poloz(x);
}
while(!stosik.jestPusty())
{
x = stosik.zdejmij();
if((x%2)!=0)
np.poloz(x);
else
p.poloz(x);
}
cout<<"\n\n Liczby parzyste : \n";
while(!p.jestPusty())
cout << p.zdejmij() << "\t";
cout<<"\n\n Liczby nieparzyste : \n";
while(!np.jestPusty())
cout << np.zdejmij() << "\t";
cout << "\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}
Zad_2
a)
#include <iostream>
#include <vector>
using namespace std;
const int N=30;
class Stos
{
private:
int maksRozmiar;
vector<char> wekStosu;
int szczyt;
public:
Stos(int s):maksRozmiar(s),szczyt(-1) //konstruktor
{
wekStosu.reserve(maksRozmiar);//ustawienie rozmiaru wektora z danymi
}
void poloz(char j) //kładzie element na szczycie
{
wekStosu[++szczyt]=j; //zwiększa szczyt, wstawia element
}
char zdejmnij() //pobiera element ze szczytu
{
return wekStosu[szczyt--]; //zmniejsza szczyt
}
char sprawdz_szczyt() //zwraca element na szczycie
{
return wekStosu[szczyt];
}
bool jestPusty() //prawda, gdy stos jest pusty
{
return (szczyt==-1);
}
}; //koniec klasy stos
int main()
{
Stos stosik(N);
char ch[N];
gets(ch);
for(int i=0; ch[i]!=0; i++)
{
if(ch[i]=='(') stosik.poloz(ch[i]);
if(ch[i]==')')
{
if(!stosik.jestPusty())break;
else stosik.zdejmnij();
}
}
cout<<"\n Nawiasy "<<((stosik.jestPusty())?"":"NIE ")<<"sa poprawne" ;
cout<<"\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}