プロジェクトのセットアップ
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 33/65。
チャレンジ
簡単実際のアプリケーションでさまざまなデータ構造がどのように連携して機能するかを示す、シンプルなショッピングカート計算機を作成します。
eコマースアプリケーションに必要な基本的なデータ構造を初期化することで、ショッピングカート計算システムの基礎を構築するプログラムを作成してください。プログラムは以下の処理を行う必要があります:
- 店舗名を表す文字列の入力を読み込む
- 商品名とその価格を表す複数の入力ペアを読み込む(入力は
"products_done"を受け取った時点で終了します) - 商品名をキー、価格を値として、利用可能な商品を格納する Map を作成する
- ショッピングカートを表す空の List を作成する
- 初期設定情報を表示し、データ構造が適切に初期化されていることを確認する
- 以下に示す正確な形式で店舗設定レポートを出力する
例えば、店舗名が "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: 統計を計算し、レポートを生成するためのコードを以下に記述してください
// 店舗設定レポートを出力する
// 出力は例に示されている正確な形式と一致する必要があります
}論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー