#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
//PROGRAM MA TWORZYC DYNAMICZNIE 2 STOSY JEDEN ORYGINALNY I KOPIE DO NIEGO PRZY UZYCIU KONSTRUKTOROW
class stos
{
public:
void push (int a);
int pop();
void clear();
stos() ;
stos(stos & ;
~stos();
private:
int top;
int size;
int *dane;
};
stos::stos() //STOS ORYGINALNY
{
top=0;
size=0;
dane=NULL;
};
stos::stos(stos & rhs) //KOPIA PRZY UZYCIU KONSTRUKTORA
{
top=rhs.top;
size=rhs.size;
dane=rhs.dane;
}
stos::~stos() //USUWANIE STOSU (CHYBA)
{
};
void stos::clear() //TO TEZ
{
top=0;
};
void stos::push(int a) //DYNAMICZNA ALOKACJA PAMIECI I ZAPELNIANIE STOSU PIERWSZEGO
//(FUNKCJA ZAPELNIAJACA STOS)
{
if (top>=size)
{
int newsize=(size+1)*2;
dane=(int*)realloc(dane,newsize* sizeof (int));//TUTAJ JEST ALOKOWANIE
printf("Rozmiar stosu : %d -> %dn",size,newsize);
assert(dane);
size=newsize;
}
dane[top++]=a;//TUTAJ ZAPELNIANIE
};
int stos::pop()
{
assert(top>0);
return dane[--top];
};
int main ()
{
int i;
stos s1;
for (i=0;i<=20;i++)
s1.push(i);
printf("Zapelnianie stosu zakonczonen");
stos s2(s1);//WYWOLANIE KONSTRUKTORA KOPIUJACEGO
printf("Kopia stosu zrobionan");
printf("STOS ORYGINALNYn");
for (i=0;i<=20;i++)
printf("%d ",s1.pop());
printf("n");
printf("KOPIA STOSUn");// WYSWIETLA ZAWARTOSC KOPII (CHYBA)
for (i=0;i<=20;i++)
printf("%d ",s2.pop());// S2.POP() OZNACZA WYSWIETLANIE WLASNIE KOPII
getchar();
return 0;
}// MAM NADZIEJE ZE TO GOWNO DZIALA TAK JAK POWINNO, A NIE WYSWIETLA JAKIES BZDURY!!!!!!!!!!!!
program przedstawia kopiowanie płytkie stosu, mam prosbe by ktos mógł to przerobic na kopiowanie glebokie, dodał operator "=". Jezeli istnieje możliwośc dodania komentarzy to byłbym bardzo wdzieczny
Bardzo zależy mi na czasie!!!
Z góry dziękuję zqa okazaną pomoc :evil: :!: :!: :!: