Wiederholung: Array von Structs
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 62 von 63.
Aufgabe
EinfachErstellen Sie ein C-Programm, das ein Produktinventarsystem unter Verwendung eines Arrays von Structs verwaltet. Ihr Programm sollte:
- Definieren Sie ein
structnamensProductmit den folgenden Elementen:- Ein Zeichen-Array
nameder Größe 30 - Ein Float
price - Ein Integer
stock
- Ein Zeichen-Array
- Schreiben Sie eine Funktion namens
findMostExpensive, die:- Ein Array von
struct Productund einen Integersizeals Parameter entgegennimmt - Einen Integer zurückgibt, der den Index des Produkts mit dem höchsten Preis darstellt
- Eine Schleife verwendet, um alle Produkte zu durchlaufen und deren Preise zu vergleichen
- Den Index des ersten gefundenen Produkts mit dem maximalen Preis zurückgibt
- Ein Array von
- Schreiben Sie eine Funktion namens
calculateTotalValue, die:- Ein Array von
struct Productund einen Integersizeals Parameter entgegennimmt - Einen Float zurückgibt, der den Gesamtwert des Inventars darstellt
- Den Gesamtwert berechnet, indem die Summe von (price × stock) für jedes Produkt gebildet wird
- Ein Array von
- Schreiben Sie eine Funktion namens
findLowStock, die:- Ein Array von
struct Product, einen Integersizeund einen Integerthresholdals Parameter entgegennimmt - Einen Integer zurückgibt, der die Anzahl der Produkte darstellt, deren Bestand unter dem Schwellenwert liegt
- Eine Schleife verwendet, um Produkte zu zählen, bei denen der Bestand geringer als der Schwellenwert ist
- Ein Array von
- In der main-Funktion:
- Erstellen Sie ein Array aus 3
struct Productnamensinventory - Lesen Sie die Eingabe für jedes Produkt in dieser Reihenfolge ein: name, price, stock
- Füllen Sie das Array mit den Eingabedaten
- Geben Sie die Informationen jedes Produkts in genau diesem Format aus:
Product [index]: [name] - Price: [price], Stock: [stock] - Rufen Sie die Funktion
findMostExpensiveauf und geben Sie das Ergebnis in genau diesem Format aus:Most expensive product: [name] - Rufen Sie die Funktion
calculateTotalValueauf und geben Sie das Ergebnis mit genau 2 Dezimalstellen in genau diesem Format aus:Total inventory value: [total_value] - Lesen Sie einen Integer ein, der den Schwellenwert für niedrigen Bestand darstellt
- Rufen Sie die Funktion
findLowStockmit dem Schwellenwert auf und geben Sie das Ergebnis in genau diesem Format aus:Products with low stock: [count] - Prüfen Sie, ob das teuerste Produkt einen Bestand von mehr als 10 hat:
- Wenn ja: geben Sie
Most expensive product is well stockedaus - Wenn nein: geben Sie
Most expensive product needs restockingaus
- Wenn ja: geben Sie
- Erstellen Sie ein Array aus 3
Diese Herausforderung testet Ihre Fähigkeit, mit Arrays von Structs zu arbeiten, Funktionen zu implementieren, die Struct-Arrays verarbeiten, und verschiedene Berechnungen und Vergleiche an strukturierten Daten durchzuführen. Sie üben die Array-Indizierung mit Structs, das Funktionsdesign für die Datenverarbeitung und die Kombination 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 Logic & Flow
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