Wiederholung: Array von Structs
Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 62 von 63.
Aufgabe
EinfachErstelle ein C-Programm, das ein Produktinventarsystem mithilfe eines Arrays von Strukturen verwaltet. Dein Programm sollte:
- Eine
structnamensProductmit den folgenden Mitgliedern definieren:- Ein Zeichenarray
namemit der Größe 30 - Ein Gleitkommawert
price - Eine Ganzzahl
stock
- Ein Zeichenarray
- Eine Funktion namens
findMostExpensiveschreiben, die:- Ein Array aus
struct Productund eine Ganzzahlsizeals Parameter entgegennimmt - Eine Ganzzahl zurückgibt, die den Index des Produkts mit dem höchsten Preis darstellt
- Eine Schleife verwendet, um alle Produkte zu durchlaufen und ihre Preise zu vergleichen
- Den Index des ersten gefundenen Produkts mit dem höchsten Preis zurückgibt
- Ein Array aus
- Eine Funktion namens
calculateTotalValueschreiben, die:- Ein Array aus
struct Productund eine Ganzzahlsizeals Parameter entgegennimmt - Eine Gleitkommazahl zurückgibt, die den Gesamtwert des Inventars darstellt
- Den Gesamtwert berechnet, indem sie für jedes Produkt (price × stock) summiert
- Ein Array aus
- Eine Funktion namens
findLowStockschreiben, die:- Ein Array aus
struct Product, eine Ganzzahlsizeund eine Ganzzahlthresholdals Parameter entgegennimmt - Eine Ganzzahl zurückgibt, die die Anzahl der Produkte mit einem Bestand unterhalb des Schwellenwerts darstellt
- Eine Schleife verwendet, um die Produkte zu zählen, deren Bestand kleiner als der Schwellenwert ist
- Ein Array aus
- In der main-Funktion:
- Ein Array aus 3
struct Productnamensinventoryerstellen - Eingaben für jedes Produkt in dieser Reihenfolge einlesen: Name, Preis, Bestand
- Das Array mit den Eingabedaten füllen
- Die Informationen jedes Produkts in diesem exakten Format ausgeben:
Product [index]: [name] - Price: [price], Stock: [stock] - Die Funktion
findMostExpensiveaufrufen und das Ergebnis in diesem exakten Format ausgeben:Most expensive product: [name] - Die Funktion
calculateTotalValueaufrufen und das Ergebnis mit genau 2 Dezimalstellen in diesem exakten Format ausgeben:Total inventory value: [total_value] - Eine Ganzzahl einlesen, die den Schwellenwert für einen niedrigen Bestand darstellt
- Die Funktion
findLowStockmit dem Schwellenwert aufrufen und das Ergebnis in diesem exakten Format ausgeben:Products with low stock: [count] - Prüfen, ob das teuerste Produkt einen Bestand von mehr als 10 hat:
- Wenn ja:
Most expensive product is well stockedausgeben - Wenn nein:
Most expensive product needs restockingausgeben
- Wenn ja:
- Ein Array aus 3
Diese Herausforderung testet deine Fähigkeit, mit Arrays von Strukturen zu arbeiten, Funktionen zu implementieren, die Strukturarrays verarbeiten, und verschiedene Berechnungen und Vergleiche mit strukturierten Daten durchzuführen. Du übst die Array-Indizierung mit Strukturen, das Entwerfen von Funktionen zur Datenverarbeitung und das Kombinieren mehrerer Operationen zur Analyse von Inventarinformationen.
Probier es selbst
#include <stdio.h>
#include <string.h>
// TODO: Definieren Sie hier die Struktur Product
// TODO: Implementieren Sie hier die Funktion findMostExpensive
// TODO: Implementieren Sie hier die Funktion calculateTotalValue
// TODO: Implementieren Sie hier die Funktion findLowStock
int main() {
// Array mit 3 Produkten erstellen
struct Product inventory[3];
// Eingabe für jedes Produkt einlesen
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: Informationen jedes Produkts ausgeben
// TODO: Das teuerste Produkt finden und ausgeben
// TODO: Gesamtwert des Inventars berechnen und ausgeben
// Schwellenwert für niedrigen Lagerbestand einlesen
int threshold;
scanf("%d", &threshold);
// TODO: Produkte mit geringem Lagerbestand finden und ausgeben
// TODO: Überprüfen, ob das teuerste Produkt ausreichend vorrätig ist
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ählen2Pointer 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