Tekrar: Struct Dizisi
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 62 / 63.
Görev
KolayBir yapı (struct) dizisi kullanarak bir ürün envanter sistemini yöneten bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki üyelere sahip
Productadında birstructtanımlayın:- 30 boyutunda bir karakter dizisi
name - Bir float
price - Bir tam sayı
stock
- 30 boyutunda bir karakter dizisi
- Şu özelliklere sahip
findMostExpensiveadında bir fonksiyon yazın:- Parametre olarak bir
struct Productdizisi ve bir tam sayısizealır - En yüksek fiyata sahip ürünün indeksini temsil eden bir tam sayı döndürür
- Tüm ürünleri dolaşmak ve fiyatlarını karşılaştırmak için bir döngü kullanır
- Maksimum fiyata sahip bulunan ilk ürünün indeksini döndürür
- Parametre olarak bir
- Şu özelliklere sahip
calculateTotalValueadında bir fonksiyon yazın:- Parametre olarak bir
struct Productdizisi ve bir tam sayısizealır - Toplam envanter değerini temsil eden bir float döndürür
- Her ürün için (fiyat × stok) değerlerini toplayarak toplam değeri hesaplar
- Parametre olarak bir
- Şu özelliklere sahip
findLowStockadında bir fonksiyon yazın:- Parametre olarak bir
struct Productdizisi, bir tam sayısizeve bir tam sayıthresholdalır - Stoku eşik değerinin (threshold) altında olan ürünlerin sayısını temsil eden bir tam sayı döndürür
- Stok miktarının eşik değerinden az olduğu ürünleri saymak için bir döngü kullanır
- Parametre olarak bir
- Ana fonksiyonda (main function):
inventoryadında 3 elemanlı birstruct Productdizisi oluşturun- Her ürün için şu sırayla girdi okuyun: name, price, stock
- Diziyi girdi verileriyle doldurun
- Her ürünün bilgisini tam olarak şu formatta yazdırın:
Product [index]: [name] - Price: [price], Stock: [stock] findMostExpensivefonksiyonunu çağırın ve sonucu tam olarak şu formatta yazdırın:Most expensive product: [name]calculateTotalValuefonksiyonunu çağırın ve sonucu tam olarak 2 ondalık basamakla şu formatta yazdırın:Total inventory value: [total_value]- Düşük stok eşiğini temsil eden bir tam sayı okuyun
- Eşik değeriyle
findLowStockfonksiyonunu çağırın ve sonucu tam olarak şu formatta yazdırın:Products with low stock: [count] - En pahalı ürünün stok miktarının 10'dan büyük olup olmadığını kontrol edin:
- Eğer öyleyse:
Most expensive product is well stockedyazdırın - Eğer değilse:
Most expensive product needs restockingyazdırın
- Eğer öyleyse:
Bu görev, yapı dizileriyle çalışma, yapı dizilerini işleyen fonksiyonlar uygulama ve yapılandırılmış veriler üzerinde çeşitli hesaplamalar ve karşılaştırmalar yapma yeteneğinizi test eder. Yapılarla dizi indeksleme, veri işleme için fonksiyon tasarımı ve envanter bilgilerini analiz etmek için birden fazla işlemi birleştirme pratiği yapacaksınız.
Kendin dene
#include <stdio.h>
#include <string.h>
// TODO: Product yapısını burada tanımlayın
// TODO: findMostExpensive fonksiyonunu burada uygulayın
// TODO: calculateTotalValue fonksiyonunu burada uygulayın
// TODO: findLowStock fonksiyonunu burada uygulayın
int main() {
// 3 üründen oluşan dizi oluştur
struct Product inventory[3];
// Her ürün için girdi oku
for (int i = 0; i < 3; i++) {
scanf("%s", inventory[i].name);
scanf("%f", &inventory[i].price);
scanf("%d", &inventory[i].stock);
}
// TODO: Her ürünün bilgisini yazdır
// TODO: En pahalı ürünü bul ve yazdır
// TODO: Toplam envanter değerini hesapla ve yazdır
// Düşük stok eşiğini oku
int threshold;
scanf("%d", &threshold);
// TODO: Düşük stoklu ürünleri bul ve yazdır
// TODO: En pahalı ürünün stok durumunun yeterli olup olmadığını kontrol et
return 0;
}Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları