2014-12-09 2 views
-2

내 코드에 무엇이 문제가 있는지 잘 모르겠다. 11 번 줄에 'c'와 관련된 오류가 계속 발생한다. 구문이 정확하고 내 논리가 정확하다는 것이 확실합니다. 그래서 문제가 무엇입니까?내 코드에 무슨 문제가 있는지 잘 모르겠다. IDE에서 오류가 발생한다.

#include <iostream> 
#include <cctype> 
#include <string> 
using namespace std; 
int counter(char *, char); 
int main() 
{ 
    const int size = 51; 
    char input[size]; 
    char consonants = { 'b''c''d''f''g''h''j''k''l''m''n''p''q''r''s''t''v''w''x''y''z'}; 
    cout << "Enter your letters." << endl; 
    cin.getline(input, consonants); 
    cout << consonants << "appears"; 
    cout << counter(input, consonants) << "times" << endl; 
} 

int counter(char *strPtr, char ch) 
{ 
    int times = 0; 
    while (*strPtr != '\0') 
    { 
     if (*strPtr == ch) 
     times++; 
     strPtr++; 
    } 
    return times; 
} 
+4

* "내 구문이 정확한지 알고 있습니다"* - 확실합니까? –

+1

프로그래밍 질문을 할 때마다 항상 *** 정확한 *** 오류 메시지를 포함하십시오. 컴파일러 작성자는 유용한 진단을 생성하는데 많은 노력을 기울입니다. 그들의 노력을 낭비하지 마라! –

+0

Jonathon은 훌륭한 점을 가지고 있습니다 ... 사람들이 여기에서 당신의 문제를 진단하는 데 도움을주기 때문 만은 아닙니다. 답은 컴파일러 오류가 어떻게 문제를 설명하려고했는지 설명 할 수 있기 때문입니다. 모든 컴파일러 메시지의 용어와 관점에 대한 더 나은 처리. –

답변

4

'b''c''d''f' ...는 유효하지 않습니다. C++. ...

const char consonants[] = { 'b', 'c', 'd', 'f', ... }; 

를 ... 시도 - BTW - 당신은 할 수 단순화 할 수 있습니다 :

const char consonants[] = "bcdf..."; 

이 (당신은 예를 들어 ... 그 후 당신이 전화를 할 수있는 cin.getline() 오버로드를 다른 문제가됩니다 있습니다.

istream& getline (char* s, streamsize n); 
istream& getline (char* s, streamsize n, char delim); 

... 및 consonantsstreamsize 값 아니기 때문에 이들 중 어느 것도 유효한 호출 cin.getline(input, consonants);이기

솔직히이 코드가 전반적으로 어떻게 작동 할 것으로 기대하는지 상상할 수도 없습니다. counter을 사용하여 각 자음의 빈도를보고하려면 다음을해야합니다. , main()에서 그 자음을 통해 for 루프.)

0

그것은 ...

char consonants = { 'b\'c'}; 

수 있어야하지만 당신은 문자의 배열을 만들려면, 그것은

char consonants[] = {'b','c'}; 
0

또한해야한다 귀하의 전화 :

out << counter(input, consonants) << "times" << endl; 

은 자음을 기대하는 기능에 전달합니다. 단일 문자의 nd 인수. 이것은 하나의 요소가 아니라 전달할 배열에 대한 주소입니다.

관련 문제