2014-09-26 53 views
0

當我嘗試在Microsoft Visual Studio C++上運行此代碼時;它運行但是輸出的成本值是錯誤的。這是爲什麼?我意識到我沒有包括一個默認語句,並且我聲明瞭cost兩次,這是因爲我得到的調試錯誤cost沒有聲明值,所以我假設的是switch語句沒有處理,因爲它有些如何不理解
cout << "Pizza"; 我該如何解決這個問題?開關語句輸出成本錯誤值

#include "stdafx.h" 
#include <iostream> 
#include <iomanip> 
#include <cmath> 
#include <cstdlib> 
#include <time.h> 
#include <Windows.h> 
#include <string> 

using namespace std; 

int main() 
{ 
    int a, b, c, d, e, f, m, p, k, User_Input, Pizza , cost; 
    a = 0; 
    b = 0; 
    c = 0; 
    d = 0; 
    e = 0; 
    f = 0; 
    k = 0; 
    cost = 0; 

    cout << "What is your favorite vegetarian food from the list below?" << endl; 
    Sleep(1500); 
    cout << "Pizza\n"; 
    Sleep(200); 
    cout << "IceCream\n"; 

    cin >> User_Input; 
    switch (User_Input) 
    { 
    case 1: 
     cout << "Pizza"; 
     cost = 5; 
     break; 
    case 2: 
     cout << "IceCream"; 
     cost = 5; 
     break; 

    } 


    Sleep(2000); 
    cout << "The total cost will be: " << cost; 
    cout << "\n\n\n\t\t\t"; 

    return 0; 


} 
+0

你說它輸出了錯誤的值,你認爲正確的值是什麼? – jonynz 2014-09-26 16:26:30

+0

錯誤的值是否意味着它沒有輸出任何內容? – 2014-09-26 16:26:53

+0

如果您在提示時說出了您輸入程序的內容,以及您實際得到的結果是什麼,而不是僅僅說「它給我錯誤的價值」,那將會很方便。順便說一下,'case'項目都將'cost'設置爲'5'。 – lurker 2014-09-26 16:28:15

回答

2

User_Input是「int」類型,如果您嘗試通過cin讀取字符串到該變量,您將獲得意想不到的結果。你可能想要做什麼或者是:

  • 讀入一個字符串,做一個字符串比較
  • 讀入到一個字符串轉換爲int,並做switch語句

簡化例如:

#include <iostream> 
#include <string> 
int main() 
{ 
     std::string user_input; 
     int cost = 0; 
     std::cout << "What is your favorite vegetarian food from the list below?\nPizza\nIceCream\n"; 
     std::cin >> user_input; 
     if(user_input == "Pizza") { 
       cost = 5; 
     } else if (user_input == "IceCream") { 
       cost = 10; 
     } 
     std::cout << "The total cost will be: " << cost << std::endl; 
     return 0; 
} 
+0

我upvoted。我更喜歡你提出的高級選項#2。在過去的C程序中,我使用了像DJB2這樣的哈希函數(任何具有低衝突的好散列算法都可以)。 – 2014-09-26 17:14:43