Ein Programm für die Schule
-
Hallo Leute, also ich muss ein Programm für die Schule schreiben. Ich bin in C++ eine Null. Es geht darum, wenn ich ein Name eingebe, muss diese name auch in der Mitte der Kosole ausgegeben werden. Bitte hilft mit Bitte!!!
#include <stdio.h>
#include <iostream>char a;
char b;
char c;
char d;
char e;
char f;
char g;void main()
{cout << "Schreibe hier dein Name rein "<<endl;
cin >> a >>b >>c >>d >>e >>f >>g;cout << a<< ""<< b <<""<<c<<""<<d<<""<<e<<""<<f<<""<<g<<""<<endl;
getchar();
}
-
derartige Aufgaben setzen meist den Stoff des vorangegangenen Unterrichts voraus. Folglich sollte der entscheidende Hinweis zur Lösung bereits bekannt sein bzw. notfalls bei der zuständigen Lehrkraft oder den Mitschülern nochmals in Erfahrung gebracht werden.
Die Erfahrung zeigt, dass die Lehrer hauptsächlich darauf bedacht sind, dass die Schüler die Aufgabe selber versuchen zu machen als sie machen zu lassen. Auch wenn letzteres bei einigen Individuen oftmals wahrscheinlich bessere Ergebnisse liefert.
-
Schau mal nach
#include <string>und
setw()
-
er kann aber auch einfach die
steuerzeichen nehmen"\t"
-
ehm, kann mir jemand zeigen, wie das in meinem Programm mit Werten aussehen würde?
-
guck dir erstmal tutorials über C++ an, und einen Teil von deinem Programm hast du ja schon, jetzt musst du nur noch selber herausfinden wie das mit den Steuerzeichen und derm String geht.
-
Was zahlst Du denn ?
(Seit der Studiengebühr wissen wir, dass Ausbildung ja nur funktioniert, wenn sie was kostet - wenn schon kein eigenes Nachdenken, dann wenigstens eigenes Geld)
Gruß,
Simon2.
-
Wie wäre es, wenn Du selber mal schaust, wie man setw() oder "\t" benutzt! Oder erwartest Du, dass dir hier Jemand das Programm schreibt?
-
Na ja, das ist ein C++ Forum, habe also hier Hilfe erwartet. Ich hab schon viele Tutorials ageschaut und bin zum Schluss gekomme, dass ich es nicht durchblicke.
Kann mir jemand ein Tipp geben, wie man die Ausgabe in der mitte der Konsole erscheinen lässt?
-
Paradox1987 schrieb:
Kann mir jemand ein Tipp geben, wie man die Ausgabe in der mitte der Konsole erscheinen lässt?
setw()oder
"t\"
-
Paradox1987 schrieb:
Na ja, das ist ein C++ Forum, habe also hier Hilfe erwartet. Ich hab schon viele Tutorials ageschaut und bin zum Schluss gekomme, dass ich es nicht durchblicke.
Kann mir jemand ein Tipp geben, wie man die Ausgabe in der mitte der Konsole erscheinen lässt?1. Hat ANSI C++ keinen einzigen Befehl für eine mittige Darstellung, du kannst mittels setw oder '\t' versuchen dieses entsprechend deiner Consolengröße mittig zu plazieren. Google oder die Suchenfunktion des Forums wirst du wohl bedienen können.
2. Hilft man hier wenn man bemerkt das der gegenüber auch mitdenkt, vorkauen tuen die wenigsten.
3. Bezweifel ich das bereits dein Anfangsprogramm sinnvoll ist, jeden Eingabebuchstaben in eine einzelne Variable zu stopfen ist selten sinnvoll.
4. Globale Variablen sind mehr als nur unschön, und selten sinnvoll.
5. #include <stdio.h> ist falsch. Zum einen ist dies eine C-Bibliothek und zum zweiten wird diese in C++ wie folgt eingebunden: #include <cstdio>
6. Alle STL Bibliotheken liegen im "std" Namensraum (std::cout statt cout) oder ihr verwendet einen so alten C++ Compiler das eure Lehrer erschlagen gehören... Der C++ Standard ist nunmehr 10 Jahre als in dem dies Vorgeschrieben wurde. Und damit immerhin schon ein Drittel der gesamten C++ Lebensspanne alt
#include <iostream> #include <string> int main() { std::string name; std::cout << "Schreibe hier dein Name rein " << std::endl; std::cin >> name; std::cout << setw(40) << name << std::endl; std::cout << "\t\t" << name << std::endl; wait(); // Aus der FAQ kopiert (DOS und Win32 Konsole...) } void wait() { std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); }cu André
-
Fehlt da nicht ein
void wait();vor der main?

-
Danke sehr, Andre!!!
-
Wirklich zentriert wird die Ausgabe ja nicht - wehe dem man heißt "Fritz Eberhard Walter Johanthan" :D.
Frage an den Original Poster (OP): Was wird bei oben genannten Namen ausgegeben und warum?
Weiterhin wurde eine notwendige Header-Datei ist nicht eingebunden. Herauszufinden, welche das ist, sei nun Hausaufgabe des OP (selbst wenn eingebunden wird es noch nicht hinhauen).

Grüße... Heiko
-
Also in der Klasse wurde nur die Ausgabe ausprobiert cout, dann meinte ich letzte Woche und auch die Eingabe. Dann sagte ich, ich mach so, wenn ich eine Name eigebe, wird diese Name in der Mitte der Konsole gezaigt, ich wusste doch nicht, dass es so aufwendig ist:)
-
C++ weiß doch nicht einmal was eine Konsole ist. Woher soll es dann dessen Breite kennen?

-
Man sollte das Ganze nicht schwerer machen als es ist.
Ich liefere nochmals eine Anforderungsbeschreibung ab. Das Programm soll also einen Namen einlesen können und diesen dann mittig zur Konsole ausgeben.
Die Konsolebreite (welche in Anzahl von Leerzeichen angegeben wird) würde ich in einer Variablen abspeichern und fest mal auf 80 Leerzeichen setzen.
Wenn ich also beispielsweise den Namen "Kaiser Wilhelm" einlese, so kann ich schnell feststellen dass der Name 14 Zeichen groß ist. Damit der Text mittig ist, muss die Anzahl der Leerzeichen vor dem Text gleich der Anzahl der Leerzeichen nach dem Text sein, also (80 - 14) / 2 = 33.
Also schreibt man erst 33 Leerzeichen und danach den Namen in eine Zeile damit der Namen mittig ist.
Ich hoffe, ich konnte dir damit helfen.
-
#include <iostream> #include <string> //Ein Standard-Terminal ist 80 Zeichen breit. Das ist ein Quasi-Standard auf welchen //man wohl bauen darf. const short WIDTH=80; int main(void){ std::cout<<"Schreibe hier deinen Namen rein und bestaetige mit Enter:"<<std::endl; std::string inp; std::getline(std::cin,inp); for(short cnt=static_cast<short>((WIDTH-inp.length())/2);cnt>0;cnt--) std::cout<<" "; std::cout<<inp<<std::endl; std::cin.get(); }
-
anstatt jedesmal std::cout << "......" << std::endl;
zu verwenden schreib unter die include befehle using namespace std;
dann schreibt sich das viel leichter also cout << "..." << endl;grz C++Laie1

-
MegaLooser1 schrieb:
anstatt jedesmal std::cout << "......" << std::endl;
zu verwenden schreib unter die include befehle using namespace std;
dann schreibt sich das viel leichter also cout << "..." << endl;Und welches cout ist gemeint? mein::cout oder std::cout ;p
Scherz beiseite (wenn auch die Antwort durchaus ernst gemeint ist): Ich verwende ebenso wie ein nicht kleiner Teil der Programmierer häufiger die ausgeschriebene Variante da man:
Im Header eh ausschreiben muss (Niemals using namespace im Header!) und man dazu tendiert es einheitlich umzusetzen (zumal es mehr aussagt).
cu André