2013-01-31 42 views
0

當我編譯代碼時,它總是會導致最後一個else語句對我來說不明原因。我沒時間了,所以快速的幫助會派上用場。我承諾在我將任務交給eCourse後進行調查。如果else語句連接到子字符串使用會導致else語句只有用戶輸入

#include <iostream> 
#include <iomanip> 
#include <conio.h> 
#include <string> 
#include <string.h> 
using namespace std; 

int main() 
{ 
    string K; 
    cout << "Sisestage isikukood:\n "; 
    getline(cin, K); 
        /* Küsin kasutajalt isikukoodi*/ 
    std::string(str2) = K.substr (1,1); 
    std::string(str3) = K.substr (2,2); 
    std::string(str4) = K.substr (4,2); 
    std::string(str5) = K.substr (6,2); 
    std::string(str6) = K.substr (8,2); 
    cout << "Isikukoodi I andmed:\n "; 

    if (str2 == "1") 
    {     
     cout << " *mees\n"; 
    } 
    else if (str2 == "2") 
    {     
     cout << " *naine\n"; 
    } 
    else if (str2 == "3") 
    {     
     cout << " *mees\n"; 
    } 
    else if (str2 == "4") 
    {     
     cout << " *naine\n"; 
    } 
    else if (str2 == "5") 
    {     
     cout << " *mees\n"; 
    } 
    else if (str2 == "6") 
    { 
     cout << " *naine\n";   
    } 

    if (str2 == "2" || str2 == "1") 
    {     
     cout << "* sundis " << str3 << "." << str4 << "." << "18" << str5; 
    } 
    else if (str2 == "3" || str2 == "4") 
    {     
     cout << "* sundis " << str3 << "." << str4 << "." << "19" << str5; 
    } 
    else if (str2== "5" || str2 == "6") 
    {     
     cout << "* sundis " << str3 << "." << str4 << "." << "20" << str5; 
    } 

    if (str6 == "00") 
    {     
     cout << " * Kuressaare Haigla\n"; /* Leian haigla, kus on isikukoodi omanik sundinud */ 
    } 
    else if (str6== "02") 
    {     
     cout << " * Ida-Tallinna Keskhaigla, Hiiumaa, Keila, Rapla haigla\n"; 
    }  
    else if (str6 == "22") 
    {     
     cout << " * Ida-Viru Keskhaigla\n"; 
    } 
    else if (str6 == "27") 
    {     
     cout << " * Maarjamõisa Kliinikum,Jõgeva Haigla \n"; 
    } 
    else if (str6 == "37") 
    {     
     cout << " * Narva Haigla \n"; 
    }  
    else if (str6 == "42") 
    {     
     cout << " * Pärnu Haigla \n"; 
    }  
    else if (str6 == "47") 
    {     
     cout << " * Pelgulinna Sünnitusmaja , Haapsalu haigla \n"; 
    }    
    else if (str6 == "49") 
    {     
     cout << " * Järvamaa haigla \n"; 
    } 
    else if (str6 == "52") 
    {     
     cout << " * Rakvere, Tapa haigla \n"; 
    } 
    else if (str6 == "57") 
    {     
     cout<<" * Valga haigla \n"; 
    } 
    else if (str6 == "60") 
    {     
     cout << " * Viljandi haigla \n"; 
    } 
    else if (str6 == "65") 
    {     
     cout<<" * Lõuna-Eesti Haigla (Võru), Põlva Haigla \n"; 
    }      
    else 
    { 
     /*Tulemus,kui isikukood on sisestatud valesti*/ 
     cout << " Sisestasite isikukoodi " << K << " .Palun proovige uuesti.\n"; 
    } 
    getch(); 
    return 0; 
} 
+0

它必須是沒有任何條件評估爲真。 – PinkElephantsOnParade

+0

所以*首先*你想提交你的任務,然後*然後*瞭解它? –

+0

我在10分鐘的時間裏,所以我想我不會忘記我的錯誤向他們學習,但如果你的判斷能夠理解我的話。 – wutimbad

回答

2

你可以這樣做:

static std::map<std::string, std::string> message1 = /* Initialize once */; 
    static std::map<std::string, std::string> message2 = /* Initialize once */; 

    cout << message1[str2] << "\n"; 
    cout << message2[str2 + ":" + str6] << "\n"; 
+0

不太明白如何實現它,在cplusplus.com上有沒有一個頁面,因爲我做了快速搜索,沒有找到它。 – wutimbad