Een driehoek maken via for-lussen

Status
Niet open voor verdere reacties.

BlackRedThunder

Gebruiker
Lid geworden
7 okt 2008
Berichten
36
Nog eens goeiedag!

Eerst en vooral vrolijke feestdagen!

Ik kan deze driehoek maken in c++:
*
**
***
****
(een normale driehoek dus)
en dit via deze code:
Code:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	for (int rij = 1; rij <= 6; rij++)
	{
		for (int kol = 1; kol <= rij; kol++)
			cout << setw(2) << '*';
		cout << endl;
	}
	cin.get();
}

Ik zou ook graag een omgekeerde kunnen maken (gespiegeld via de y-as); hiermee bedoel ik 1 zoals deze:
____*
___**
__***
_****
(die underscores moeten er niet bij, was enkel voor de lay-out te kunnen behouden)
Ik had het aan iemand gevraagd hoe je dit doet, en die begon met dat je het laatste teken moest opslaan van de vorige rij, en die iedere keer opschuiven...
Zou het niet met een for-lus lukken zonder die telkens op te schuiven? Ik ben namelijk een boek aan het bekijken, en dit staat onder het onderdeel for-lussen (en er werd nog nooit gesproken over laatste tekens opslaan en opschuiven in de volgende rij)

Alvast bedankt!
 
Laatst bewerkt:
Code:
int main(int argc, char *argv[])
{
    const unsigned int MAX = 6, START = 20;
    
    for(unsigned int i = 1; i <= MAX; i++)
        std::cout << std::setfill(' ') << std::setw(START-i) << ' ' << std::setfill('*') << std::setw(i+1) << '\n';
    
    for(unsigned int i = 1; i <= MAX; i++)
       std::cout << std::setfill(' ') <<  std::setw(START-1) << ' ' << std::setfill('*') << std::setw(i+1) << '\n';        
    
    for(unsigned int i = 1; i <= MAX; i++)
        std::cout << std::setfill(' ') << std::setw(START-i) << ' ' << std::setfill('*') << std::setw(i << 1) << '\n';
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Zoiets bedoel je ?

edit: je wilt het alleen via for-lussen doen, daar had ik gisteren overheen gelezen.

Code:
    const unsigned int MAX = 6;
    unsigned int i, j;
    
    for(i = 1; i <= MAX; i++)
    {
        for(j = 0; j < (i << 1 - 1); j++)
            std::cout << '*';
            
        std::cout << '\n';
    }
    
    for(i = 1;  i <= MAX; i++)
    {
        for(j = i; j < MAX + (i << 1 - 1); j++)
            std::cout << (j < MAX ? ' ' : '*');
            
        std::cout << '\n';
    }
    
    for(i = 1; i <= MAX; i++)
    {
        for(j = i; j < MAX + (i << 1) - 1; j++)
            std::cout << (j < MAX ? ' ' : '*');
        
        std::cout << '\n';
    }
 
Laatst bewerkt:
Code:
int main(int argc, char *argv[])
{
    const unsigned int MAX = 6, START = 20;
    
    for(unsigned int i = 1; i <= MAX; i++)
        std::cout << std::setfill(' ') << std::setw(START-i) << ' ' << std::setfill('*') << std::setw(i+1) << '\n';
    
    for(unsigned int i = 1; i <= MAX; i++)
       std::cout << std::setfill(' ') <<  std::setw(START-1) << ' ' << std::setfill('*') << std::setw(i+1) << '\n';        
    
    for(unsigned int i = 1; i <= MAX; i++)
        std::cout << std::setfill(' ') << std::setw(START-i) << ' ' << std::setfill('*') << std::setw(i << 1) << '\n';
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Zoiets bedoel je ?

edit: je wilt het alleen via for-lussen doen, daar had ik gisteren overheen gelezen.

Code:
    const unsigned int MAX = 6;
    unsigned int i, j;
    
    for(i = 1; i <= MAX; i++)
    {
        for(j = 0; j < (i << 1 - 1); j++)
            std::cout << '*';
            
        std::cout << '\n';
    }
    
    for(i = 1;  i <= MAX; i++)
    {
        for(j = i; j < MAX + (i << 1 - 1); j++)
            std::cout << (j < MAX ? ' ' : '*');
            
        std::cout << '\n';
    }
    
    for(i = 1; i <= MAX; i++)
    {
        for(j = i; j < MAX + (i << 1) - 1; j++)
            std::cout << (j < MAX ? ' ' : '*');
        
        std::cout << '\n';
    }

Sorry voor mijn late reactie, maar mijn internet ging voor enkele dagen niet :(
Ik heb het gevonden, en denk dat deze oplossing hieronder toch wat eenvoudiger is voor beginners... Maar toch bedankt!!

Code:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	for (int rij = 1; rij <= 7; rij++)
	{
		for (int kol = 6; kol >= rij; kol--)
		{
			cout << " ";
		}
		for (int kol = 1; kol <= rij; kol++)
			cout << "*";
		cout << endl;
	}
	cin.get();
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan