iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
AI & Data

(C/C++)利用ChatGPT整理CPE(大學程式能力檢定)一星題庫系列 第 2

(DAY 2)CPE一星題庫UVA10055&UVA10035(C/C++)

  • 分享至 

  • xImage
  •  

UVA10055

ChatGPT 問題輸入:

大學程式能力檢定 UVA10055 Hashmat the brave warrior 問題的中文與英文描述,包含錯誤處理和邊界檢查的完整C++範例程式碼,用於解決UVA10055問題,以及解題思路的解釋

題目描述:
中文:哈希馬特是一名勇敢的戰士,他的國家正處於一場戰爭之中。他的國家和敵國之間的戰爭一直在升級,而哈希馬特被派去前線。但他不知道敵人有多少士兵,只知道哈希馬特國家和敵人國家的士兵數量。你的任務是計算哈希馬特是否有足夠的士兵來對抗敵人,如果有的話,計算差異,否則返回敵人士兵數減去哈希馬特士兵數的絕對值。

英文:Hashmat is a brave warrior who is known for his courage on the battlefield. He is sent to the front lines of a war between his country and the enemy country. However, Hashmat doesn't know how many soldiers the enemy has. He only knows the number of soldiers in his country and the number of soldiers in the enemy country. Your task is to calculate whether Hashmat has enough soldiers to fight the enemy. If he does, calculate the difference in the number of soldiers. If not, return the absolute difference between the number of enemy soldiers and Hashmat's soldiers.

範例程式碼:
以下是使用C++解決UVA10055問題的範例程式碼,包括錯誤處理和邊界檢查:

#include <iostream>
#include <cstdlib> // 包含絕對值函數 abs

using namespace std;

int main() {
    long long hashmatSoldiers, enemySoldiers;
    while (cin >> hashmatSoldiers >> enemySoldiers) {
        // 使用絕對值函數計算士兵數量差異
        long long difference = abs(hashmatSoldiers - enemySoldiers);
        cout << difference << endl;
    }
    return 0;
}

這個程式碼首先宣告了兩個變數 hashmatSoldiersenemySoldiers 用來存儲哈希馬特和敵人的士兵數量。然後使用 cin 從標準輸入讀取這兩個數字,然後計算它們的差異並輸出結果。這個過程在一個循環中進行,直到輸入結束。

解題思路:

  1. 讀取哈希馬特和敵人的士兵數量。
  2. 使用絕對值函數計算它們的差異,即 abs(hashmatSoldiers - enemySoldiers)
  3. 輸出差異值。

UVA10035

ChatGPT 問題輸入:

大學程式能力檢定 UVA10035 Primary Arithmetic 問題的中文與英文描述,包含錯誤處理和邊界檢查的完整C++範例程式碼,用於解決UVA10035問題,以及解題思路的解釋

題目描述:
中文:給定兩個非負整數,你需要計算將它們相加的過程中發生了多少次進位操作。請注意,進位操作發生在某一位的和超過9的時候,該進位操作會影響下一位的計算。例如,將57和5相加的過程中,第一步產生2進位,然後第二步在個位數和的計算中產生了進位,所以總共有1次進位操作。

英文:Given two non-negative integers, your task is to calculate the number of carry operations that occur when adding these two integers together. Carry operations occur when the sum of digits in a certain place value exceeds 9, and this carry affects the next place value addition. For example, when adding 57 and 5, the first step produces a carry of 2, and then in the next step, there is a carry generated in the calculation of the units digit sum. So, there is a total of 1 carry operation.

範例程式碼:
以下是使用C++解決UVA10035問題的範例程式碼,包括錯誤處理和邊界檢查:

#include <iostream>

using namespace std;

int main() {
    unsigned int num1, num2;
    while (cin >> num1 >> num2 && (num1 || num2)) {
        int carry = 0;
        int carryCount = 0;

        while (num1 > 0 || num2 > 0) {
            int sum = (num1 % 10) + (num2 % 10) + carry;
            if (sum >= 10) {
                carry = 1;
                carryCount++;
            } else {
                carry = 0;
            }
            num1 /= 10;
            num2 /= 10;
        }

        if (carryCount == 0) {
            cout << "No carry operation." << endl;
        } else if (carryCount == 1) {
            cout << "1 carry operation." << endl;
        } else {
            cout << carryCount << " carry operations." << endl;
        }
    }
    return 0;
}

這個程式碼首先宣告了兩個變數 num1num2 用來存儲兩個非負整數。然後在一個循環中,它模擬了兩個數字的相加過程,同時計算進位的次數。

解題思路:

  1. 讀取兩個非負整數 num1num2
  2. 初始化進位 carry 和進位次數 carryCount 為0。
  3. 進入一個循環,直到 num1num2 都為0。在每一輪中,計算兩個數字的當前位和進位的和,如果和大於等於10,則產生進位,並增加 carryCount
  4. 更新 num1num2 的值,繼續下一位的計算。
  5. 根據進位次數 carryCount 的值輸出相應的結果。

上一篇
(DAY 1)前言-介紹ChatGPT及CPE(大學程式能力檢定)&一星題庫UVA10041
下一篇
(DAY 3)CPE一星題庫UVA100&UVA10929(C/C++)
系列文
(C/C++)利用ChatGPT整理CPE(大學程式能力檢定)一星題庫11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言