Mein Diamand



  • Hallo,

    habe hier ein programm gemacht das einen user nach wieviel reihen und welches character es benutzen soll.

    What size do you want? 5
    What character do you want? 1

    1
    11
    111
    1111
    11111
    1111
    111
    11
    1

    Nur leider steh ich auf dem Kriegsfuss und es möchte einfach nicht funktioniern, kann mir jemand helfen, bitte?

    Source:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        char character;
    	int size;
    	int rows = 0;
    	int x;
    
    	cout <<"What size do you want?";
    	cin >> size;
    
    	if (size < 1)
    	{
    		cout <<"Not enough size";
    		system ("pause");
    		return 0;
    	}
    
    	cout <<"What character do you want?";
    	cin >> character;
    
    	while( rows < (size * 2) - 1 )
    	{
    		if( rows < size ) // draw the top half of the diamond
    		{
    			for( x = 0; x < size - rows; x++ )
    				cout << ' '; // the space before
    
    			for( x = 0; x < rows + 1; x++ )
    				cout << character;
    
    		}
    		else // draw the bottom half of the diamond
    		{
    			for( x = 0; x < rows - size; x++ )
    				cout << ' '; // the space before
    
    			for( x = 0; x < ((size * 2)) - (rows - size); x++ )
    
    			cout << character;
    		}
            if (rows < size)
    		{
    		for (x = 0; x < rows - size; x++)
    				cout << ' ';
    
    		for (x = 0; x < rows; x++)
    
            cout << character;
    
    		}
    		cout << endl;
    		rows = rows + 1;
    	}
    
    	system ("pause");
        return 0;
    }
    

    Ist mit Visual C++ 2005 gemacht.



  • Gegenfrage: Wie äußert sich dieses "möchte nicht funktionieren"? Compilerfehler? Falsche Ausgaben?

    Was mir auf Anhieb auffällt: Du hast zweimal den Block "if(rows<size)". Und anstelle der while-Schleife könntest du auch ein for() verwenden.



  • warum so viele for's if's und while's?
    reicht nicht:

    // Anzahl und Zeich vom Benutzer einlesen
       cin >> size;
       cin >> character;
    
       // vorwärts
       for( int i=0; i<size; i++)
       {
          for( int k=0; k<i; k++)
             cout << character;
          cout << endl;
       }
       // rückwärts
       for( ; i>0; i--)
       {
          for( int k=0; k<i; k++)
             cout << character;
          cout << endl;
       }
    


  • kann der herr vielleicht vorher mal sagen was nicht haut!
    for/ if/ while... was ein gewusel



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten