Torhe
Lt. Junior Grade
- Registriert
- Nov. 2006
- Beiträge
- 392
Hi,
als hausübung haben wir eine kleine übungsaufgabe zum thema flexible variblen und arrays. die übungsaufgabe ist, ein programm zu schreiben, welches immer nach "noch eine Zahl" fragt, und anschließen wenn die antwort "j" eingegeben wird, noch eine zahl inzufügt, bei "n" alle bisher eingegebnen zahlen ausgibt.
damit man das mit den flexiblen arrays übt, geht es darum dass immer nur ein "1 größeres" array neu erstellt wird und dann das alte array wird rüberkopiert. nach jedem rüberkopieren muss das alte array wieder gelöscht werden.
wenn ich die 2 "delete" auskommentiere funnktionieres ohne probleme. wenn ich es im quell code drinen haben, funktioniert gar nichts mehr bzw. das programm stürtzt ab.
ich hoffe ihr könnt mir helfen
als hausübung haben wir eine kleine übungsaufgabe zum thema flexible variblen und arrays. die übungsaufgabe ist, ein programm zu schreiben, welches immer nach "noch eine Zahl" fragt, und anschließen wenn die antwort "j" eingegeben wird, noch eine zahl inzufügt, bei "n" alle bisher eingegebnen zahlen ausgibt.
damit man das mit den flexiblen arrays übt, geht es darum dass immer nur ein "1 größeres" array neu erstellt wird und dann das alte array wird rüberkopiert. nach jedem rüberkopieren muss das alte array wieder gelöscht werden.
wenn ich die 2 "delete" auskommentiere funnktionieres ohne probleme. wenn ich es im quell code drinen haben, funktioniert gar nichts mehr bzw. das programm stürtzt ab.
ich hoffe ihr könnt mir helfen
Code:
//FlexArr_main.cpp
//Flexibles Array. wächst mit dem Bedarf mit
//Benutzer wird gefragt, ob er noch eine Zahl eingeben will
//mit Hilfe von 2 dynamischen Arrays werden alle Zahlen in EIN Array gespeichert
#include <iostream>
using namespace std;
int main ()
{
char weiter='j';
int Anzahl=1;
cout<<"noch eine Zahl? [j/n] ";
cin>>weiter;
int* pInt_alt=new int[1];
int* pInt_neu=new int[1];
delete[]pInt_alt;
delete[]pInt_neu;
while (weiter!='n')
{
pInt_alt=new int[Anzahl-1];
pInt_alt=pInt_neu;
//delete[]pInt_neu;
Anzahl++;
pInt_neu=new int[Anzahl];
for (int i=0;i<(Anzahl-1);i++)
{
pInt_neu[i]=pInt_alt[i];
}
cout<<Anzahl-1<<". Zahl: ";
cin>>pInt_neu[Anzahl-1];
//delete[]pInt_alt;
cout<<"noch eine Zahl? [j/n] ";
cin>>weiter;
}
cout<<endl<<"Sie haben flogende Zahlen eingegeben: "<<endl;
for (int i=0;i<(Anzahl-1);i++)
{
cout<<i+1<<". Zahl: "<<pInt_neu[i+1]<<endl;
}
return 0;
}