簡體   English   中英

我正在嘗試從書中做一個練習:編程——使用 C++ 的原則和實踐(第二版)

[英]I'm trying to do an exercise from the book :Programming -- Principles and Practice Using C++ (Second Edition)

編寫一個程序,提示用戶輸入三個整數值,然后以逗號分隔的數字順序輸出這些值。 因此,如果用戶輸入值 10 4 6,則輸出應為 4, 6, 10。如果兩個值相同,則應將它們排列在一起。 因此,輸入 4 5 4 應該給出 4, 4, 5。


int main()
{
    cout << "Please enter three integer values seperated by a space (press 'enter' when done):\n";   //prompt
    int val1, val2, val3 = 0;
    cin >> val1 >> val2 >> val3;
    if (val1 <= val2 && val2 <= val3)
    {
        cout << val1 << ", " << val2 << ", " << val3 << "\n";
    }
    if (val1 >= val2 && val2 >= val3)
    {
        cout << val3 << ", " << val2 << ", " << val1 << "\n";
    }
    if (val2 <= val3 && val3 <= val1)
    {
        cout << val2 << ", " << val3 << ", " << val1 << "\n";
    }
    if (val3 <= val1 && val1 <= val2)
    {
        cout << val3 << ", " << val1 << ", " << val2 << "\n";
    }
    if (val1 <= val3 && val3 <= val2)
    {
        cout << val1 << ", " << val3 << ", " << val2 << "\n";
    }
    if (val2 <= val1 && val1 <= val3)
    {
        cout << val2 << ", " << val1 << ", " << val3 << "\n";
    }
}

該程序適用於所有值。 我遇到的唯一問題是:當我輸入諸如2 2 3 之類的重復值時,我會收到兩次輸出 2, 2, 3 而不是一次。 對不起,我沒有評論任何一行。 這似乎不言自明,我不知道我會評論什么。

保持你的邏輯,你應該使用else if

if (val1 <= val2 && val2 <= val3)
{
    cout << val1 << ", " << val2 << ", " << val3 << "\n";
}
else if (val1 >= val2 && val2 >= val3)
{
    cout << val3 << ", " << val2 << ", " << val1 << "\n";
}
else if (val2 <= val3 && val3 <= val1)
{
    cout << val2 << ", " << val3 << ", " << val1 << "\n";
}
else if (val3 <= val1 && val1 <= val2)
{
    cout << val3 << ", " << val1 << ", " << val2 << "\n";
}
else if (val1 <= val3 && val3 <= val2)
{
    cout << val1 << ", " << val3 << ", " << val2 << "\n";
}
else if (val2 <= val1 && val1 <= val3)
{
    cout << val2 << ", " << val1 << ", " << val3 << "\n";
}

但可以簡化為

int values[3];

for (int& value : values)
    std::cin >> value;
std::sort(std::begin(values), std::end(values));
const char* sep = "";
for (int value : values) {
    std::cout << sep << value;
    sep = ", ";
}
std::cout << std::endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM