2013-04-22 6 views
0

모든 숫자를 쉼표로 구분하여 출력하고 싶습니다. 다음 코드에서도 마지막 숫자는 "분리"됩니다.마지막 루프 변경

for(int i=1; i<=3; i++) 
{ 
    cout << i << ",";   
} 

피할 수 있습니까?

그래서 대신 1,2,3,의 내가 원하는 단지 1,2,3

+2

고전적인 숙제 문제입니다. – tzerb

+0

죄송하지만 잘못된 것입니다. downvote 필요가 없습니다. – user1170330

+2

@ user1170330이 문제를 해결하는 데 충분한 노력을 기울이지 않았다면 어떻게됩니까? 그러면 다운 보트가 갑자기 정당화됩니다. –

답변

2

:

for (int i = 1; i <= 3; i++) { 
    if (i > 1) cout << ", "; 
    cout << i; 
} 
+0

실제로. 그러나 루프 내에서 마지막 요소를 인쇄하고 * n-1을 반복하는 것보다 조건의 평가에 약간의 추가 작업이 필요하기 때문에 여러 유형의 요소를 반복 할 때 루프 내에서이 유형의 if 문을 피하는 경향이 있습니다. * 대신 루프의 요소. –

+0

@VictorZamanian 컴파일러가 LICM만큼 똑똑하다고 생각합니다. –

+1

빠른 테스트에 따르면, 그렇지 않습니다. : - | 적어도 Mac OS X v10.7.5에서는 'clang'이 아닙니다. 아마 더 똑똑한 컴파일러를 사용해야 할 것입니다. :-) –

0

당신은 아마 그 자체로 마지막 (또는 첫 번째) 번호를 작성해야합니다 : 이것은 이러한 경우에하는 경향이 무엇

int i; 
for (i = 1; i < 3; i++) 
{ 
    cout << i << ","; 
} 
cout << i << endl; 
+0

'cout << i; for (i = 2; i <3; i ++) cout << ","<< i; cout << endl;'은 루프를 시작하기 전에 검사가 마지막 반복을 실행 취소/방지하는 것보다 쉽기 때문에 약간 더 좋습니다. 특히 루프 종료 조건을 예측할 수없는 경우 –

+0

검사가 필요하면 첫 번째 요소를 마지막으로 검사하는 것이 똑같이 간단하다고 생각됩니다. 첫 번째 요소가 마지막 요소보다 인쇄되지 않도록하는 것이 왜 쉬운 지 알 수 없습니다. for 루프 조건은 많은 경우 내 경험상 요소가 인쇄되지 않도록해야합니다. BTW, 완전성을 위해 : for 루프 조건에서'i <= 3'을 의미한다고 생각합니다. –

+0

정수의 범위를 반복하지 않는다고 상상해보십시오. (자동) = v.cbegin(), eit = v.cend(); it! = eit; ++ it) {cout << * it < < "," "; }'. 나는 그것을 '무엇을 바꿔야 하는가! = eit'로해야 하는가? –

-2

루프가 세 번 실행됩니다. 매번 쉼표를 쓰면 세 개의 쉼표를 얻게됩니다. 마지막 쉼표를 사용하지 않으려면 if 문을 사용하여 쓰기 만하면됩니다. 귀하의 루프 수 :

cout << i; 
if(i < 3) 
cout << ","; 
4

는이 같은 diffrent 장소에 쉼표를 추가해야한다

const int n = 5; 
int tab[n] = {1,2,3,4,5}; 

if(n >= 1) 
    cout << tab[0]; 
for(int i=1; i<n; i++) 
    cout<<", "<<tab[i]; 

링크 코드를 실행할 수 있습니다 ideone.com에.

+1

놀랍게도, 그것은 명백한 트릭이 아닙니다. 그러나 더 까다로운 경우에는 더 자주 나타납니다. 예를 들어 WHERE 절이 항상 WHERE 0 = 0으로 시작하는 SQL 쿼리 작성기를 보았 기 때문에 새로운 필터를 추가하는 것이 간단했습니다. where_clause + = "AND ". –

관련 문제