🗺️ 计算机科学 4
第 26 关
🪙

许愿井 (Wishing Well)

Unit 2 Final Review

终极挑战:
学会计算总和 (Sum),精确控制数量。

🎯 关卡目标

1. 只要 104 金币:
不多不少,正好 104 枚。

2. 告诉井神:
太少?说 "Non satis"
太多?说 "Nimis"

3. 收集:
正好 104 时,全部捡走!

auto requiredGold = 104;

// 核心逻辑:累加求和
// Total Sum Algorithm
auto total = 0;
// 遍历数组,把每个 coin.value 加起来
total += coin.value;

🧮 编写求和函数 (sumCoinValues)

我们需要写一个函数,专门用来算地上有多少钱。

// 定义函数,接收硬币数组作为参数
auto sumCoinValues(auto coins) {
    int coinIndex = 0;
    auto totalValue = 0;  // 💰 存钱罐初始为 0

    // 🔄 遍历每一个硬币
    while (coinIndex < coins.size()) {
        auto coin = coins[coinIndex];
        
        // ➕ 把硬币的价值加进存钱罐
        totalValue += coin.value;
        
        coinIndex++;
    }
    
    // 📦 把算好的总数返回出去
    return totalValue;
}

🧠 主逻辑:判断多少

拿到总数 goldAmount 后,和 104 做比较。

  • < 104: 不够 (Non satis)
  • > 104: 太多 (Nimis)
  • == 104: 完美 (Collect!)
while (true) {
    auto items = hero.findItems();
    
    // 📞 调用刚才写的函数
    auto goldAmount = sumCoinValues(items);
    
    if (goldAmount != 0) {
        if (goldAmount < 104) {
            hero.say("Non satis");
        }
        if (goldAmount > 104) {
            hero.say("Nimis");
        }
        if (goldAmount == 104) {
            collectAllCoins();
        }
    }
}

🎓 第二单元毕业!

在这个单元,你掌握了编程中处理“一堆数据”的核心能力。

1. 数组 Array

一排排好队的数据。
items[0], items[1]...

2. 迭代 Iteration

while 循环和索引 index
把数组从头看到尾。

3. 累加 Accumulator

total += value
像存钱罐一样计算总和。

4. 最值 Min/Max

打擂台法:
谁更强/更近,谁就留下。