C-Programmierung: Aufgaben: Dreieck
Aus Wikibooks
[Bearbeiten] Aufgabenstellung
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.
[Bearbeiten] Musterlösung
#include <stdio.h> int main(void) { // Deklarationen int hoehe; // Variable fuer die Dreieckshoehe int 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: "); scanf("%d", &hoehe); // Eingabeaufforderung für Dreieckshoehe if ((!hoehe) || (hoehe <= 0)) // Ist Eingabe gueltig? { printf("Ungueltige Eingabe!\n"); return 1; } // Schleife zur Ausgabe int i, j, k; for (i = 1; i <= hoehe; i++) // Hauptschleife zum Aufbau des Dreiecks { // Fuer jede neue Zeile die Anzahl der notwendigen Sterne und Leerzeichen ermitteln anzahlLeer = i; anzahlSterne = (hoehe + 1 - i) * 2 - 1; for (j = 1; j <= anzahlLeer; j++) // Ausgabe der Leerzeichen printf(" "); for (k = 1; k <= anzahlSterne; k++) // Ausgabe der Sterne printf("*"); printf("\n"); } return 0; }
Wir deklarieren zu Beginn drei Variablen:
- hoehe für die Anzahl der Zeilen über die sich das Dreieck erstreckt
- anzahlSterne für die Anzahl der Sterne in jeder Zeile
- 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. Anschließend wird die Eingabe mit if überprüft. Wenn hoehe leer ist, weil die Eingabe keine Zahl war, oder die Zahl kleiner gleich Null ist, wird ein Fehler ausgegeben und das Programm beendet.
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.