iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

UVA490

ChatGPT 問題輸入:

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

UVA490問題是一個關於旋轉句子的問題,你需要根據給定的句子,將其旋轉90度並輸出。以下是這個問題的中文和英文描述:

問題描述:
中文:給定一個由多個句子組成的文本,請將每個句子進行90度的旋轉,然後輸出旋轉後的文本。
英文:Given a text consisting of multiple sentences, rotate each sentence 90 degrees and output the rotated text.
範例程式碼:
現在,讓我們提供一個C++範例程式碼來解決這個問題,包括錯誤處理和邊界檢查。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<string> sentences;
    string input;

    // 逐行讀取輸入文本
    while (getline(cin, input)) {
        if (input.empty()) {
            // 遇到空行表示一個句子的結尾
            continue;
        }
        sentences.push_back(input);
    }

    int max_length = 0;

    // 找到最長的句子長度
    for (const string& sentence : sentences) {
        max_length = max(max_length, static_cast<int>(sentence.length()));
    }

    int num_sentences = sentences.size();

    // 進行90度旋轉輸出
    for (int i = 0; i < max_length; ++i) {
        for (int j = num_sentences - 1; j >= 0; --j) {
            if (i < sentences[j].length()) {
                cout << sentences[j][i];
            } else {
                cout << " ";
            }
        }
        cout << endl;
    }

    return 0;
}

這個程式碼會讀取輸入文本,找到最長的句子長度,然後進行90度旋轉並輸出結果。

解題思路:

  1. 讀取輸入文本,將每個句子存儲在vector中。
  2. 找到最長的句子長度,以確保旋轉時不會越界。
  3. 使用嵌套迴圈,從右向左遍歷每個句子的每個字符,根據字符位置進行90度旋轉輸出。

UVA272

ChatGPT 問題輸入:

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

問題描述
中文:給定一段文本,請將文本中的所有引號(")轉換為TeX格式的引號()。文本中的引號可能是雙引號(")或單引號(')。 英文:Given a text, convert all double quotes (") in the text to TeX-style double quotes (). The text may contain both double quotes (") and single quotes (').

範例程式碼:
現在,讓我們提供一個C++範例程式碼來解決這個問題,包括錯誤處理和邊界檢查。

#include <iostream>
#include <string>

using namespace std;

int main() {
    string input;
    bool openQuote = true; // Flag to keep track of open and close quotes

    while (getline(cin, input)) {
        for (char c : input) {
            if (c == '"') {
                if (openQuote) {
                    cout << "``"; // Replace open double quote with TeX-style quotes
                } else {
                    cout << "''"; // Replace close double quote with TeX-style quotes
                }
                openQuote = !openQuote; // Toggle the flag
            } else {
                cout << c; // Output other characters as is
            }
        }
        cout << endl;
    }

    return 0;
}

這個程式碼會逐行讀取輸入文本,處理每個字符,並根據引號的狀態(開或關)將雙引號轉換為TeX格式的引號。其他字符保持不變。

解題思路:

  1. 使用一個布爾變數(openQuote)來追蹤引號的狀態。初始情況下,假設引號是打開的。
  2. 逐字符遍歷每行文本,如果遇到雙引號,根據openQuote的狀態將其轉換為TeX格式的引號,然後切換openQuote的值。
  3. 將處理後的字符輸出到標準輸出。

上一篇
(DAY 6)CPE一星題庫UVA11332&UVA10252(C/C++)
下一篇
(DAY 8)CPE一星題庫UVA12019&UVA10038(C/C++)
系列文
(C/C++)利用ChatGPT整理CPE(大學程式能力檢定)一星題庫11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言