Parallelogramm mit char



  • Hi, ich hab bisher ein Rechteck mit Rahmen programmiert. Eine Erweiterung für mich (Neugierde) ist, aus dem Rechteck ein Parallelogramm zu machen. Theorteisch müsste man doch einfach nur eine Schleife mit einem Platz-Element nach jeder Zeile setzen. Aber daran scheitere ich gerade. Würde gerne eine char variable char place =' ' in der ersten verschachtelten Schleife (siehe XXXXXXX) setzen und diese char variablemit der l Variable multiplizieren.
    Kann man char mit int verrechnen? ich weiß, dass es eine typumwandlung gibt, aber wenn ich das mache, kommt dann statt char einfach nur irgendwelche zahlen.
    Hier der Code:

    #include<iostream>
    using namespace std;

    int main()
    {

    int laenge = 0;
    int breite = 0;
    int ende = breite;
    
    cout <<"Bitte Breite eingeben: " << endl;
    cin >> breite;
    
    cout << " Bitte Laenge eingeben: " << endl;
    cin >> laenge;
    
    int l = 0;
    int b = 0;
    char place = ' ';
    int kante_rechts = breite-1;
    
    
    
    for (; l < laenge; l++)
    {
    	for (int p =1; p < laenge; p++)
    	{
    		cout << XXXXXXXXXXXXXXX;
    	}
    
    	for (; b < breite; b++)
    	{
    
    		if (b == 0 /*Kante links*/ || b == kante_rechts || l == 0 /*Kanteoben*/ || l == laenge - 1 /*unten_kante*/)
    		{
    			cout << " + ";
    		}
    		else
    		{
    			cout << " x ";
    		}
    
    	}
    	cout << endl;
    	b=0;
    	
    	
    }
    
    system("PAUSE");
    return 0;
    

    }


  • Mod

    Mit C++ Stings könntest du auch multiplizieren, aber die kennst du anscheinend noch nicht. Daher mach die "Multiplikation" auf die harte Tour: Mach eine Schleife von 0 bis l und gib in jedem Durchlauf ein einzelnes Leerzeichen aus. Am Ende hast du dann l Leerzeichen, also quasi "l multipliziert mit Leerzeichen".



  • @SeppJ
    das mit der schleife hab ich versucht, aber leider verschiebt sich mein rechteck einfach nur nach rechts

    for( int p=0; p<laenge;p++
    {
    cout<< place; // theroetisch müsste hier sowas stehen, wie place*p aber ich hab das Porblem, dass man diese nicht multiplizieren kann..
    }



  • @mmm_1482_ sagte in Parallelogramm mit char:

    Theorteisch müsste man doch einfach nur eine Schleife mit einem Platz-Element nach jeder Zeile setzen.

    Ich verstehe nicht, was du meinst.

    Würde gerne eine char variable char place =' ' in der ersten verschachtelten Schleife (siehe XXXXXXX) setzen und diese char variablemit der l Variable multiplizieren.
    Kann man char mit int verrechnen? ich weiß, dass es eine typumwandlung gibt, aber wenn ich das mache, kommt dann statt char einfach nur irgendwelche zahlen.

    Ja, man kann char mit int multiplizieren. Das char wird dann einfach auf den int umgewandelt, bevor multipliziert wird. Funktioniert wie man es sich denkt: char c = 7; int i = 100; cout << c * i << "\n"; gibt 700 aus. Weist du einem char ein Zeichen zu, so speichert das char den Code des Zeichens. Also bei ASCII: char c = 'A'; int i = 1; cout << c * i << "\n"; gibt 65 aus.

    Falls du mit multiplizieren nicht Zahl1*Zahl2 meinst, sondern "Buchstaben wiederholen": das ist was völlig anderes. std::string hat einen entsprechenden Konstruktor: std::string(5, 'A') ergibt das gleiche wie std::string("AAAAA").



  • @wob genau ich meine letzteres. Also dass nach jedem loop ein " (Leerzeichen") " hinzugefügt wird.
    den Befehl kenne ich leider nicht und das Problem ist, dass wir in unserer Pürfung nichts verwenden dürfen, was wir nicht gelehrt bekommen haben 😕



  • Der Code compiliert natürlich nicht, aber sowas meine ich:

    for(int p = 0; p < laenge; p++)
    {
    cout << place*laenge; // das muss ich irgendwie umformulieren, damit sich nach jedem loop ein weiteres leerzeichen hinzufügt
    }

    oder cout<< place++;
    .. aber da es sich um ein char handelt geht das nicht



  • Schreib dir einfach eine Funktion dafür:

    void coutZeichenNmal(char c, int n) {
        while (n-- > 0)
            std::cout << c;
    }
    

    Finde gerne einen besseren Namen für die Funktion 😉



  • @mmm_1482_ sagte in Parallelogramm mit char:

    Der Code compiliert natürlich nicht, aber sowas meine ich:

    for(int p = 0; p < laenge; p++)
    {
    cout << place*laenge; // das muss ich irgendwie umformulieren, damit sich nach jedem loop ein weiteres leerzeichen hinzufügt
    }

    oder cout<< place++;
    .. aber da es sich um ein char handelt geht das nicht

    du könntest ganz oben nen std.string anlegen, dann nach jedem durchlauf ein zeichen anhängen mit append und den dann ausgeben.


Log in to reply