Witam problem jest nastepujacy, po nacisnieciu "b" pamiec sie czysci z tablicy, ale gdy wcisnę ten klawisz na początku programu, tzn na jeszcze nie stworzonej tablicy to program się wywala. Próbowałem wszelakie if'y, else'y i nic. Nie mam bladego pojęcia jak to zrobić tak, żeby usuwało tablice gdy jest stworzona ale nie wywalało programu gdy jest niestworzona.
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
void wpisywanie_elementow(int *tab,int n);
void losowanie_elementow(int *tab,int n);
void posortowanie(int *tab,int n);
void odwrotnie_posortowanie(int *tab, int n);
int main()
{
char wybor=getchar();
int n;
int *tab=NULL;
do
{
cout << "1. Tworzenie dynamicznej tablicy" << endl;
cout << "2. Podawanie recznie elementow tablicy"<< endl;
cout << "3. Generowanie danych losowych"<< endl;
cout << "4. Generowanie danych posortowanych"<< endl;
cout << "5. Generowanie danych odwrotnie posortowanych"<< endl;
cout << "6. Sortowanie babelkowe "<< endl;
cout << "7. Sortowanie babelkowe z flaga"<< endl;
cout << "8. Selectionsort"<< endl;
cout << "9. Sortowanie przez wstawianie"<< endl;
cout << "a. wypisanie tablicy"<< endl;
cout << "b. czyszczenie tablicy"<< endl;
cout << "0. Koniec "<< endl;
cin >> wybor;
system("cls");
switch( wybor )
{
case '1':
cout << "Podaj ile elementow ma miec tablica" << endl;
cin >> n;
tab = new int[n];
break;
case '2':
wpisywanie_elementow(tab, n);
break;
case '3':
losowanie_elementow(tab,n);
break;
case '4':
posortowanie(tab,n);
break;
case '5':
odwrotnie_posortowanie(tab,n);
break;
case 'a':
for(int i=1; i<=n; i++)
{
cout << tab[i] << endl;
}
break;
case 'b':
delete [] tab;
break;
}
}while(wybor!='0');
return 0;
}
if (tab == NULL)
alboif (!tab)