erste programmierversuche. rahmen aus zeichen.



  • hi leute.

    ich beschäftige mich seit einigen tagen mit c++.
    bis jetzt klappt das auch ganz gut. auch wenn ich die möglichkeiten von c++ noch nicht genau kenne, für das, was ich programmieren will, reichen meine kenntnisse. aber hin und wieder stehe ich doch vor einem rätsel.

    ich habe eine kleine sinnlose konsolenanwedung geschrieben, die nach dem namen fragt und dann einen begrüßungstext ausgibt. zusätzlich, lasse ich mir nach drücken von enter den quellcode anzeigen. das klappt auch, aber nun dachte ich mir, es wäre doch schön, wenn ich diesen quellcode mit bspw. sternchen umranden könnte. nur hab ich keine ahnung, wie ich dass umsetzten kann.
    ich habe da zwar ne idee, weiß aber nicht, wie ich diese schreiben soll.

    ich habe an eine for-schleife gedacht, zwei variablen ( zeilen, zeichen), aber wie schreibe ich dass nun?

    wenn möglich, schreibt mir keine direkten lösungen, ich brauche nur ein paar ansätze. vielleicht komme ich ja selbst drauf.
    danke.

    hier ist mein code.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    
    {
    	string name;
    	cout << "Wie hei""\xe1""en Sie? ";
    	cin >> name;
    	cout << "\nhallo " << name << "\n""\n";
    	cout << "Quellcode ansehen - enter dr" "\x81" "cken";
    	cin.get(); cin.get();
    	cout << endl;
    
    	// Ab hier, soll umrandet werden.
    	cout << "#include <iostream>\n"
    		 << "#include <string>\n"
    		 << "using namespace std;\n\n"
    		 << "int main()\n"
    		 << "{\n"
    		 << "string name;\n"
    		 << "  cout << \"wie hei" "\xe1" "en Sie? \";\n"
    		 << "  cin >> name;\n"
    		 << "  cout << \"hallo\" << name << endl;\n"
    		 << "  cin.get();\n"
    		 << "  return 0;\n"
    		 << "}";
    	// Bis hier soll umrandet werden.
    
    	cin.get();
    	return 0;
    }
    

  • Mod

    cout << "************************************************\n"
             << "* #include <iostream>                          *\n"
             << "* #include <string>                            *\n"
             << "* using namespace std;                         *\n"
             << "* int main()                                   *\n"
             << "* {                                            *\n"
             << "* string name;                                 *\n"
             << "*   cout << \"wie hei" "\xe1" "en Sie? \";     *\n"
             << "*   cin >> name;                               *\n"
             << "*   cout << \"hallo\" << name << endl;         *\n"
             << "*   cin.get();                                 *\n"
             << "*   return 0;                                  *\n"
             << "* }                                            *\n"
             << "************************************************\n";
    

    Für eine allgemeinere Lösung bietet sich an, eine Funktion zu schreiben, die einen Text analysiert und umrandet. Aber vermutlich ist dies derzeit noch jenseits deines Horizonts, wenn du mit for-Schleifen Schwierigkeiten hast.



  • hi.
    danke, daran hatte ich auch schon gedacht, aber das schien mir zu einfach.
    ich habe keine probleme mit for schleifen. natürlich behersche ich sie nicht, aber ich weiß, wie sie funktionieren.
    mit ner schleife wäre das schon echt super. brauche eben nur etwas hilfe.


  • Mod

    Ok, dann machen wir das etwas geschickter:
    Schreibe eine Funktion, die einem string ein * voranstellt und nach <Anzahl der Zeichen in der längsten Zeile> ein Sternchen nachstellt und das Ergebnis zurückgibt. Und eine Funktion die <Anzahl der Zeichen in der längsten Zeile> Sternchen zurückgibt.
    Dazu braucht man nicht wirklich Schleifen, sondern muss sich eher mit der string-Klasse ein bisschen auskennen.
    Die beiden Funktionen benutzt du dann.

    Der nächste Schritt wäre dann eine Funktion zu schreiben, die die Anzahl der Zeichen in der längsten Zeile eines Textes zählt, aber erst einmal solltest du den ersten Teil machen, bevor du darüber nachdenkst.



  • Hallo,
    einfache Lösungen zu deinen Problem lassen sich mit Anfängerniveau einfacher in C realisieren. Deswegen ist es vielleicht ratsam sich anderen Aufgaben zu widmen oder darüber hinweg zu sehen und ein wenig C mit C++ zu mischen.
    Wenn du aber ernsthaft an einer C++-Lösung interessiert bist, dann solltest du dir mal anschauen, wie die Streams funktionieren. Damit kannst du dein Problem lösen und auf dem gleichen Wege auch noch dein Programm darin erweitern, dass es den Quelltext aus einer Datei liest.
    Fang am Besten damit an, dir anzusehen, was man alles mit cout und cin machen kann. Durch die Wiederverwendbarkeit ist es sehr einfach sein Wissen weiter mit zunehmen. Hilfreich ist dazu eine Referenz und immer erst mal kleine Brötchen zu backen, wenn du die Funktionen ausprobierst.

    http://www.cplusplus.com/reference/iostream/



  • das hört sich doch schonmal gut an.

    @seppj

    ich werd mal schaeun, ob ich das hinbekomme.

    danke ersmal.


Anmelden zum Antworten