falsche ausgabe mit for-schleife
-
#include <iostream> #include <fstream> using namespace std; int main() { int z = 1; int i = 0; int j = 0; ofstream File("ausgabe.txt"); for(i;i<10;++i); { for(j;j<100;++j); { File<<z<<"; "<<flush; ++z; } File<<z<<";"<<endl; ++z; } }Hi!!!!

obiger code funzt net!
.
is der totaler bockmist?
naja in die datei ausgabe.txt soll er eine tabelle von 1-1000 schreiben, in jeweils 100 zahlen pro reihe.
dummerweise gibt er immer 1; 2; und dann zeilenumbruch aus!
wie geht das, das er das richtig macht?
Hab ich richtig die for-schleife gewählt?
Kann man das so verschachteln?
soll ich lieber eine while schleife nehmen?
oder is der code bockmist und man muss das ganz anders machen?
Ich bedanke mich für alle antworten!!! :p
Bis dann
Elefunty
-
Hallo,
obiger code funzt net!
.keine Fehlerbeschreibung! Lies dir das durch: http://www.lugbz.org/documents/smart-questions_de.html
naja in die datei ausgabe.txt soll er eine tabelle von 1-1000 schreiben, in jeweils 100 zahlen pro reihe.
so?:
1; 2; 3; ... 100; 101; 102; ...Geht doch auch einfacher:
#include <iostream> #include <fstream> int main(int argc, char **argv) { std::ofstream ofs("ausgabe.txt"); if (!ofs) return 1; for (int i=0;i<9;++i) { for (int j=1;j<=i*100;++j) { ofs<<j<<';'; } std::cout<<std::endl; } ofs.close(); return 0; };EDIT: ofs.close() vorher vergessen
EDIT2: std:: bei ofs<<j<<';'; entferntMfG
GPC
-
for(i;i<10;++i)anstatt
for(i;i<10;++i);Man beachte das Semikolon. Mit Semikolon wird nur der Schleifenkopf ausgeführt, bis die Bedingung nicht mehr
trueist, und anschließend nur ein einziges mal der Anweisungsblock direkt darunter.Da wahr GPC wohl schneller.
[edit]
@GPC:std::ofs<<j<<';'; // Zeile 12std::entfernen.
[/edit]
-
proggaholic schrieb:
[edit]
@GPC:std::ofs<<j<<';'; // Zeile 12std:: entfernen
[/edit]oh, danke. Die std:: hab ich nachträglich eingefügt, als ich gemerkt habe, dass ich oben kein using namespace std; drinhatte, da muss mir wohl der Fehler unterlaufen sein.
MfG
GPC
-
int z = 1; ofstream File("ausgabe.txt"); for(int i=0;i<10;++i) { for(int j=0;j<100;++j) { File<<z++<<"; "; } File<<endl; }vorsichtig!!! in deiner Code immer nach for-Anweisung gibt es semikolon (';') "for(...);"
das ist nichts anderes als for (...){ }
-
Hat bereits GPC implizit und ich explizit gesagt...aber der Vergleich mit
for(...) { }(d.h. mit leeremfor-Anweisungsblock) ist besser als meine Erklärung.
-
GPC
GPC schrieb:
Zitat:
obiger code funzt net! .keine Fehlerbeschreibung! Lies dir das durch: http://www.lugbz.org/documents/smart-questions_de.html
wohl ne fehlerbeschreibung
ich schrieb:
dummerweise gibt er immer 1; 2; und dann zeilenumbruch aus!
einfacher finde ich deinen kot nich... noob.. für mich is das wirklich kot
Proggaholic
danke für das mit dem semi. ich dachte dasss man das immer ans end schreibtdamo
mit dem code funztz jez... thxan alle
natürlich auch ein thx.......Bis bald
Elefunty
-
Elefunty schrieb:
Proggaholic
danke für das mit dem semi. ich dachte dasss man das immer ans end schreibtJa, das schreibt man immer ans Ende einer kompletten Anweisung. Und diese Kontrollstrukturen (if, for, while etc.) ergeben erst mit dem anschließenden Befehl eine komplette Anweisung - deshalb gehört kein Semikolon dazwischen.
-
Elefunty schrieb:
einfacher finde ich deinen kot nich... noob.. für mich is das wirklich kot
http://de.wikipedia.org/wiki/Code vs. http://de.wikipedia.org/wiki/Kot
-
Um aus der Ausgabedatei wirklich eine Tabelle zu machen, sollte man vielleicht vor jeder Ausgabe die Spaltenbreite einstellen.
Dafür gibt es den folgenden Befehl:Ausgabe.width()Damit ist die Ausgabedatei viel übersichtlicher ... Das Ganze sieht dann so aus:
[cpp]#include<cstdlib> #include<iostream> #include<fstream> using namespace std; int main() { int z = 1; ofstream Ausgabe("C:/Dokumente und Einstellungen/All Users/Desktop/Tabelle.txt"); for(int i = 1; i <= 10; ++i) { for(int k = 1; k <= 100; ++k) { Ausgabe.width(5); Ausgabe << z << ";"; ++z; } Ausgabe << endl; } system("Pause"); } [/cpp]Grüße, Bobby - Karle
-
Oder alternativ mit Manipulatoren:
Ausgabe << setw(5) << z << ";";(dafür benötigst du noch ein "#include <iomanip>")