2013-02-17 3 views
0

내 프로그램에 명령 줄 인수를 추가하려고합니다. 그래서 나는 실험하고 있었고 나에게 생명에 대한 경고를 알 수 없었다. 그것은 계속 ')'을 기대한다고 말하고 있지만, 나는 그 이유를 모른다.argc 및 argv 관련 문제

// Calculate average 
    average = sum/(argc – 1); 

이 그 다음은 빼기 연산자를 강조한다 : 여기

는 좋아하지 않는 코드입니다. 아래는 전체 프로그램입니다.

#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    float average; 
    int sum = 0; 

    // Valid number of arguments? 
    if (argc > 1) 
    { 
     // Loop through arguments ignoring the first which is 
     // the name and path of this program 
     for (int i = 1; i < argc; i++) 
     { 
      // Convert cString to int 
      sum += atoi(argv[i]);  
     } 

     // Calculate average 
     average = sum/(argc – 1);  
     std::cout << "\nSum: " << sum << '\n' 
       << "Average: " << average << std::endl; 
    } 
    else 
    { 
    // If invalid number of arguments, display error message 
     // and usage syntax 
     std::cout << "Error: No arguments\n" 
     << "Syntax: command_line [space delimted numbers]" 
     << std::endl; 
    } 

return 0; 

}

+2

아마도 컴퓨팅하고있는 것과 다른 것을 기대하고 있다고 경고 할 수도 있습니다. 팁 :'sum'과'argc'의 타입은 무엇입니까? :-) –

답변

9

당신이 생각하는 문자는 음의 부호는 뭔가 다른, 그래서는 빼기 연산자로 해석되지 않습니다.

버전 :

average = sum/(argc – 1); 

올바른 버전 (절단 및 코드에 붙여 넣기) : 정수를 사용하여 평균을 계산하는 것은 그것을 할 수있는 가장 좋은 방법이 될하지 않을 수도

average = sum/(argc - 1); 

참고. RHS에 정수 산술 연산을 적용한 다음 LHS의 float에 할당합니다. 부동 소수점 유형을 사용하여 나누기를 수행해야합니다. 예 :

#include <iostream> 

int main() 
{ 
    std::cout << float((3)/5) << "\n"; // int division to FP: prints 0! 
    std::cout << float(3)/5 << "\n"; // FP division: prints 0.6 
} 
+0

하? 더 자세히 설명해주세요. –

+2

@ g-makulik : 그는 자신의 프로그램에서 이상한 non-ascii 유니 코드 문자를 가지고 있는데, 빼기처럼 보이지만, –

+0

이 아닙니다. 좋아요. ** 이제 ** 요점을 볼 수 있습니다. –

2

나는 g ++ 4.6.3 내 컴퓨터에서 코드를 컴파일하기 위해 노력하고 추적에 오류가 발생했습니다 : 그 라인에 이상한 문자가 같은

[email protected]:~$ g++ teste.cpp -o teste 
teste.cpp:20:8: erro: stray ‘\342’ in program 
teste.cpp:20:8: erro: stray ‘\200’ in program 
teste.cpp:20:8: erro: stray ‘\223’ in program 
teste.cpp: Na função ‘int main(int, char**)’: 
teste.cpp:16:33: erro: ‘atoi’ was not declared in this scope 
teste.cpp:20:35: erro: expected ‘)’ before numeric constant 

보인다. 오류를 수정 한 줄을 제거하고 다시 작성하십시오.

+0

조금 늦었습니다. @ juanchopanza의 대답이 정확히 무엇을 반영하는지 ... –

+0

음, 시도 해보니 +1 예 ... –

관련 문제