2014-03-02 70 views
-2

我想知道如何把這個如果else語句的開關語句。這是一個C++程序來出把整數正確的順序。我無法想出辦法。請提前幫忙。如何打開的if else語句switch語句

int x, y, z; 
cout << "please enter three integers:"; 
cin >> x >> y >> z; 
if (x <= y && y <= z) 
    cout << x << " " << y << " " << z << endl; 
else if (x <= z && z <= y) 
    cout << x << " " << z << " " << y << endl; 
else if (y <= z && z <= x) 
    cout << y << " " << z << " " << x << endl; 
else if (y <= x && x <= z) 
    cout << y << " " << x << " " << z << endl; 
else if (z <= x && x <= y) 
    cout << z << " " << x << " " << y << endl; 
else 
    cout << z << " " << y << " " << x << endl; 

if (x <= y) { 
    if (z <= x) { 
     cout << z << " " << x << " " << y << endl; 
    } else { 
     if (z <= y) { 
      cout << x << " " << z << " " << y << endl; 
     } else { 
      cout << x << " " << y << " " << z << endl; 
     } 
    } 
} else { 
    if (z >= x) { 
     cout << y << " " << x << " " << z << endl; 
    } else { 
     if (y >= z) { 
      cout << z << " " << y << " " << x << endl; 
     } else { 
      cout << y << " " << z << " " << x << endl; 
     } 
    } 
} 
+2

我覺得你缺乏格式化令人不安的... –

+0

如何將這個switch語句的工作?個案的價值是什麼?案例值是編譯時間常量,而不是運行時值。要麼堅持這些if()語句,要麼提出一個更好的解決方案。 – PaulMcKenzie

回答

0

在您的特定情況下的答案是you can't
你的if語句有特定的條件,其中,
就不是一個switch中真正發揮作用。

,可以是
翻譯成switchif/else if/else語句的一個例子是:

if(i == 1) { 
    // code here 
} else if(i == 2) { 
    // code here 
} else if(i == 3) { 
    // code here 
} else { 
    // code here 
} 

這將轉化爲:

switch(i) { 
    case 1: 
     //code here 
     break; 
    case 2: 
     //code here 
     break; 
    case 3: 
     //code here 
     break; 
    default: 
     //code here 
     break; 
} 

希望幫助了一下多瞭解一些關於switch的陳述。

3

這不是編寫程序的好方法。如果你需要4個整數呢? 其中一種方法是使用像std::vector這樣的列表並對其進行排序。

vector<int> numbers; 

int number = 0; 
while (numbers.size() < 3 && cin >> number) 
    numbers.push_back(number); 

sort(cbegin(numbers), cend(numbers)); // sorts ascending by default 

for (auto number : numbers) 
    cout << number << " "; 

cout << endl; 

您還可以使用std::multiset,它會在插入項目時自動對它們進行排序。

+0

這將成功填補0的數字像 「不是一個數字」輸入 –

+0

@Alex你說得對,我沒有輸入的評價打擾,我希望把重點放在程序流程。問題是關於if/switch結構,但我會編輯答案。 – Excelcius

1

而是這種方法的,你爲什麼不存儲輸入數組中,並嘗試任何排序算法的進行梳理你的輸入?

0

如果面臨的挑戰是,你不能分類編號,並且限制爲3點的整數,然後有更好的方式來完成自己在做什麼。

#include <iostream> 
using namespace std; 

int main() 
{ 
    int combo[6][3] = {{0,1,2},{0,2,1},{1,0,2},{1,2,0},{2,0,1},{2,1,0}}; 
    int values[3]; 
    cin >> values[0] >> values[1] >> values[2]; 
    for (int i = 0; i < 6; ++i) 
    { 
     if (values[combo[i][0]] <= values[combo[i][1]] && 
      values[combo[i][1]] <= values[combo[i][2]]) 
     { 
      cout << values[combo[i][0]] << " " << values[combo[i][1]] << 
       " " << values[combo[i][2]]; 
      break; 
     } 
    } 
} 

組合數組包含所有可能發生3個插槽的組合。還要注意輸入是一個數組。即使你沒有使用循環,就需要最大IF()語句是6

但是你必須提到了前面,這是一個挑戰,什麼限制都。否則,請查看有關存儲和分類這些數字的其他答案。

0

你只需要三個條件交換排序三個元素的列表:

int x, y, z; 
cout << "please enter three integers:"; 
cin >> x >> y >> z; 

if (y < x) swap(y, x); 
if (z < y) swap(z, y); 
if (y < x) swap(y, x); 

cout << x << " " << y << " " << z << endl; 

注意,這種方法不能擴展。對於10個號碼,您已經需要45個條件掉期。