C-Programmierung: Aufgaben: Dreieck

Aus Wikibooks

Aufgabenstellung[Bearbeiten]

Entwickeln Sie ein Programm, das ein auf der Spitze stehendes Dreieck mit Sternchen (*) auf dem Bildschirm in folgender Form ausgibt:

*******
 *****
  ***
   *

Durch eine manuelle Eingabe zu Beginn des Programmes muss festgelegt werden, aus wie vielen Zeilen das Dreieck aufgebaut werden soll. Anschließend muss überprüft werden, ob die Eingabe gültig ist. Ist das nicht der Fall, muss das Programm abgebrochen werden.

Zur Implementierung der Aufgabe werden neben Ein- und Ausgabe auch Schleifen benötigt.

Musterlösung[Bearbeiten]

Online-Compiler ideone

#include <stdio.h>

int main(void)
{
    /* Definition der Variablen */
    unsigned i, j, k;
    unsigned hoehe; /* Variable fuer die Dreieckshoehe */
    unsigned anzahlSterne, anzahlLeer; /* Variablen zur Speicherung von Sternen und Leerzeichen */

    // Eingabe der Dreieckshoehe
    printf("Programm zur Ausgabe eines auf der Spitze stehendes Dreiecks\n");
    printf("Bitte die Hoehe des Dreiecks eingeben: ");
	
    if ( scanf("%u", &hoehe)==0 ) /* Ist Eingabe gueltig? */
    {
        printf("Ungueltige Eingabe!\n");
        return 1;
    }
	
    /* Schleife zur Ausgabe */
    for (i = 1; i <= hoehe; i++)
    {
        /* Fuer jede neue Zeile die Anzahl der notwendigen Sterne und Leerzeichen ermitteln */
        anzahlLeer = i;
        anzahlSterne = (hoehe + 1 - i) * 2 - 1;
		
        printf("\n"); /* neue Zeile */

        for (j = 1; j <= anzahlLeer; j++)   /* Ausgabe der Leerzeichen */
            printf(" ");
        
        for (k = 1; k <= anzahlSterne; k++)	/* Ausgabe der Sterne */
            printf("*");

    }
	
    return 0;
}

Wir definieren zu Beginn drei Variablen:

  1. hoehe für die Anzahl der Zeilen über die sich das Dreieck erstreckt
  2. anzahlSterne für die Anzahl der Sterne in jeder Zeile
  3. anzahlLeer für die Anzahl der Leerzeichen in jeder Zeile.

Als Nächstes benötigen wir die Eingabe der Dreieckshöhe. Dazu wird über ein scanf() eine Zahl eingelesen und in der Variable hoehe gespeichert. Die Prüfung auf korrekte Eingabe übernimmt die Funktion scanf.

Ist die Eingabe gültig, kommen wir zur Hauptschleife (for). Diese wird für jede Zeile einmal abgearbeitet. Hier wird nun für jede Zeile die Anzahl der benötigten Sterne und Leerzeichen ermittelt. Jede Zeile beginnt mit Leerzeichen, weshalb diese zuerst mit einer for-Schleife ausgegeben werden. Darauf folgt eine weitere for-Schleife, welche die Anzahl der Sterne ausgibt. Am Ende der Hauptschleife erfolgt ein Zeilenumbruch.

Ist die Hauptschleife durchlaufen, wird das Programm erfolgreich beendet.