2013-01-31 40 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