2014-09-30 43 views
0

我有程序工作,直到我用void函數編寫它。我不知道我在哪裏搞砸了。它返回1,並沒有給出其他錯誤。假設打印大寫和小寫數字,但返回1並退出程序

#include <iostream> 
#include <string> 
using namespace std; 
char response; 
string s; 
int upper, lower, other, count; 
void capCheck(string); 
int main() 
{ 
    count = 0; 
    upper = 0; 
    lower = 0; 
do 
{ 
    cout<<"Get the number of upper and lower case letters in your sentence!!"<<endl; 
    cout<<endl; 
    cout<<"Type your sentence below without spaces.."<<endl; 
    cin>>s; 
    capCheck(s);  
    cout<<"Would you like to continue? Y/N"<<endl; 
    cin>>response; 
}while(response == 'y' || response == 'Y'); 
return 0;  
} 
void capCheck() 
{ 
    while(s[count] != 0) 
    { 
     if(s[count] >= 'a' && s[count] <= 'z') 
     { 
      lower++; 
      count++; 
     } 
     else if (s[count] >= 'A' && s[count] <= 'Z') 
     { 
      upper++; 
      count++; 
     } 
     else 
      other++; 
    } 
    cout<<"The number of uppercase letters are: "<<upper<<endl; 
    cout<<"The number of lowercase letters are: "<<lower<<endl; 
} 
+0

那麼代碼甚至不爲我編譯。 – 2014-09-30 19:37:19

+1

你的聲明和'capCheck'的定義不匹配,你應該學會在不使用全局變量的情況下做到這一點。 – crashmstr 2014-09-30 19:38:13

回答

1

在你的函數聲明只要改變void capCheck()void capCheck(string s)。這對我來說可以。

對代碼的一些評論:儘量不要使用全局變量並改進縮進。

+0

那有效的朋友,謝謝 – FrankyFigs 2014-09-30 19:40:49

+0

然後pelase標記是被接受的答案。 – 2014-09-30 19:44:39

+0

@JaviV那麼,我的配偶不應該接受嗎? :。(... – 2014-09-30 19:54:21

1

在你的函數定義放在

void capCheck(string s) { 
    // ... 
} 

live demo

所提供的函數定義簽名

void capCheck() { 
    // ... 
} 

不符合您的函數原型簽名的實際申報

void capCheck(string); 

「我不知道在哪裏,我搞砸它返回1,並沒有給出其他錯誤。「

該程序不會以您發佈代碼的形式進行編譯。構建過程可能會過早停止(請注意,main()函數中沒有任何路徑返回1)。