Powtórka: tablica struktur
Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 62 z 63.
Wyzwanie
ŁatwyUtwórz program w C, który zarządza systemem ewidencji produktów przy użyciu tablicy struktur. Twój program powinien:
- Zdefiniować
structo nazwieProductz następującymi składowymi:- Tablicę znaków
nameo rozmiarze 30 - Liczbę zmiennoprzecinkową
price - Liczbę całkowitą
stock
- Tablicę znaków
- Napisać funkcję o nazwie
findMostExpensive, która:- Przyjmuje jako parametry tablicę
struct Productoraz liczbę całkowitąsize - Zwraca liczbę całkowitą reprezentującą indeks produktu o najwyższej cenie
- Używa pętli do iterowania po wszystkich produktach i porównywania ich cen
- Zwraca indeks pierwszego znalezionego produktu o maksymalnej cenie
- Przyjmuje jako parametry tablicę
- Napisać funkcję o nazwie
calculateTotalValue, która:- Przyjmuje jako parametry tablicę
struct Productoraz liczbę całkowitąsize - Zwraca liczbę zmiennoprzecinkową reprezentującą całkowitą wartość zapasów
- Oblicza całkowitą wartość, sumując (cena × stan magazynowy) dla każdego produktu
- Przyjmuje jako parametry tablicę
- Napisać funkcję o nazwie
findLowStock, która:- Przyjmuje jako parametry tablicę
struct Product, liczbę całkowitąsizeoraz liczbę całkowitąthreshold - Zwraca liczbę całkowitą reprezentującą liczbę produktów, których stan magazynowy jest niższy od progu
- Używa pętli do zliczania produktów, których stan magazynowy jest mniejszy od wartości progu
- Przyjmuje jako parametry tablicę
- W funkcji głównej:
- Utworzyć tablicę 3 elementów typu
struct Producto nazwieinventory - Wczytać dane wejściowe dla każdego produktu w następującej kolejności: nazwa, cena, stan magazynowy
- Wypełnić tablicę wczytanymi danymi
- Wypisać informacje o każdym produkcie dokładnie w tym formacie:
Product [index]: [name] - Price: [price], Stock: [stock] - Wywołać funkcję
findMostExpensivei wypisać wynik dokładnie w tym formacie:Most expensive product: [name] - Wywołać funkcję
calculateTotalValuei wypisać wynik z dokładnie 2 miejscami po przecinku, dokładnie w tym formacie:Total inventory value: [total_value] - Wczytać liczbę całkowitą reprezentującą próg niskiego stanu magazynowego
- Wywołać funkcję
findLowStockz podanym progiem i wypisać wynik dokładnie w tym formacie:Products with low stock: [count] - Sprawdzić, czy stan magazynowy najdroższego produktu jest większy niż 10:
- Jeśli tak: wypisać
Most expensive product is well stocked - Jeśli nie: wypisać
Most expensive product needs restocking
- Jeśli tak: wypisać
- Utworzyć tablicę 3 elementów typu
To wyzwanie sprawdza Twoją umiejętność pracy z tablicami struktur, implementowania funkcji przetwarzających tablice struktur oraz wykonywania różnych obliczeń i porównań na danych strukturalnych. Przećwiczysz indeksowanie tablic struktur, projektowanie funkcji do przetwarzania danych oraz łączenie wielu operacji w celu analizowania informacji o zapasach.
Spróbuj swoich sił
#include <stdio.h>
#include <string.h>
// TODO: Zdefiniuj tutaj strukturę Product
// TODO: Zaimplementuj tutaj funkcję findMostExpensive
// TODO: Zaimplementuj tutaj funkcję calculateTotalValue
// TODO: Zaimplementuj tutaj funkcję findLowStock
int main() {
// Utwórz tablicę 3 produktów
struct Product inventory[3];
// Wczytaj dane każdego produktu
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: Wyświetl informacje o każdym produkcie
// TODO: Znajdź i wyświetl najdroższy produkt
// TODO: Oblicz i wyświetl łączną wartość zapasów
// Wczytaj próg niskiego stanu zapasów
int threshold;
scanf("%d", &threshold);
// TODO: Znajdź i wyświetl produkty o niskim stanie zapasów
// TODO: Sprawdź, czy najdroższy produkt jest dostępny w wystarczającej ilości
return 0;
}Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znakówPoćwicz samodzielnie: Kompilator C online