Programm
-
FreakY<3Cpp schrieb:
Mach aus dem double ein string.
Dann meinst du, du hast 100 Artikelnummer und dazu passende Lagernummer, da würd ich wohl map empfehlen.
Und dann noch etwas ganz schlaggebendes
ES GIBT KEINE IF-SCHLEIFEN!!!doch gibt es
und zwar werden solche konstruktionen if schleifen genannt:int main() { punkt: if ( 0 == 0 ) goto punkt; }das prinzip sollte klar sein, ich weiss nicht obs syntaktisch richtig ist, hab goto nie gelernt (wieso auch xD)
-
Skym0sh0 schrieb:
doch gibt es
und zwar werden solche konstruktionen if schleifen genannt:int main() { punkt: if ( 0 == 0 ) goto punkt; }Das hast du dir gerade ausgedacht, oder?
-
Skym0sh0 schrieb:
und zwar werden solche konstruktionen if schleifen genannt:
Gib mal 'ne Quelle. :p
-
Skym0sh0 schrieb:
doch gibt es
und zwar werden solche konstruktionen if schleifen genannt:int main() { punkt: if ( 0 == 0 ) goto punkt; }Das ist korrekt.
-
Hihi.
int main() { // switch-schleife label: switch(false) { default: goto label; } // hallo-schleife label: "hallo"; goto label; // baadf00d-schleife label: 0xbaadf00d; goto label; }
-
Nukularfüsiker schrieb:
Hihi.
int main() { // switch-schleife label: switch(false) { default: goto label; } // hallo-schleife label: "hallo"; goto label; // baadf00d-schleife label: 0xbaadf00d; goto label; }Denen bin ich so noch nicht begegnet, aber die "if-Schleifen" habe ich schon oft gesehen. Aber ich nenne sie umständlich "if-goto-Schleifen", unter anderem damit ich nicht mit oben genannter Webseite kollidiere.
-
volkard schrieb:
Aber ich nenne sie umständlich "if-goto-Schleifen"
Ist doch fein, da kommt wenigstens das Schleifenkonstrukt drin vor.
Ansonsten ist mir noch die else-Schleife eingefallen:
label: if(false); else goto label;
-
Nukularfüsiker schrieb:
Ansonsten ist mir noch die else-Schleife eingefallen:
label: if(false); else goto label;Das erste
;gehört da nicht hin.
EDIT: Natürlich gehört es da doch hin.Zusammengefasst: Es gibt keine
if-Schleifen, weil man alles zwischenlabel:undgoto label;tun kann.
-
TyRoXx schrieb:
Zusammengefasst: Es gibt keine
if-Schleifen, weil man alles zwischenlabel:undgoto label;tun kann.Manche Schleifen haben mehr oder weniger gebräuchliche Namen, die Zeitschleife (eher DOS), die Idiotenschleife (eher 64-er), die Menuschleife (eher DOS), ... und auch eben die If-Schleife (eher C/Basic).
-
Gibt es auch die Exception-Schleife? Also sowas wie das hier?
label:try{throw 0;}catch(int i){goto label;}@TyRoXx: Das Semikolon bei der "else-Schleife" ist richtig. Bei Pascal wäre es falsch, nicht aber in C/C++.
-
_matze schrieb:
Skym0sh0 schrieb:
und zwar werden solche konstruktionen if schleifen genannt:
Gib mal 'ne Quelle. :p
siehe volkard weiter unten xD
-
volkard schrieb:
Manche Schleifen haben mehr oder weniger gebräuchliche Namen, die Zeitschleife (eher DOS), die Idiotenschleife (eher 64-er), die Menuschleife (eher DOS), ... und auch eben die If-Schleife (eher C/Basic).
Aber warum etwas völlig Sinnfreies benennen? Ist das hier etwa eine Kommentarschleife:
label: /*hier gehts ab*/ goto label;Was hat man denn davon, einen konstanten Ausdruck wie
0 == 0als Bedingung für einen Sprung zu nehmen? Oder meinst du richtige Bedingungen?int again = 1; loop: //.. again = 0; //.. if (again) goto loop;Warum dann nicht einfach so:
int again = 1; do { //... again = 0; //oder break; //... } while (again);
-
Ich ging davon aus, daß er richtige Bedingungen meint.
-
hi Leute!
Habe das gleiche programm wie das vorhinbeschriebene.Ich habe das problem wenn ich es über MS Visual C++ ausführe klappt es super.Ohne Fehler!! Wenn ich die Exe im Debug ordner ausführe, passiert garnix. es öffnet sich lediglich der kleine schwarze bildschirm. Der cursor blinkt, man kann aber nichts eingeben geschweige den überhaupt irgendwas machen.
Was is da los?
-
Hallo,
Schau mal im Taskmanager nach, wie hoch die CPU- Auslastung ist. Sollte diese hoch sein, hängt das Programm eventuell in einer Endlosschleife fest. Du kannst ja vor jedem kritischen Codeabschnitt (schleifen, etc.) eine Nummer ausgeben lassen:
cout << "1" << endl; while(!dat_ein.eof()){/*...*/} cout << "2" << endl;Dann siehst du, wo der Fehler verursacht wird.
Außerdem habe ich auch in dem Beispielquelltext auf Fehlerbehandlung verzichtet. Du solltest also auf jeden Fall sicherstellen, dass das Programm auch die Datei "Datei.txt" findet.
Also nach dem Öffnen der Datei sowas schreiben:if(!dat_ein){cout << "Datei konnte nicht geöffnet werden." << endl;}Und achte darauf, dass die Datei nicht etwa Datei.txt.txt heißt, was vorkommen kann, wenn du unter Ordneroptionen die Option Dateiendungen ausblenden aktiviert hast.
MfG, Jochen
-
die datei.txt wird meines erachtens ohne probleme eingelesen. Wenn das nicht der fall der wäre, dann würde ja schon beim ausführvorgang im visual ein fehler zu erkennen sein oder? Habe die Datei im Projektordner stehen. Soweit richtig???
Das komische ist. Als ich das ganze gestern ausprobiert habe, meine ich es hat funktioniert. Bin mir jedoch nichtmehr sicher.......
-
elvis911 schrieb:
die datei.txt wird meines erachtens ohne probleme eingelesen. Wenn das nicht der fall der wäre, dann würde ja schon beim ausführvorgang im visual ein fehler zu erkennen sein oder?
Trotzdem kann es nicht schaden, das auch zu überprüfen, wie von Jochen S. vorgeschlagen wurde.
Vielleicht hat es ja auch mit dem Ausführungsverzeichnis zu tun. Hast du mal probiert, deine Textdatei mit 'nem absoluten Pfad ("C:\...") zu öffnen?
-
Ich habs glaub ich herausgefuden. Du musst die Anhangdatei beim ausführen der .exe auch im Debugordner speichern. Denn wenn due die .exe ausführst dann sucht er ja nur nach "datei.exe". Also sprich im gleichen ordner wie die .exe.
Hört sich auch iregndwo logisch an. Bitte korrigiert micht wenns nicht stimmt.Dennoch frage ich mich, wie ich einen Pfad angebe, der auserhalb diese Ordners liegt.
Habe zb. meine Datei einfach auf C: gelegt. Da müsste ich doch folgenden Pfad bekommen? ("C:\\datei.txt",ios_base::in)
Sobald ich den angebe funktioniert nichts mehr.Gruss
-
Der Dateipfad im Program ist immer relativ zum working directory (Arbeitsverzeichnis). Wenn man das Programm aus Visual Studio heraus startet, so ist das Working-Directory das Projektverzeichnis. Startet man das Programm jedoch aus dem Explorer, so ist das Verzeichnis in dem sich das Program befindet das Working-Directory.
Außerdemm muss man natürlich immer die Zugriffsrechte beachten.
-
Ich sage jetzt ich möchte meine datei (abweichend von dem projektornder) die auf folgendem Pfad liegt einlesen
C:\Dokumente und Einstellungen\Kuse\Desktop\datei.txtwie schreibe ich diesen Pfad richtig in mein programm, damit er mir auch die datei wirklich an dieser stelle herholt???
Meine idee liegt darin, dass ich mein programm auf mehreren pcs ausführen möchte, aber nur eine Bezugsdatei vorhanden ist.die zb. auf einem anderen netzlaufwerk liegt.
das würde mir den vorteil bieten, dass nur ich die Datei abändern kann und das nur EINMAL.