Menu
Coddy logo textTech

プロジェクトのセットアップ

CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 33/65。

challenge icon

チャレンジ

簡単

実際のアプリケーションでさまざまなデータ構造がどのように連携して機能するかを示す、シンプルなショッピングカート計算機を作成します。

eコマースアプリケーションに必要な基本的なデータ構造を初期化することで、ショッピングカート計算システムの基礎を構築するプログラムを作成してください。プログラムは以下の処理を行う必要があります:

  1. 店舗名を表す文字列の入力を読み込む
  2. 商品名とその価格を表す複数の入力ペアを読み込む(入力は "products_done" を受け取った時点で終了します)
  3. 商品名をキー、価格を値として、利用可能な商品を格納する Map を作成する
  4. ショッピングカートを表す空の List を作成する
  5. 初期設定情報を表示し、データ構造が適切に初期化されていることを確認する
  6. 以下に示す正確な形式で店舗設定レポートを出力する

例えば、店舗名が "Fresh Market" で、商品に価格 1.50"Apple"、価格 0.80"Banana"、価格 2.00"Orange"、価格 3.25"Milk" が含まれる場合、プログラムは以下のように出力する必要があります:

Store: Fresh Market
Product Catalog Setup:
Available Products: {Apple: 1.5, Banana: 0.8, Orange: 2.0, Milk: 3.25}
Shopping Cart Initialized: []
System Status:
Total products available: 4
Cart status: Empty
Most expensive item: Milk ($3.25)
Cheapest item: Banana ($0.80)
Average product price: $1.84
Setup Status: Shopping cart system ready for customers

店舗名が "Tech Store" で、商品に価格 999.99"Laptop"、価格 25.50"Mouse"、価格 75.00"Keyboard" が含まれる場合、プログラムは以下のように出力する必要があります:

Store: Tech Store
Product Catalog Setup:
Available Products: {Laptop: 999.99, Mouse: 25.5, Keyboard: 75.0}
Shopping Cart Initialized: []
System Status:
Total products available: 3
Cart status: Empty
Most expensive item: Laptop ($999.99)
Cheapest item: Mouse ($25.50)
Average product price: $366.83
Setup Status: Shopping cart system ready for customers

店舗名が "Book Corner" で、商品に価格 12.99"Novel"、価格 4.50"Magazine"、価格 89.00"Textbook"、価格 3.99"Comic"、価格 15.75"Journal" が含まれる場合、プログラムは以下のように出力する必要があります:

Store: Book Corner
Product Catalog Setup:
Available Products: {Novel: 12.99, Magazine: 4.5, Textbook: 89.0, Comic: 3.99, Journal: 15.75}
Shopping Cart Initialized: []
System Status:
Total products available: 5
Cart status: Empty
Most expensive item: Textbook ($89.00)
Cheapest item: Comic ($3.99)
Average product price: $25.25
Setup Status: Shopping cart system ready for customers

プログラムでは、String のキー(商品名)と double の値(価格)を持つ Map と、ショッピングカート用の空の String の List を作成する必要があります。商品 Map 内のすべての価格を比較して、最も高い商品と最も安い商品を見つけてください。すべての価格の合計を商品数で割って平均価格を計算します。表示用に平均価格を小数点以下2桁で四捨五入してください。入力形式は、店舗名、次に商品名と価格(double に変換する必要がある文字列として)が交互に続き、最後に "products_done" が入力されます。

自分で試してみよう

import 'dart:io';

void main() {
  // 店舗名を読み込む
  String? storeName = stdin.readLineSync();
  
  // データ構造を初期化する
  Map<String, double> products = {};
  List<String> shoppingCart = [];
  
  // "products_done" まで商品を読み込む
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "products_done") {
      break;
    }
    String productName = input!;
    String? priceInput = stdin.readLineSync();
    double price = double.parse(priceInput!);
    
    // 商品をマップに追加する
    products[productName] = price;
  }
  
  // TODO: 統計を計算し、レポートを生成するためのコードを以下に記述してください
  
  // 店舗設定レポートを出力する
  // 出力は例に示されている正確な形式と一致する必要があります
}

論理とフローのすべてのレッスン