C++ fertig kompilirtes programm funktioniert nicht
-
Wirf die ganzen Variablendeklarationen raus und initialisiere sie sofort. Dann meckert der Compiler schon, wenn du irgendwo Variablen benutzt, die noch nicht definiert sind.
Worauf cookie451 hinweist ist (gekürzt):int main() { int A, B, C; A = 4; B = C / A; C = 1; }Zum Zeitpunkt wo B ein Wert zugewiesen wird hat C noch einen zufälligen Wert und deswegen steht danach Käse in B. Wenn du das allerdings so umbaust
int main() { int A = 4; int B = C / A; int C = 1; }meckert dein Compiler, weil er
Czum Zeitpunkt der Division nicht kennt. Und du solltestdoubleals Datentyp benutzen, damit du dich um die Probleme der Integerdivision nicht kümmern musst ( 1.0/4.0 = 0.25, statt 1/4 = 0).int main() { double A = 4; double C = 1; double B = C / A; }
-
berniebutt schrieb:
Zum Programmieren gehört zur Entwicklung (und Erweiterung) immer auch eine Fehlerstrategie.
Hierfür gibt es z.B. die Möglichkeiten:1. Debuggen
2. Kontrollausgaben
3. try-catch-BlöckeLasse die Entwicklungsumgebung oder dein Programm nach Fehlern suchen und nicht uns.
Ok ja das habe ich ja gemacht aber die fehlermeldung kommt von windows weil das programm abstürzt http://abload.de/img/hweteu89.png
-
berniebutt schrieb:
1. Debuggen
2. Kontrollausgaben
3. try-catch-BlöckeDie beste Möglichkeit hast du gar nicht genannt, dabei ist es die, die C++ so stark macht: So programmieren, dass Logikfehler zu Compilerfehlern (oder Warnungen) werden. Das fällt dem C++-Profi wahrscheinlich gar nicht mehr auf, dass er das so macht. Aber durch das strenge Typsystem lassen sich sehr viele Fehler schon im Vorfeld ausschließen, da dann der Compiler meckert. Man denke nur an die vielen möglichen Fehler in C alleine schon bei printf/scanf, die in C++ gar nicht mehr möglich sind. Und das ist nur ein winzig kleiner Teilbereich. Man muss dafür ja auch gar nicht viel tun, deshalb fällt es kaum auf. Man muss bloß die Sprache so benutzen, wie sie gedacht ist, und nicht versuchen, C oder Java in C++ zu programmieren.
Hier liegt letztendlich auch ein Fehler vor, den der Compiler entdecken konnte, die Warnungen wurden bloß nicht beachtet.
-
Idee: fuer so eine Aufgabe ein vernuenftiges Programm benutzen (z.B. octave, Matlab etc.). Dann musst du nicht mal kompilieren.
-
Hyde++ schrieb:
Dann musst du nicht mal kompilieren.
Und du hast die Fehler wieder zur Laufzeit. Toller Trade-Off.
(Generell stimme ich zwar zu, dass für derartige Prototypen Matlab geeigneter sein kann, aber dieses Argument ist fragwürdig)
-
Hyde++ schrieb:
Idee: fuer so eine Aufgabe ein vernuenftiges Programm benutzen (z.B. octave, Matlab etc.). Dann musst du nicht mal kompilieren.
Ich habe die rechnung berteits in excel brechnet aber ich habe eine hausaufgabe es auch in c++ zu berechnen.....
-
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?
-
Furble Wurble schrieb:
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?Ich habe sie aktiviert aber es werden keine angezeigt
-
Thomas123 schrieb:
Furble Wurble schrieb:
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?Ich habe sie aktiviert aber es werden keine angezeigt
Das ist schlecht.

Evtl. kannst Du das Level noch anpassen, so dass der Compiler noch pingeliger ist. Schau nochmal in die Doku.Ich erhalte z.B. für Deinen Code:
make -k g++ -std=c++11 -Wall -pedantic -g -D_GLIBCXX_CONCEPT_CHECKS -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC test.cc -o test test.cc: In function ‘int main(int, char**)’: test.cc:63:14: warning: left operand of comma operator has no effect [-Wunused-value] test.cc:37:9: warning: ‘Uq’ may be used uninitialized in this function [-Wuninitialized] test.cc:44:10: warning: ‘U78’ may be used uninitialized in this function [-Wuninitialized] test.cc:46:18: warning: ‘U1234’ may be used uninitialized in this function [-Wuninitialized] test.cc:47:9: warning: ‘U5’ may be used uninitialized in this function [-Wuninitialized] test.cc:48:9: warning: ‘U1’ may be used uninitialized in this function [-Wuninitialized] test.cc:68:9: warning: ‘I3’ may be used uninitialized in this function [-Wuninitialized] test.cc:69:9: warning: ‘I4’ may be used uninitialized in this function [-Wuninitialized] test.cc:72:9: warning: ‘U7’ may be used uninitialized in this function [-Wuninitialized] test.cc:73:9: warning: ‘U8’ may be used uninitialized in this function [-Wuninitialized] test.cc:74:9: warning: ‘U9’ may be used uninitialized in this function [-Wuninitialized] Compilation finished at Wed Apr 9 18:51:15
-
Furble Wurble schrieb:
Thomas123 schrieb:
Furble Wurble schrieb:
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?Ich habe sie aktiviert aber es werden keine angezeigt
Das ist schlecht.

Evtl. kannst Du das Level noch anpassen, so dass der Compiler noch pingeliger ist. Schau nochmal in die Doku.Ich erhalte z.B. für Deinen Code:
make -k g++ -std=c++11 -Wall -pedantic -g -D_GLIBCXX_CONCEPT_CHECKS -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC test.cc -o test test.cc: In function ‘int main(int, char**)’: test.cc:63:14: warning: left operand of comma operator has no effect [-Wunused-value] test.cc:37:9: warning: ‘Uq’ may be used uninitialized in this function [-Wuninitialized] test.cc:44:10: warning: ‘U78’ may be used uninitialized in this function [-Wuninitialized] test.cc:46:18: warning: ‘U1234’ may be used uninitialized in this function [-Wuninitialized] test.cc:47:9: warning: ‘U5’ may be used uninitialized in this function [-Wuninitialized] test.cc:48:9: warning: ‘U1’ may be used uninitialized in this function [-Wuninitialized] test.cc:68:9: warning: ‘I3’ may be used uninitialized in this function [-Wuninitialized] test.cc:69:9: warning: ‘I4’ may be used uninitialized in this function [-Wuninitialized] test.cc:72:9: warning: ‘U7’ may be used uninitialized in this function [-Wuninitialized] test.cc:73:9: warning: ‘U8’ may be used uninitialized in this function [-Wuninitialized] test.cc:74:9: warning: ‘U9’ may be used uninitialized in this function [-Wuninitialized] Compilation finished at Wed Apr 9 18:51:15ok werde ich machen
-
Thomas123 schrieb:
Furble Wurble schrieb:
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?Ich habe sie aktiviert aber es werden keine angezeigt
So schlecht kann VS doch wohl kaum sein. Kann das mal jemand pruefen?
Hier mal die Ausgabe des GCC mit allen gaengigen Warnungen aktiviert (mit dem Originalcode aus dem Eingangsbeitrag):
test.cc: In function ‘int main(int, char**)’: test.cc:63:14: warning: left operand of comma operator has no effect [-Wunused-value] Uq=12+(SLN*0,1); ^ test.cc: At global scope: test.cc:7:5: warning: unused parameter ‘argc’ [-Wunused-parameter] int main(int argc, char *argv[]) ^ test.cc:7:5: warning: unused parameter ‘argv’ [-Wunused-parameter] test.cc: In function ‘int main(int, char**)’: test.cc:37:9: warning: ‘Uq’ may be used uninitialized in this function [-Wmaybe-uninitialized] Ig=Uq/Rg; ^ test.cc:44:10: warning: ‘U78’ may be used uninitialized in this function [-Wmaybe-uninitialized] I7=U78/R7; ^ test.cc:46:18: warning: ‘U1234’ may be used uninitialized in this function [-Wmaybe-uninitialized] I1234=U1234/R1234; ^ test.cc:47:9: warning: ‘U5’ may be used uninitialized in this function [-Wmaybe-uninitialized] I5=U5/R5; ^ test.cc:48:9: warning: ‘U1’ may be used uninitialized in this function [-Wmaybe-uninitialized] I1=U1/R1; ^ test.cc:68:9: warning: ‘I3’ may be used uninitialized in this function [-Wmaybe-uninitialized] P3=I3*U3; ^ test.cc:69:9: warning: ‘I4’ may be used uninitialized in this function [-Wmaybe-uninitialized] P4=I4*U4; ^ test.cc:72:9: warning: ‘U7’ may be used uninitialized in this function [-Wmaybe-uninitialized] P7=I7*U7; ^ test.cc:73:9: warning: ‘U8’ may be used uninitialized in this function [-Wmaybe-uninitialized] P8=I8*U8; ^ test.cc:74:9: warning: ‘U9’ may be used uninitialized in this function [-Wmaybe-uninitialized] P9=I9*U9; ^Bis auf die beiden unused-parameter Warnungen darfst du jede dieser Meldungen als handfesten Fehler im Programm betrachten. Es wird bloss nur gewarnt (anstatt abzubrechen), weil der Code technisch gesehen korrektes C++ ist. Es macht nur keinen Sinn, was der Compiler auch erkennt.
(Die beiden unused-parameters darfst du als "echte" Warnungen (im Gegensatz zu Fehlern) ansehen, dass du beim Schreiben des Codes nicht wirklich nachgedacht hast, was der Code genau macht.)edit: Irgendwie bin ich in den letzten Tagen immer viel zu langsam. Ist meine Leitung zu lang und hat eine Latenz von mehreren Minuten?

-
SeppJ schrieb:
Thomas123 schrieb:
Furble Wurble schrieb:
Hast Du jetzt die Warnungen in Deinem Compiler aktiviert?
Und in der Folge die Warnungen beachtet?Ich habe sie aktiviert aber es werden keine angezeigt
So schlecht kann VS doch wohl kaum sein. Kann das mal jemand pruefen?
Hier mal die Ausgabe des GCC mit allen gaengigen Warnungen aktiviert (mit dem Originalcode aus dem Eingangsbeitrag):
test.cc: In function ‘int main(int, char**)’: test.cc:63:14: warning: left operand of comma operator has no effect [-Wunused-value] Uq=12+(SLN*0,1); ^ test.cc: At global scope: test.cc:7:5: warning: unused parameter ‘argc’ [-Wunused-parameter] int main(int argc, char *argv[]) ^ test.cc:7:5: warning: unused parameter ‘argv’ [-Wunused-parameter] test.cc: In function ‘int main(int, char**)’: test.cc:37:9: warning: ‘Uq’ may be used uninitialized in this function [-Wmaybe-uninitialized] Ig=Uq/Rg; ^ test.cc:44:10: warning: ‘U78’ may be used uninitialized in this function [-Wmaybe-uninitialized] I7=U78/R7; ^ test.cc:46:18: warning: ‘U1234’ may be used uninitialized in this function [-Wmaybe-uninitialized] I1234=U1234/R1234; ^ test.cc:47:9: warning: ‘U5’ may be used uninitialized in this function [-Wmaybe-uninitialized] I5=U5/R5; ^ test.cc:48:9: warning: ‘U1’ may be used uninitialized in this function [-Wmaybe-uninitialized] I1=U1/R1; ^ test.cc:68:9: warning: ‘I3’ may be used uninitialized in this function [-Wmaybe-uninitialized] P3=I3*U3; ^ test.cc:69:9: warning: ‘I4’ may be used uninitialized in this function [-Wmaybe-uninitialized] P4=I4*U4; ^ test.cc:72:9: warning: ‘U7’ may be used uninitialized in this function [-Wmaybe-uninitialized] P7=I7*U7; ^ test.cc:73:9: warning: ‘U8’ may be used uninitialized in this function [-Wmaybe-uninitialized] P8=I8*U8; ^ test.cc:74:9: warning: ‘U9’ may be used uninitialized in this function [-Wmaybe-uninitialized] P9=I9*U9; ^Bis auf die beiden unused-parameter Warnungen darfst du jede dieser Meldungen als handfesten Fehler im Programm betrachten. Es wird bloss nur gewarnt (anstatt abzubrechen), weil der Code technisch gesehen korrektes C++ ist. Es macht nur keinen Sinn, was der Compiler auch erkennt.
(Die beiden unused-parameters darfst du als "echte" Warnungen (im Gegensatz zu Fehlern) ansehen, dass du beim Schreiben des Codes nicht wirklich nachgedacht hast, was der Code genau macht.)edit: Irgendwie bin ich in den letzten Tagen immer viel zu langsam. Ist meine Leitung zu lang und hat eine Latenz von mehreren Minuten?

Ok das habe ich jetzt gemacht aber es geht immer noch nicht. Es kommt immer noch diese Fehlermeldung
-
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )
-
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
-
Thomas123 schrieb:
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
Well, there's your problem.
-
Nathan schrieb:
Thomas123 schrieb:
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
Well, there's your problem.
Und was ist das??????
-
Thomas123 schrieb:
Nathan schrieb:
Thomas123 schrieb:
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
Well, there's your problem.
Und was ist das??????
Deine Probleme:
1: Deine '?' ist anscheinend kaputt.
2: Auf eine Gegenfrage nach genauer Fehlerbeschreibung antwortest du mit "Ich benutze Dev c++". Ist das deiner Meinung nach eine genaue Fehlerbeschreibung?
3: Zyniker wie Nathan erkennen, dass "Ich benutze Dev c++" tatsaechlich eine Art von Fehlerbeschreibung ist:Uralter Computerwitz schrieb:
Anruf bei der Hotline...
Kunde: "Ich benutze Windows..."
Hotline: "Ja..."
Kunde: "...mein Computer funktioniert nicht richtig."
Hotline: "Das sagten Sie bereits..."Siehe dazu: http://www.c-plusplus.net/forum/237002
-
SeppJ schrieb:
Thomas123 schrieb:
Nathan schrieb:
Thomas123 schrieb:
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
Well, there's your problem.
Und was ist das??????
Deine Probleme:
1: Deine '?' ist anscheinend kaputt.
2: Auf eine Gegenfrage nach genauer Fehlerbeschreibung antwortest du mit "Ich benutze Dev c++". Ist das deiner Meinung nach eine genaue Fehlerbeschreibung?
3: Zyniker wie Nathan erkennen, dass "Ich benutze Dev c++" tatsaechlich eine Art von Fehlerbeschreibung ist:Uralter Computerwitz schrieb:
Anruf bei der Hotline...
Kunde: "Ich benutze Windows..."
Hotline: "Ja..."
Kunde: "...mein Computer funktioniert nicht richtig."
Hotline: "Das sagten Sie bereits..."Ich habe an anfang des posts die felerbeschreibung gepostet villeicht hast du sie überlesen!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
Thomas123 schrieb:
SeppJ schrieb:
Thomas123 schrieb:
Nathan schrieb:
[...]
Und was ist das??????
Deine Probleme:
1: Deine '?' ist anscheinend kaputt.
2: Auf eine Gegenfrage nach genauer Fehlerbeschreibung antwortest du mit "Ich benutze Dev c++". Ist das deiner Meinung nach eine genaue Fehlerbeschreibung?
3: Zyniker wie Nathan erkennen, dass "Ich benutze Dev c++" tatsaechlich eine Art von Fehlerbeschreibung ist:Ich habe an anfang des posts die felerbeschreibung gepostet villeicht hast du sie überlesen!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Deine !-Taste hängt übrigens auch.
Ja, und wir haben dir gesagt woran es liegt. Du nutzt nicht initialisierte Variablen.Edit: @Nexus: Aber selber. Trotzdem: Bitte sehr.
-
Nathan schrieb:
Thomas123 schrieb:
SeppJ schrieb:
Thomas123 schrieb:
Nathan schrieb:
Thomas123 schrieb:
SeppJ schrieb:
Hast du denn auch die ersten beiden Antworten in diesem Thread beachtet? Welchen Code benutzt du derzeit? Wir koennen nicht hellsehen. Es kann schliesslich gut sein, dass du diese Fehler falsch behoben hast. Zu einer Frage nach einem Fehler hier im Forum gehoert immer folgendes:
1. Minimaler(!) Beispielcode, der den Fehler reproduziert. (siehe: http://www.c-plusplus.net/forum/304133 )
2. Genaue(!) Beschreibung, was du tust, was du erwartest, was passiert. (siehe: http://www.c-plusplus.net/forum/200753 und http://www.tty1.net/smart-questions_de.html )Ich benutze Dev c++
Well, there's your problem.
Und was ist das??????
Deine Probleme:
1: Deine '?' ist anscheinend kaputt.
2: Auf eine Gegenfrage nach genauer Fehlerbeschreibung antwortest du mit "Ich benutze Dev c++". Ist das deiner Meinung nach eine genaue Fehlerbeschreibung?
3: Zyniker wie Nathan erkennen, dass "Ich benutze Dev c++" tatsaechlich eine Art von Fehlerbeschreibung ist:Uralter Computerwitz schrieb:
Anruf bei der Hotline...
Kunde: "Ich benutze Windows..."
Hotline: "Ja..."
Kunde: "...mein Computer funktioniert nicht richtig."
Hotline: "Das sagten Sie bereits..."Ich habe an anfang des posts die felerbeschreibung gepostet villeicht hast du sie überlesen!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Deine !-Taste hängt übrigens auch.
Ja, und wir haben dir gesagt woran es liegt. Du nutzt nicht initialisierte Variablen.Und ständige Fullquotes machen den Thread besonders übersichtlich.
Sorry wegen Offtopic, aber das solltet ihr euch echt abgewöhnen.