Menu
Coddy logo textTech

Öğe Satma

Coddy'nin Rust Journey'sinin Logic & Flow bölümünün bir parçası — ders 52 / 66.

challenge icon

Görev

Kolay

Beş girdi alacaksınız. İlk girdi satılacak ürünün adıdır. İkinci girdi satılacak miktardır. Üçüncü girdi envanterdeki ürün adlarının virgülle ayrılmış bir listesidir. Dördüncü girdi her bir ürüne karşılık gelen fiyatların virgülle ayrılmış bir listesidir. Beşinci girdi her bir ürüne karşılık gelen miktarların virgülle ayrılmış bir listesidir. Anahtarın ürün adı ve değerin fiyat ile miktarı içeren bir demet (tuple) (f64, i32) olduğu envanter verilerini saklamak için bir HashMap oluşturun. Ardından ürünün istenen miktarını satmaya çalışın.

Gereksinimler:

  • std::collections modülünden HashMap yapısını içe aktarın
  • İlk girdiyi (satılacak ürün adı) okuyun ve boşlukları temizleyin
  • İkinci girdiyi (satılacak miktar) okuyun ve boşlukları temizleyin
  • Satılacak miktarı i32 türüne dönüştürün
  • Üçüncü girdiyi (virgülle ayrılmış ürün adları) okuyun ve boşlukları temizleyin
  • Dördüncü girdiyi (virgülle ayrılmış fiyatlar) okuyun ve boşlukları temizleyin
  • Beşinci girdiyi (virgülle ayrılmış miktarlar) okuyun ve boşlukları temizleyin
  • Envanter için değiştirilebilir bir HashMap<String, (f64, i32)> oluşturun
  • Ürün adlarını virgüllere göre ayırın
  • Fiyatları virgüllere göre ayırın ve her birini f64 türüne dönüştürün
  • Miktarları virgüllere göre ayırın ve her birini i32 türüne dönüştürün
  • Her bir ürünü, karşılık gelen fiyatı ve miktarıyla birlikte bir demet olarak envantere ekleyin
  • İstenen ürünün envanterde olup olmadığını kontrol etmek için .get() metodunu kullanın
  • .get() tarafından döndürülen Option değerini işlemek için bir match ifadesi kullanın
  • Some kolunda:
    • Demetten fiyatı ve mevcut miktarı çıkarın
    • Mevcut miktarın satılacak miktardan büyük veya eşit olup olmadığını kontrol edin
    • Eğer öyleyse:
      • Mevcut miktardan satılacak miktarı çıkararak yeni miktarı hesaplayın
      • Ürün fiyatını satılacak miktarla çarparak toplam fiyatı hesaplayın
      • Envanteri yeni miktarla güncellemek için .insert() metodunu kullanın
      • Yazdırın: Sold [quantity_to_sell] [item_name]
      • Yazdırın: Total: $[total_price]
      • Yazdırın: Remaining stock: [new_quantity]
    • Eğer değilse (yetersiz stok):
      • Yazdırın: Insufficient stock for [item_name]
      • Yazdırın: Available: [current_quantity]
  • None kolunda şunu yazdırın: [item_name] is not in stock

Girdi:

  • Birinci satır: Satılacak ürün adı (örneğin, Mouse)
  • İkinci satır: Satılacak miktar (örneğin, 10)
  • Üçüncü satır: Virgülle ayrılmış ürün adları (örneğin, Laptop,Mouse,Keyboard)
  • Dördüncü satır: Virgülle ayrılmış fiyatlar (örneğin, 999.99,25.50,75.00)
  • Beşinci satır: Virgülle ayrılmış miktarlar (örneğin, 15,50,30)

Çıktı:

  • Ürün mevcutsa ve yeterli stok varsa:
    • Birinci satır: Sold [quantity_to_sell] [item_name]
    • İkinci satır: Total: $[total_price]
    • Üçüncü satır: Remaining stock: [new_quantity]
  • Ürün mevcutsa ancak yetersiz stok varsa:
    • Birinci satır: Insufficient stock for [item_name]
    • İkinci satır: Available: [current_quantity]
  • Ürün mevcut değilse: [item_name] is not in stock

Kendin dene

use std::collections::HashMap;
use std::io;

fn main() {
    // Girdiyi oku
    let mut item_to_sell = String::new();
    io::stdin().read_line(&mut item_to_sell).expect("Failed to read line");
    let item_to_sell = item_to_sell.trim();
    
    let mut quantity_to_sell_input = String::new();
    io::stdin().read_line(&mut quantity_to_sell_input).expect("Failed to read line");
    let quantity_to_sell: i32 = quantity_to_sell_input.trim().parse().expect("Invalid number");
    
    let mut item_names_input = String::new();
    io::stdin().read_line(&mut item_names_input).expect("Failed to read line");
    let item_names_input = item_names_input.trim();
    
    let mut prices_input = String::new();
    io::stdin().read_line(&mut prices_input).expect("Failed to read line");
    let prices_input = prices_input.trim();
    
    let mut quantities_input = String::new();
    io::stdin().read_line(&mut quantities_input).expect("Failed to read line");
    let quantities_input = quantities_input.trim();
    
    // TODO: Kodunuzu aşağıya yazın
    // Envanteri saklamak için bir HashMap oluşturun
    // Girdileri işleyin ve envanteri oluşturun
    // Öğenin mevcut olup olmadığını kontrol edin ve satışı gerçekleştirin
    
}

Logic & Flow bölümündeki tüm dersler