Sepeti listeleme
- C kursu
- Başlangıç
- Ders 51/116
- 6 dk
Sepetteki ürünleri formatlı yazdıran fonksiyonu yazarsın.
cart_list fonksiyonu
Bu derste cart_list fonksiyonunu yazacağız. Bu fonksiyon sepetteki tüm öğeleri biçimli biçimde yazdırır.
void cart_list(void) {
for (int i = 0; i < cart_size; i++) {
printf("%s %.2f x %d = %.2f\n",
cart[i].name, cart[i].price, cart[i].qty,
cart[i].price * cart[i].qty);
}
}Her satır bir öğeyi gösterir: ad, fiyat, miktar ve ara toplam. Bu çıktı kullanıcıya sepette ne olduğunu anlatır. for ile dolaşıp her satırı yazdırırız.
Biçimli çıktı
Para değerlerini yazdırırken %.2f kullanmak iyi bir alışkanlıktır; bu, iki ondalık basamak gösterir. Para birimi genelde iki basamakla gösterilir.
printf("%s %.2f x %d = %.2f\n",
"Elma", 2.50, 3, 7.50);
// Çıktı: Elma 2.50 x 3 = 7.50Burada %s ad, %.2f fiyat, %d miktar ve son %.2f ara toplam. Belirteç sırası değişken sırasıyla aynı olmalı.
Uygulama Sepeti listele
cart_list fonksiyonunu yaz: void cart_list(void). for (int i = 0; i < cart_size; i++) ile her öğeyi printf("%s %.2f x %d = %.2f\n", cart[i].name, cart[i].price, cart[i].qty, cart[i].price * cart[i].qty); ile yazdır. main zaten cart_list() çağrıyor; sen yalnızca fonksiyonu tamamla. Beklenen çıktı: Elma 2.50 x 3 = 7.50 / Ekmek 5.00 x 1 = 5.00.
Başlangıç kodu
#include <stdio.h>
#include <string.h>
#define MAX_ITEMS 10
struct CartItem {
char name[32];
double price;
int qty;
};
struct CartItem cart[MAX_ITEMS];
int cart_size = 0;
void cart_add(const char *name, double price, int qty) {
if (cart_size >= MAX_ITEMS) return;
strcpy(cart[cart_size].name, name);
cart[cart_size].price = price;
cart[cart_size].qty = qty;
cart_size++;
}
double cart_subtotal(void) {
double sum = 0;
for (int i = 0; i < cart_size; i++) {
sum += cart[i].price * cart[i].qty;
}
return sum;
}
// cart_list fonksiyonunu buraya yaz
int main(void) {
cart_add("Elma", 2.50, 3);
cart_add("Ekmek", 5.00, 1);
cart_list();
return 0;
}Örnek çözüm
#include <stdio.h>
#include <string.h>
#define MAX_ITEMS 10
struct CartItem {
char name[32];
double price;
int qty;
};
struct CartItem cart[MAX_ITEMS];
int cart_size = 0;
void cart_add(const char *name, double price, int qty) {
if (cart_size >= MAX_ITEMS) return;
strcpy(cart[cart_size].name, name);
cart[cart_size].price = price;
cart[cart_size].qty = qty;
cart_size++;
}
double cart_subtotal(void) {
double sum = 0;
for (int i = 0; i < cart_size; i++) {
sum += cart[i].price * cart[i].qty;
}
return sum;
}
void cart_list(void) {
for (int i = 0; i < cart_size; i++) {
printf("%s %.2f x %d = %.2f\n", cart[i].name, cart[i].price, cart[i].qty, cart[i].price * cart[i].qty);
}
}
int main(void) {
cart_add("Elma", 2.50, 3);
cart_add("Ekmek", 5.00, 1);
cart_list();
return 0;
}Beklenen çıktı
Elma 2.50 x 3 = 7.50 Ekmek 5.00 x 1 = 5.00
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Liste parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
%s |
Ad |
%.2f |
Fiyat |
%d |
Miktar |
price * qty |
Ara toplam |
2 cart_list ne yazdırır?
void cart_list(void) {
for (...) {
printf("%s %.2f x %d", ...);
}
}- Yalnızca ad
- Yalnızca fiyat
- Yalnızca miktar
- Ad, fiyat, miktar ve ara toplam Doğru cevap
Açıklama: cart_list her öğenin tüm bilgilerini yazdırır.
3 Öğe adını yazdır
printf("____ %.2f x %d = %.2f
", cart[i].name, cart[i].price, cart[i].qty, cart[i].price * cart[i].qty);
printf("%s %.2f x %d = %.2f
", cart[i].name, cart[i].price, cart[i].qty, cart[i].price * cart[i].qty);
Açıklama: %s dize (öğe adı) için kullanılır.