Programm hängt sich auf
-
Hi, könnte mir kurz jemand helfen den fehler zu finden, warum das prog abstürzt?
lg#include <iostream> using namespace std; class Liste { public: int *werte[0]; int max; int temp; int counter; Liste() { werte[0]=0; max=0; temp=0; counter=0; } void operator>>(int* a) { for(int i=0;werte[i];i++) { *werte = new int[1]; *werte[counter] = a[i]; ++counter; } } void operator<<(int a) { for(int j=0;*werte[j];j++) { max=*werte[0]; for(int i=0;*werte[i];i++) { if(*werte[i]<max) { temp=*werte[i-1]; werte[i-1]=werte[i]; *werte[i]=temp; } else max=*werte[i]; } } cout << "Sortierte Ausgabe: " << endl; for(int i=0;*werte[i];i++) { cout << "Eintrag " << i << ": " << werte[i] << endl; } } }; int main() { Liste l; int a=1; int list[4]; int *test = &list[0]; for(int i=0;i<4;i++) { cin >> list[i]; } l>>test; l<<a; return 0; }
-
Das kannst du komplett wegwerfen.
-
hilfreichstes kommentar 2014
-
Hat aber was
Bei
int *werte[0];
fängt das Grauen schon einmal an. Was soll das bezwecken? Warum Zeiger und Array? Aber viel wichtiger: Warum Null? Ich tippe darauf, du glaubst, dass dieses Array anfänglich die Grösse 0 hat und sich dann magisch vergrössert. Das ist aber nicht so. C++ kommt eigentlich recht gut ohne Magie aus.
Der ganze restliche Code baut auf diesem Gefrickel auf und ist voller ähnlicher Fehler. Wenn du eine verkettete Liste bauen willst, hast du kein einziges Array -- nirgends. Wenn du ein dynamisches Array bauen willst, dann nimm keine einzelnen allokierten Objekte, sondern dynamische
new[]
-Arrays.Und überlade Operatoren erst, wenn der Rest funktioniert. Vor allem: Lies dich gründlich in Arrays, Zeiger und dynamische Speicherverwaltung ein (am besten in dieser Reihenfolge). Es hat keinen Sinn, zu experimentieren, wenn man die Grundlagen nicht versteht...
-
Nexus schrieb:
Hat aber was
Ich glaub inzwischen, dass das ein Witz sein soll. Ist zwar nicht witzig, aber auf keinen Fall ernst gemeint.
-
Bashar schrieb:
Nexus schrieb:
Hat aber was
Ich glaub inzwischen, dass das ein Witz sein soll. Ist zwar nicht witzig, aber auf keinen Fall ernst gemeint.
Das muß ein Witzbold gewesen sein. Im Threadtitel hängt sich das Programm auf, im Threadtext stürzt es ab.
mfg MArtin
-
Raven1991 schrieb:
hilfreichstes kommentar 2014
Nur falls Du es doch ernst gemeint haben solltest. Lerne den Unterschied zw. Array und Zeigern und wie sie benutzt werden. Ansonsten über Dein Progamm zu sprechen ist völlig witzlos, da einfach Basics fehlen. Da hat Bashar schon vollkommen recht.
Edit: Ich habe Nexus' kommentar nicht gelesen. Ich schliesse mich komplett seiner Meinung an.
-
Bashar schrieb:
Ich glaub inzwischen, dass das ein Witz sein soll. Ist zwar nicht witzig, aber auf keinen Fall ernst gemeint.
Gerade mit Zeigern habe ich echt schon alles gesehen. Und dann nicht nur in Foren... Man sollte meinen, du nach 13 Jahren hier auch
Für einen Trollversuch ist der Code dann auch etwas aufwändig. Aber mal schauen
-
Nexus schrieb:
Bashar schrieb:
Ich glaub inzwischen, dass das ein Witz sein soll. Ist zwar nicht witzig, aber auf keinen Fall ernst gemeint.
Gerade mit Zeigern habe ich echt schon alles gesehen. Und dann nicht nur in Foren... Man sollte meinen, du nach 13 Jahren hier auch
Das ist einfach der Gesamteindruck. Was sollen denn beispielsweise diese überladenen Operatoren machen?
l >> test
soll wohl das Array test in die Liste schreiben, währendl << a
a ignoriert, die Liste sortiert und dann ausgibt ... ergibt das irgendwie Sinn?
-
Bashar schrieb:
Nexus schrieb:
Bashar schrieb:
Ich glaub inzwischen, dass das ein Witz sein soll. Ist zwar nicht witzig, aber auf keinen Fall ernst gemeint.
Gerade mit Zeigern habe ich echt schon alles gesehen. Und dann nicht nur in Foren... Man sollte meinen, du nach 13 Jahren hier auch
Das ist einfach der Gesamteindruck. Was sollen denn beispielsweise diese überladenen Operatoren machen?
l >> test
soll wohl das Array test in die Liste schreiben, währendl << a
a ignoriert, die Liste sortiert und dann ausgibt ... ergibt das irgendwie Sinn?Das Problem sind immer die Leute, die denken, daß sie was verstanden haben aber trotzdem keine oder wenig Ahnung haben.
mfg Martin