2014-09-30 4 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

хорошо, что код даже не скомпилирован для меня. –

+1

Ваше заявление и определение 'capCheck' не совпадают, и вы должны учиться делать это без использования глобальных переменных. – crashmstr

ответ

1

Просто измените void capCheck() для void capCheck(string s) в вашем объявлении функции. Он отлично работает для меня.

Некоторые комментарии к коду: старайтесь не использовать глобальные переменные и улучшать индентификацию.

+0

Это сработало, спасибо, спасибо – FrankyFigs

+0

Тогда знак пелазы является принятым ответом. –

+0

@JaviV Ну, а мой не заслуживает ни поддержки, ни принятия? :. (... –

1

В определении функции поместить

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

См live demo.

Предоставленное определение функции подписи

void capCheck() { 
    // ... 
} 

не соответствует фактической декларации подписи вашей функции прототипа

void capCheck(string); 

«Я понятия не имею, где я перепутались он возвращает 1 и не дает никаких других ошибок ».

Программа не компилируется в том виде, в котором вы разместили свой код. Вероятно, процесс сборки останавливается преждевременно (обратите внимание, что в вашей функции main() нет пути, возвращающего 1).