Frage zur Optimierung von Programm
-
Ich sollte ein Programm schreiben das die ASCII-Tabelle mit den Werten von 30 bis 129 ausgibt und bei denen die Zeichen 30-32 und 127-129 als Leerzeichen dargestellt werden. Außerdem sollte ein Rahmen mit den Zahlen und dieser gestrichelten Linie drumherum.
Hat zwar ein wenig gedauert aber hier ist es:#include <iostream> using namespace std; int main() { char zeichen; int zeichenwert1, zeichenwert2, zeichenwert3; cout << " 0 1 2 3 4 5 6 7 8 9" << endl; cout << " +--------------------" << endl; for (zeichenwert1 = 3; zeichenwert1 <= 12; zeichenwert1++) { if (zeichenwert1 <= 9) { cout << " " << zeichenwert1 << "| "; } else { cout << zeichenwert1 << "| "; } for (zeichenwert2 = 0 ; zeichenwert2 <=9 ; zeichenwert2++) { zeichenwert3 = zeichenwert2 + zeichenwert1 * 10; if (zeichenwert3 < 33 || zeichenwert3 >= 127) { cout << " "; } else { zeichen = zeichenwert3; cout << zeichen << " "; } } cout << endl; } system("pause"); return 0; }Da ich noch ziemlich am Anfang bin, was programmieren angeht, wollte ich mal fragen ob es vielleicht kürzere/einfachere Wege gibt als meinen. Vielleicht wo man Dinge einsparen könnte usw... zu Lernzwecken halt.

Herzlichen Dank für ihre Aufmerksamkeit ...

-
zeichenwert3 könntest du weglassen (ist redundant) und eventuell nur eine Schleife verwenden, die von 30 bis 129 zählt (die Zeilenwechsel werden dann per
if(zeichen%10==0){...}realisiert).
-
Als Anregung eine etwas kürzere Variante:
cout << " 0 1 2 3 4 5 6 7 8 9" << endl; cout << " +--------------------" << endl; for (unsigned line = 3; line <= 12; ++line) { cout << setw(2) << line << '|'; for (unsigned column = 0; column < 10; ++column) { char character = line * 10 + column; if (character < 32 or character > 126) character = ' '; cout << ' ' << character; } cout << '\n'; }Diese zeichnet sich vor allem durch Benutzung des stream-manipulators setw aus, durch Weglassen der schon angesprochenen Redundanzen und durch Benutzung wesentlich aussagekräftigerer Variablennamen (wenn auch noch nicht optimal). Außerdem mochte ich deinen Einrückungsstil nicht
.
-
Bei deiner (user369) Variante könntest du die Variablen lokaler definieren. Alle Variablen am Anfang des Scopes zu definieren ist ein Relikt aus C.
-
Okay, ich danke für die Antworten.
Ich werde mal probieren, das umzusetzen.