Witam, mam problem z poniższym programem. Po skompilowaniu wysypuje się ;/ Może chodzi o złą alokację pamięci dla tablicy ?
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Klocki
{
int rozmiar;
string kolor;
int masa;
public:
string nazwa;
Klocki(int roz , string kol , int mas, string nazw)
{
rozmiar = roz;
kolor = kol;
masa = mas;
nazwa = nazw;
}
void wys()
{
cout<<endl<<"Rozmiar: "<<rozmiar<<endl<<"Kolor: "<<kolor<<endl<<"Masa: "<<masa<<endl<<"Nazwa: "<<nazwa<<endl<<endl;
}
};
class Prostopadloscian : public Klocki
{
int a,b,c;
public:
Prostopadloscian ( int mas,int aa ,int bb , int cc) : Klocki (aa*bb*cc, "Niebieski" , mas, "Prostopadloscian")
{
a=aa;
b=bb;
c=cc;
}
};
class Walec : public Klocki
{
int prom,wys;
public:
Walec( int mas,int pro ,int wy) : Klocki (pro*pro*3*wy, "Czerwony" , mas, "Walec")
{
prom = pro;
wys = wy;
}
};
class Ostroslup : public Klocki
{
int polepod,wys;
public:
Ostroslup ( int mas, int pole ,int wy) : Klocki (pole*wy, "Zielony" , mas, "Ostroslup")
{
polepod = pole;
wys = wy;
}
};
int main()
{
int liczba,a;
srand(time(0));
Klocki **tab;
Klocki *temp;
cout<<"Ile klockow ma zostac wygenerowanych: ";
cin>>liczba;
for (int i=0; i<liczba ; i++)
{
a = rand() % 3;
switch (a)
{
case 0:
tab[i] = new Prostopadloscian ( rand()%10,rand()%10,rand()%10,rand()%10);
break;
case 1:
tab[i] = new Walec( rand()%10, rand()%10, rand()%10);
break;
case 2:
tab[i] = new Ostroslup( rand()%10, rand()%10, rand()%10);
break;
}
}
for (int h =0 ; h< liczba ; h++)
{
for (int j = 0 ; j < liczba ; j++)
{
if(tab[j]->nazwa>tab[j+1]->nazwa)
{
temp=tab[j+1];
tab[j+1]=tab[j];
tab[j]=temp;
}
}
}
for(int k = 0 ; k<liczba ; k++)
{
tab[k]->wys();
}
system("PAUSE");
return 0;
}