Wiederholung: Übung zu typedef & Enums
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 60 von 63.
Aufgabe
EinfachErstellen Sie ein C-Programm, das enum und typedef kombiniert, um einen einfachen geometrischen Formrechner zu erstellen. Ihr Programm sollte:
- Definieren Sie ein
enumnamensShapeTypemit den folgenden Konstanten in genau dieser Reihenfolge:CIRCLERECTANGLETRIANGLE
- Verwenden Sie
typedef, um einen Typ-Alias namensShapefür dasenum ShapeTypezu erstellen - Schreiben Sie eine Funktion namens
calculateArea, die:- Einen
Shape-Parameter namensshapeentgegennimmt - Zwei
float-Parameter namensdimension1unddimension2entgegennimmt - Einen
float-Wert zurückgibt, der die berechnete Fläche darstellt - Eine
switch-Anweisung verwendet, um die Fläche basierend auf dem Formtyp zu berechnen:- Für
CIRCLE: area = 3.14159 * dimension1 * dimension1 (dimension1 ist der Radius) - Für
RECTANGLE: area = dimension1 * dimension2 (Länge × Breite) - Für
TRIANGLE: area = 0.5 * dimension1 * dimension2 (0.5 × Basis × Höhe)
- Für
- Einen
- Schreiben Sie eine Funktion namens
printShapeInfo, die:- Einen
Shape-Parameter namensshapeentgegennimmt - Nichts zurückgibt (void)
- Eine
switch-Anweisung verwendet, um Forminformationen auszugeben:- Für
CIRCLE: geben SieShape: Circleaus - Für
RECTANGLE: geben SieShape: Rectangleaus - Für
TRIANGLE: geben SieShape: Triangleaus
- Für
- Einen
- In der main-Funktion:
- Deklarieren Sie eine Variable vom Typ
ShapenamensselectedShape - Deklarieren Sie zwei
float-Variablen namensdim1unddim2 - Lesen Sie drei Werte von der Eingabe ein: eine Ganzzahl, die die Formwahl darstellt (0, 1 oder 2), und zwei Float-Werte für die Dimensionen
- Weisen Sie
selectedShapebasierend auf der Eingabe den entsprechenden Enum-Wert zu - Weisen Sie die Dimensionswerte
dim1unddim2zu - Rufen Sie die Funktion
printShapeInfomitselectedShapeauf - Geben Sie die Dimensionen in genau diesem Format aus:
Dimensions: [dim1] [dim2] - Berechnen Sie die Fläche durch Aufrufen der Funktion
calculateArea - Geben Sie die berechnete Fläche mit genau 2 Dezimalstellen in genau diesem Format aus:
Area: [area] - Bestimmen und geben Sie die Formkategorie basierend auf der berechneten Fläche aus:
- Wenn die Fläche kleiner als 10.0 ist: geben Sie
Category: Smallaus - Wenn die Fläche zwischen 10.0 und 50.0 liegt (einschließlich): geben Sie
Category: Mediumaus - Wenn die Fläche größer als 50.0 ist: geben Sie
Category: Largeaus
- Wenn die Fläche kleiner als 10.0 ist: geben Sie
- Deklarieren Sie eine Variable vom Typ
Diese Herausforderung demonstriert die leistungsstarke Kombination von enum und typedef im Zusammenspiel. Das typedef erstellt einen sauberen, lesbaren Typnamen Shape, anstatt wiederholt enum ShapeType schreiben zu müssen. Die enum-Konstanten machen die switch-Anweisungen selbstdokumentierend und zeigen deutlich, was jeder Fall darstellt. Sie werden üben, beide Konzepte zu definieren, sie in Funktionsparametern zu verwenden und Logik zu implementieren, die von den Enum-Werten abhängt.
Probier es selbst
#include <stdio.h>
// TODO: Definieren Sie hier Ihr Enum ShapeType und typedef
// TODO: Implementieren Sie hier die Funktion calculateArea
// TODO: Implementieren Sie hier die Funktion printShapeInfo
int main() {
// Eingabe lesen
int shapeChoice;
float dim1, dim2;
scanf("%d", &shapeChoice);
scanf("%f", &dim1);
scanf("%f", &dim2);
// TODO: Schreiben Sie Ihren Code unten
// Variable selectedShape deklarieren und basierend auf shapeChoice zuweisen
// Funktion printShapeInfo aufrufen
// Dimensionen ausgeben
// Fläche berechnen und ausgeben
// Kategorie bestimmen und ausgeben
return 0;
}Alle Lektionen in Logik & Ablauf
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct10Enums und typedef
enum für benannte KonstantenEnums deklarieren und verwendenEnums in Switch-Anweisungentypedef für Typ-Aliase verwendentypedef mit StructsWiederholung: Übung zu typedef & Enums2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-FunktionenÜbe selbstständig: Online-C-Compiler