Anfänger Frage zu meinem code
-
Hallo zusammen,
ich habe nach dem studieren in meinem Buch heute mein erstes Programm geschrieben. Es hat sogar auf anhieb funktioniert und ich bin fast zufrieden.Hier mein Code:
for (int i = 1; i <= 100; i++) { if (i < 10) { cout <<" "<< i<<" "; } else cout << i << " "; if (i % 10 == 0) { cout << endl; } } cout << endl;
Die Leerzeichen zwischen den Zahlen sind statisch angegeben. Das möchte ich noch dynamisch hinbekommen.
Was mich nun interessiert, kann man diesen Codeschnippel optimieren? Wie würde ein Profi dies machen?Für jeden tip wie immer sehr dankbar
Speer
-
Mit
http://www.cplusplus.com/reference/iomanip/setw/
oder
http://www.cplusplus.com/reference/ios/ios_base/width/
und dann (je nach Wunsch):
http://www.cplusplus.com/reference/ios/internal/
http://www.cplusplus.com/reference/ios/left/
http://www.cplusplus.com/reference/ios/right/
(Defaultwert ist right, wenn man nichts angibt)
-
Am einfachsten wohl etwa so:
#include <iostream> #include <iomanip> int main() { for(int i = 0; i < 100; i += 10) { for(int j = 1; j <= 10; ++j) { std::cout << std::setw(5) << i + j; } std::cout << '\n'; } }
Jetzt Quizfrage: Wenn du nicht bis 100, sondern bis zu einer beliebigen Zahl gehen willst (die etwa der Benutzer eingibt), wie würdest du das da einbauen?
-
Also die Technik mit dem Zeilenumbruch nach Modulorechnung finde ich deutlich lesbarer als die Technik mit den verschachtelten Schleifen. Außerdem funktioniert die Schleife des TE auch mit Endwerten, die nicht durch 10 teilbar sind.
-
Hallo Seldon,
bin mit meinem Buch leider noch nicht bei der Texteingabe. Das kommt im nächsten Kapitel. Im Vorwort zu diesem Kapitel stehen die Befehle kurz beschrieben und ich würde cin verwenden.Speer
-
speer schrieb:
bin mit meinem Buch leider noch nicht bei der Texteingabe. Das kommt im nächsten Kapitel.
Es geht auch nicht um Texteingabe, sondern um Formatierung der Ausgabe.
-
Hallo,
das weiß ich nicht. Ich kenne bisher nur eine Handvoll Befehle und bin noch am lernen. Da ich auch berufstätig bin und C++ nur für mich beibringe wird es entsprechend lang dauern bis alles sitzt. Diese geschachtelte for Schleife kommt später noch dran. Denke da war ich mit meinem Posting etwas vorschnell bzgl. Optimierung.