«   2019/08   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Statistics Graph
관리 메뉴

언제나 휴일

비쥬얼 c++ 틀린부분점 ㅠ 본문

언어 자료구조 알고리즘/C언어 예제

비쥬얼 c++ 틀린부분점 ㅠ

언제나 휴일 언제나휴일 2009.08.19 05:47

질문: 다음 C++ 코드에서 잘못 사용하고 있는 부분을 알려주세요.

#include <iostream.h>

int Getsum(int arr[], int size);

int main()
{
     int array[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} ;

    cout << "배열의 총합계 : " << Getsum(array, 10) << endl;
    cout << "배열의 부분 합계 : " << Getsum(array, 5) << endl;

    return 0;
}

int getsum(int arr[], int size)
{
    int sum = 0;
    for ( int i = 0; i < size; i++)
    {
       sum = int size + arr[i]
    }


    return sum ;
}

 

 

어디가 틀린지좀 봐주세요 ㅠ

답변: re: 비쥬얼 c++ 틀린부분점 ㅠ

iostream에 관련된 내용은 밑 부분을 보십시요.

오늘 다른 분의 질문했을 때 제가 답했던 것을 그대로 올립니다.

 

#include <iostream>
using namespace std;


int Getsum(int arr[], int size);

int main()
{
    int array[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} ;

    cout << "배열의 총합계 : " << Getsum(array, 10) << endl;
    cout << "배열의 부분 합계 : " << Getsum(array, 5) << endl;

    return 0;
}

int Getsum(int arr[], int size)
{
    int sum = 0;
    for ( int i = 0; i < size; i++)
    {
        sum = size + arr[i]; //int를 빼야 하고 뒤에 ;을 붙여야
    }


    return sum ;
}

 

다음은 iostream에 관련된 내용입니다.

 

 

먼저 namespace설명을 하고 나서 iostream에 대해 간략하게 설명하겠습니다.

 

 

namespace A

{

    class stack

    {

        //생략

    };

    class queue

    {

       // 생략 

    }   

}

 

namespace B

{

    class stack

    {

        //생략

    };

    class queue

    {

       // 생략 

    }   

}

 

C++이 발전해 나가면서 수 많은 라이브러리가 생겨났습니다.  개발자들은 이들을 취사선택해서 사용을 할 수 있어야 하는데 서로 다른 두 개의 라이브러리에서 같은 명칭의 형식이나 변수가 있다면 해당 두 라이브러리를 동시에 사용 못하게 되는 경우가 발생합니다.  

 

이러한 것을 namespace라는 문법을 추가함으로써 이름 충돌을 해결하고 되었습니다.

 

만약 라이브러리 A만 사용할 경우에는

 

using namespace A; 라고 한 후에 사용하면 됩니다.

 

그런데 A의 stack과 B의 queue를 사용하고 싶다면 다음처럼 해결을 할 수 있습니다.

 

using namespace A;

using A::stack;

 

using namespace B;

using B::queue;

 

만약 A의 stack과 B의 stack을 사용할 경우는 다음과 같이 해결할 수 있습니다.

 

using namespace A;

using namespace B;

 

void Foo()

{

    A::stack as;

    B::stack bs;

}

 

이처럼 namespace는 이름 충돌을 막기 위해 추가된 문법입니다.

 

 

namespace문법이 추가되기 이전에 C++에서는

#include <iostream.h>를 해서 cout이나 cin등을 사용했었습니다.

 

namespace 문법이 추가되면서

std namespace에 cout이나 cin등을 정의한 iostream파일을 사용을 권고하고 있습니다.

#include  <iostream>

C++의 경우 헤더나 소스 파일의 경우 굉장히 다양한 형태의 파일 포맷들을 사용할 수 있는데 가장 흔히 사용되는 것이 .cpp 와 .h일 뿐입니다. 

참고로 visual 6.0 에서는 #include<iostream.h> 와 #include<iostream> 둘 다 제공합니다.

 

하지만 visual studio 2008에서는 후자만 제공을 하고 있습니다.

 

즉, namespace문법을 익히시고 사용해야 한다는 결론입니다.

그리 어렵지 않고 직관적으로 이해하실 수 있는 내용이니 찬찬히 살펴보시기 바랍니다.

 

이상 허접한 나그네...


0 Comments
댓글쓰기 폼