Programmeren met geneste lussen in C

Status
Niet open voor verdere reacties.

techno76

Nieuwe gebruiker
Lid geworden
29 sep 2007
Berichten
2
Hallo

Ik moet een volgende figuur op het scherm zien te krijgen maar heb geen idee hoe je dat moet doen, weet wel dat je met twee for lussen moet werken maar hoe krijg ik dat op het scherm

Dat is de tekening die ik moet hebben op het scherm:

een gelijkzijdige driehoek moet sterretjes

Dat is het algoritme die ik doe:

// ----------------------------------------------------------------------------------
// Algoritme:
// ==========
// 1. Hoeveel rijen en kolommen hebben we?
// 2. Wat is de regelmaat van de rij?
// 3. Kun je onder woorden brengen wat de regelmaat in de eerste rij is?
// 4. En in de derde rij?
// 5. Hoe is de regelmaat afhankelijk van het nummer van de rij?
// 6. Kun je een for statement schrijven voor de eerste rij?
// 7. En voor de derde rij?
// ----------------------------------------------------------------------------------

Kan iemand eens mij helpen hoe ik daarin begin?
 
Ik snap niet echt alle vragen maar misschien kan ik je een beetje op gang helpen.

De eerste rij begint dan met een aantal spaties en dan 1 sterretje.
.....
De volgende rij begint met 1 spatie minder, een sterretje, 1 spatie, een sterretje
De volgende rij weer 1 spatie minder, een sterretje, 3 spaties, een sterretje
De volgende rij weer 1 spatie minder, een sterretje, 5 spaties, een sterretje
......
Laatste rij word allemaal sterretjes

Dus je zou een variabele bij kunnen houden die je steeds 1 minder maakt voor de spaties aan het begin, en een variabele voor de spaties tussen de sterretjes.
De eerste en laatste rij zou je dan apart kunnen tekenen of zelf iets moois voor verzinnen.

Succes
 
het kan mijn negativiteit zijn maar serieus dit zijn problemen die je voor je zelf op moet kunnen lossen als programmeur, als je nou hulp nodig had met functies om iets te loopen of iets op het scherm te zetten dan ist ok, maar dit ...

ok misschien ben je dan een rookie programmeur, vraag dan hoe je effectief je eigen algoritmes kunt maken, vraag niet of iemand anders het voor je doet zodat jij het over neemt en dan regel voor regel zegt "ahja zo moet dat". als je dat wel doet dan zul je blijven houden dat je oude code op moet zoeken om te kijken hoe je iets ook alweer deed
 
Als je niet weet waarmee je moet beginnen, dan teken je het eerst op papier(notepad/whatever). Dan ga je kijken welk patroon je vindt en hoe je het zou moeten opbouwen. Als je dit doet dan kun je tot een oplossing komen zoals Arjan B deze postte.

De eerste rij begint dan met een aantal spaties en dan 1 sterretje.
.....
De volgende rij begint met 1 spatie minder, een sterretje, 1 spatie, een sterretje
De volgende rij weer 1 spatie minder, een sterretje, 3 spaties, een sterretje
De volgende rij weer 1 spatie minder, een sterretje, 5 spaties, een sterretje
......
Laatste rij word allemaal sterretjes

Dus je zou een variabele bij kunnen houden die je steeds 1 minder maakt voor de spaties aan het begin, en een variabele voor de spaties tussen de sterretjes.
De eerste en laatste rij zou je dan apart kunnen tekenen of zelf iets moois voor verzinnen.

Bovenstaande hoef je alleen nog maar te implementeren. Dat wordt dan iets als onderstaande: (voor een volle driehoek en een normale driehoek)

Code:
void teken_driehoek(const int z)
{
     int spatiesA = 40, spatiesB = 1;
     for(int hoogte = 0; hoogte < z; ++hoogte)
     {
             for(int i = 0; i < spatiesA; ++i) cout << " ";
             if(hoogte == 0) cout << "*";
             else if(hoogte > 0 && hoogte < z - 1){
                  cout << "*";
                  for(int i = 1; i < spatiesB -1; ++i) cout << " ";
                  cout << "*";
             } else if(hoogte == z-1){
                   for(int i = 0; i < (int)spatiesB / 2; ++i){               
                           cout << "* ";
                   }
                   cout << "*";
             }
             cout << endl;
             spatiesA -= 1;
             spatiesB += 2;                        
     }
     cout << endl;
}
void teken_volleDriehoek(const int z)
{
     int spaties = 40, tekens = 1;
     for(int hoogte = 0; hoogte < z; ++hoogte){
             for(int i = 0; i < spaties; ++i) cout << " ";
             for(int i = 0; i < tekens; ++i)  cout << "*";
             cout << endl;
             tekens += 2;
             spaties -= 1;
     }
     cout << endl;
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan