2017-02-26 15 views
2

문자열의 모든 자릿수를 C++로 추가하려하지만 모든 테스트 사례를 통과 할 수 없습니다. 내 코드는 아래와 같습니다.C++에서 문자열의 모든 자릿수를 추가하십시오.

#include <iostream> 
using namespace std; 

int main() 
{ 
    string str; 
    long long int count=0; 
    cin>>str; 
    for(int i=0;i<str.length();i++) 
    { 
     count+=(str[i]-'0'); 
    } 
    cout<<count<<endl; 
    return 0; 
} 

이 문제를 해결하는 방법을 모르는 사람이 나를 도울 수 있습니까 ???

+0

당신이 그것을 작동 나던하는 모든 샘플 입력을 제공 할 수 있습니다 시도 할 수 있습니다? –

+0

추가하기 전에 문자 str [i]가 숫자인지 확인하십시오. 문자열에 숫자와 영문자가 모두있는 경우 문제가 될 수 있습니다. if (isdigit (str [i])) {count + = (str [i] - '0');} –

답변

0

표시된 코드는 숫자 만 들어있는 문자열 (예 : "123")에서 올바르게 작동합니다.

처리해야 할 수도있는 두 가지 경우가 있습니다. 비 숫자 및 비 ASCII 숫자입니다 (초급자 할당에 덜 효과적입니다). 비 숫자를 처리 할 수 ​​

한 가지 방법은 프로그램이 "¼"같은 모든 Unicode numerals를 지원해야하는 경우 두 번째 경우를 들어

count += isdigit(str[i]) ? (str[i]-'0') : 0; 

(또한 "삼항 연산자"라고도 함) 조건 연산자를 사용하여 제로로 변환하는 것입니다 전체 유니 코드 테이블을 지원하는 라이브러리를 찾거나 특별한 경우를 직접 작성해야합니다. 모든 숫자가 정수를 나타내는 것은 아니므로 결과는 float이어야합니다.

0

이이

#include <iostream> 
using namespace std; 

int main() 
{ 
    string str; 
    long long int count=0; 
    cin>>str; 
    //ASCII value of digits 0-9 lie between 48 to 57 
    for(int i=0;i<str.length();i++) 
    { 
     if(str[i]>=48 && str[i]<=57) 
      count = count + (int)str[i] - 48; 
    } 
    cout<<count<<endl; 
    return 0; 
}