programm soll ein 3eck aus * zeichnen

MasterOfTheDark

Grünschnabel
Hallo!
Wir müssen von der schule aus ein Programm in C++ schreiben, dass via for Schleife ein dreick zeichnet.Ich blicke da nicht wirklich durch.
Habe es zwar hinbekommen, dass er eine Schräge zeichnet, aber die 2. Schräge gelingt mir nicht.
hoffe mir kann jemand helfen.

Lg MasterOfTheDark

PS: das sollte dann ca so aussehen:
bbbbbbbbbbbb*
bbbbbbbbbbb*b*
bbbbbbbbbb*bbb*
bbbbbbbbb*bbbbb*
bbbbbbbb***********

b=leerzeichen
 
Zuletzt bearbeitet:
Code:
#include <cstdlib>
#include <iostream>

using namespace std;
int main(int argc, char *argv[])
{
    int loop1,loop2,loop3,loop4,loop5,loop6,loop7;
    {        
        {
            for(loop1=1;loop1<=10;loop1++)
            {
                for(loop2=loop1;loop2>0;loop2--)
                {
                     for(loop3=1;loop3<loop2;loop3++);
                     cout<<" ";    
                }
                cout<<"*";
                cout<<endl;
            }
        }
    }
    system("PAUSE");
    return EXIT_SUCCESS;  
}

er zeichnet das hier:
*
b*
bb*
bbb*
bbbb*
bbbbb*
bbbbbb*
bbbbbbb*
bbbbbbbb*
bbbbbbbbb*

b=leerzeichen
 
Hi.
er zeichnet das hier:
*
b*
bb*
bbb*
bbbb*
bbbbb*
bbbbbb*
bbbbbbb*
bbbbbbbb*
bbbbbbbbb*

b=leerzeichen
Das ist ja auch nicht weiter verwunderlich. Du gibst pro Zeile ja auch nur ein Sternchen aus.

Vielleicht solltest du dir mal überlegen, was du denn eigentlich in jeder Zeile ausgeben müßtest. (und lass erstmal die erste Zeile weg, das ist ein Sonderfall).

Bei 10 Zeilen, wieviel Leerzeichen müssen vor dem ersten Stern stehen? Wieviel vor dem zweiten? Überleg dir das erstmal für jede Zeile und vielleicht fällt dir ja ein Zusammenhang auf...

Gruß
 
Zum Beispiel so:

C++:
void DreieckZeichnen(int AnzahlReihen)
{
	// erste zeile zeichnen
	for (int i = 1; i < AnzahlReihen; i++)
		std::cout << " ";

	std::cout << "*" << std::endl;


	// Für jede Zeile
	for (int i = 1; i < AnzahlReihen-1; i++)
	{
		// zuerst die Leerzeichen ausgeben
		for (int j = AnzahlReihen-i; j > 1; j--)
			std::cout << " ";

		// jetzt den linken Stern ausgeben
		std::cout << "*";

		// jetzt die Leerzeichen in der Mitte des Dreiecks
		for (int j = 1; j < i*2; j++)
			std::cout << " ";

		std::cout << "*" << std::endl;
	}

	// letzte Zeile zeichnen
	for (int i = 0; i < AnzahlReihen; i++)
		std::cout << "* ";
}
 
Zuletzt bearbeitet:
Toll, sowas ist doch keine Hilfe - dabei lernt er doch nichts. Es war doch fast schon richtig was er hatte...

@MasterOfTheDark: Du hast nur 1 von 2 Fragen beantwortet. Du solltest ruhig etwas gewissenhafter vorgehen. Dann wäre dir evtl. auch von allein der Zusammenhang zwischen Zeilennummer, Anzahl der Leerzeichen links, Anzahl der Leerzeichen mittig aufgefallen. Das wäre dann der Schlüssel für das Programm gewesen; wenn man genau weiß "was" man programmieren möchte, dann ist es nur ein kleiner Schritt das auch als Programm zu formulieren.

Gruß
 
Zurück