2013-04-06 261 views
-6
#include "iostream" 
using namespace std; 

int main() 
{ 
int a,d,D,c,C,b,B,r,R; 
char f,y,Y,n,N; 

cout << "Press D - d, for dog,C -c for cat, B - b, for bird or R - r for Reptile:"; 
cin >> a; 

if (a == d || a == D || a == c || a == C || a == b || a == B || a == r || a == R); 

     if (a == d || a == D || a == c || a == C) 

       if (a == d || a == D) 
       cout << "Is it neutered(Y/N)"; 
     cin >> f; 
     if (f == Y || f == y) 
       cout << "50 Euros."; 
     else if (f == n || f == N) 
       cout << "80 Euros."; 

     if (a == c || a == C) 
       cout << "Is it neutered(Y/N)"; 
     cin >> f; 
     if (f == Y || f == y) 
       cout << "40 Euros."; 
     else if (f == n || f == N) 
       cout << "60 Euros."; 
     if (a == r || a == R || a == B || a == b) 
       cout <<"10 Euros."; 

if (a != d && a != D && a != c && a != C && a != b && a != B && a != r && a != R) 
       cout << "Error!"; 

     system("pause"); 


     return 0;} 

錯誤我得到:C++堆棧:未初始化的局部變量

...\12b.cpp(21): warning C4390: ';' : empty controlled statement found; is this the intent? 
...\12b.cpp(20): error C4700: uninitialized local variable 'd' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'D' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'c' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'C' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'b' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'B' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'r' used 
...\12b.cpp(20): error C4700: uninitialized local variable 'R' used 
...\12b.cpp(25): error C4700: uninitialized local variable 'Y' used 
...\12b.cpp(25): error C4700: uninitialized local variable 'y' used 
...\12b.cpp(27): error C4700: uninitialized local variable 'n' used 
...\12b.cpp(27): error C4700: uninitialized local variable 'N' used 

爲什麼會出現這個錯誤?我不明白?

+0

嗯,因爲你沒有初始化任何變量,所以你使用了它們,並且在你的if語句結尾處有';'。 – 2013-04-06 21:42:16

+1

我認爲你對輸入有一個重大的誤解。你認爲由'int a,d,D,c,C,b,B,r,R'定義的變量與用戶的輸入有什麼關係?除了'a'之外,你不使用它們中的任何一個。 – 2013-04-06 21:43:49

+0

請直接在您的問題中發佈代碼,而不是外部鏈接。 – 2013-04-06 21:44:08

回答

3

好吧,讓我們讓這段代碼更容易。我認爲你打算做的是這樣的:

char selection; 
cout << (as before) 
cin >> selection; 

selection = tolower(selection); 

switch(selection) { 
case 'd': 
    // stuff for dogs here 
    break; 
case 'c': 
    // stuff for cats 
    break; 
// etc. 
default: 
    // error case 
} 

對不對?

+0

+1友好的回答,甚至有幫助! – Walter 2013-04-06 22:06:54

2

我認爲這是很清楚,而不是

if (a == d || ... 

你真正想要

if (a == 'd' || ... 

即要變a與字符'd'比較。你多次犯過同樣的錯誤,所以修復它們,看看有什麼錯誤。

此外,您錯誤地將a作爲int應該是char。由於某種原因,您對f適用,但對a不適用。