Textausgabe untereinander und nebeneinander
-
Hallo erst Mal,
seit paar Tagen sitze ich als c++ Anfänger an einer Aufgabe(bzw.Aufgaben), die ich nicht lösen kann. Der Text "Hallo" soll fünf mal untereinander und fünf mal neben einander (also insgesamt 25 Mal) ausgegeben werden. Dabei soll dies mit der Verwendung von je zweimal a) for b)while und c)do-while Schleifen geschehen. Zudem darf der Begriff "cout" jeweils nur einmal verwendet werden. Mein Ansatz für die for-Schleife sieht wie folgend aus:int main() { int i=0; for (i=0; i<5; i++) { cout << "Hallo" << endl; } return 0; }
So wird der Text zumindest untereinander aufgelistet.
Könnt ihr mir vielleicht helfen wie ich weitermachen soll?
-
Die übliche Vorgehensweise wäre, dass du jetzt in der for-Schleife anstatt des
cout << "Hallo" << endl;
noch eine weitere for-Schleife mit 5 Durchläufen machst. In dieser inneren Schleife gibst du auch "Hallo" aus, aber ohne eine Zeile weiterzuspringen (also ohne endl). Nachdem diese innere Schleife durch ist, würdest du noch ein endl ausgeben. Das sähe so aus:int main() { for (int i=0; i<5; ++i) { for (int j=0; j<5; ++j) cout << "Hallo"; cout<<endl; } }
Ich wage mal zu behaupten, dass dies die Lösung ist, die dein Lehrer sucht. Analog mit den anderen Schleifentypen.
Problem: Ganz streng genommen wird die Aufgabenstellung nicht erfüllt, da 2x cout benutzt wird. Ich halte dies für einen Fehler in der Aufgabenstellung. Denn wenn du wirklich nur 1x cout benutzen willst, müsstest du Sachen wie dies hier machen:
int main() { for (int i=0; i<5; ++i) { for (int j=0; j<1; ++j) // Wird nur 1x ausgeführt cout << "HalloHalloHalloHalloHallo"<<endl; } }
Das ist sicherlich nicht wie die Aufgabe gedacht ist. Oder alternativ etwas das vermutlich über den Stoff hinausgeht den du kennst:
int main() { for (int i=0; i<5; ++i) { for (int j=0; j<5; ++j) { char zeilenende = (j==4) ? '\n':0; cout << "Hallo"<<zeilenende; } } }
Wie du siehst ist wohl beides nicht das was dein Lehrer meint.
edit:
Alle Codebeispiele ungeprüft, eventuelle Syntax-/Flüchtigkeitsfehler daher nicht ausgeschlossen.
-
mit for:
for (int untereinander = 0; untereinander<5; ++untereinander) { for (int nebeneinander = 0; nebeneinander<5; ++nebeneinander) { std::cout<<"Hallo"; } std::cout<<std::endl; }
Bei while und do dann also ebenfalls verschachtelt - vesuch das erstmal alleine. Schau dir dazu am besten ein beliebiges Buch oder Tutorial an.
Tip: Bei jedem Durchlauf inkrementierst du einen Zähler um eins und überprüfst den Wert im Kopf der Schleife.
P.S.: oh - da war jmd schneller
An das nur einmal cout hab ich garnicht gedacht - aber zwei mögliche Lösungen wurde ja bereits erläutert - wobei ich ebenfalls nicht denke, dass sowas erwaretet wird.
-
Danke für eure Lösungen !
Dass der cout Befehl nur einmal benutzt werden ist zwar bisschen blöd aber jedoch Pflicht. Im Studium gibt es ja sogenannte "Labore" und in der Aufgabenstellung steht es halt so drin.
Mit der while Schleife habe ich es nun auch gelöstint main() { int i=0; while (i<5) { i++; int j=0; while (j<1) { j++; cout << "Hallo Hallo Hallo Hallo Hallo"<<endl; } } }
-
Ich würde gerne das Programm etwas komplexer gestalten(aus Neugier), indem man z.B. zuerst einen Text eingeben muss und dieser dann wie oben mehrmal unter und nebeneinander aufgelistet wird. Wie würde das gehen?
Also ;cout <<"Bitte Text eingeben : "; cin >>
Anschließend mit einer der o.g 3 Schleifen den Text auflisten
-
Texte kannst du in einem
string
(aus dem Headerstring
) speichern.
cin>>dein_string;
liest ein Wort ein (keine ganze Zeile! Dafür gibt es noch getline),cout << dein_string;
gibt ihn wieder aus.
-
So ?
#include <iostream> #include <string.h> using namespace std; int main() { cin>>dein_string; cout<< dein_string; return 0; }
-
fast
#include <iostream> #include <string> // ohne .h using namespace std; int main() { string dein_string; cout<<"Bitte Text eingeben: "; cin>>dein_string; // oder für ganze Zeilen mit Leerzeichen: getline(cin,dein_string); cout<<"Eingegeben wurde: "<<dein_string; return 0; }
-
Niang7 schrieb:
So ?
#include <iostream> #include <string.h> using namespace std; int main() { cin>>dein_string; cout<< dein_string; return 0; }
Ich glaube weniger Hilfe wäre in deinem Fall eine bessere Hilfe. Du musst auf jeden Fall nochmal die vorhergehenden Lektionen deines Kurses bearbeiten bevor du weitermachst. Da fehlen absolut grundlegendste Grundlagen zu Variablen.
@inter2k3 : So geht's richtig. Aber getline mit kleinem L
.
-
SeppJ schrieb:
Ich glaube weniger Hilfe wäre in deinem Fall eine bessere Hilfe. Du musst auf jeden Fall nochmal die vorhergehenden Lektionen deines Kurses bearbeiten bevor du weitermachst. Da fehlen absolut grundlegendste Grundlagen zu Variablen.
@inter2k3 : So geht's richtig. Aber getline mit kleinem L
.
In meinem Maschinenbau-Semester sind die anderen auch nicht besser als ich glaube ich
-
In meinem Maschinenbau-Semester sind die anderen auch nicht besser
Was auch vollkommen verständlich ist. Der Informatik Kurs bei mir an der Uni (studiere auch Maschinenbau) war unter aller Sau.
In einer C++ Projektaufgabe musste man z.B. für ein bestehendes Framework ein paar Klassen schreiben bzw. deren Headerdateien. Wenn man dann nicht immer schön
#include <iostream>
#include <string>
using namespace std;an den Anfang jeder Headerdatei (!) geschrieben hat, gab's Compilerfehler. xD
Die "HiWis", die einem bei C++ Fragen helfen sollten, wussten dann z.B. auch nicht, dass man aus einer "void" Funktion jederzeit mit "return" herausspringen kann. Wenn man ihnen dann gezeigt hat, dass es doch geht, gab's als antwort "Ja, mit C++ habe ich mich auch lange nicht mehr beschäftigt".
Und das an einer "Eliteuniversität"...
Naja, dem Threadstarter würde ich einfach zu einem guten Buch raten (C++ Primer oder Der C++ Programmierer). Vielleicht auch mal in einer Bibliothek nach C++ Büchern suchen, wenn es nur darum geht den prüfungsrelevanten C++ Stoff zu lernen.