Hello World문제좀 도와주세요 ㅠㅠ....

  • ahsomsid
    ahsomsid

    왕초보 프로그래머인데요 ㅠㅠ
    최근 이 사이트에 대해 알게 돼서 튜토리얼을 풀어보고 싶은데
    자꾸 런타임 오류가 나네요...
    이렇게 짧은 프로그램인데 대체 어디가 어떻게 잘못된건지 아무리 봐도 모르겠어요 ㅠㅠ 혹시 도움주실수 있는 고수분 계시면 정말 감사하겠습니다 ㅠㅠ

    일단 문제는 이거에요

    입력

    프로그램은 표준 입력에서 인사할 사람들의 이름을 입력받습니다. 입력의 첫 줄에는 사람의 수 C (1 <= C <= 50) 이 주어집니다. 그 후 한 줄에 하나씩 각 사람의 이름이 주어집니다. 각 사람의 이름은 알파벳 대소문자나 숫자로만 구성되어 있으며, 항상 50자 이하입니다.

    출력

    한 줄에 하나씩, 입력에 주어진 순서대로 각 사람에게 인사 메시지를 출력합니다. 자세한 것은 예제 출력을 참조하세요.

    예제 입력

    5
    World
    Algospot
    Illu
    Jullu
    Kodori

    예제 출력

    Hello, World!
    Hello, Algospot!
    Hello, Illu!
    Hello, Jullu!
    Hello, Kodori!


    그리고 여기부터 제 코드

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int number;
        string nameArray[number];
        cin >> number;
        if (number<1 || number > 50)
            return 0;
    
        for(int index=0; index<number; index++)
        {
    
            cin>>nameArray[index];
            if (nameArray[index].length() > 50)
                return 0;
        }
    
        for(int index=0; index<number; index++)
        {
            cout << "Hello, " << nameArray[index] <<"!\n";
        }
    
        return 0;
    }
    

    대체 왜 런타임 오류가 계속 나는 걸까요..? ㅠㅠ


    10년 전
3개의 댓글이 있습니다.
  • JongMan
    JongMan
    string nameArray[number]; 
    

    여기에 몇 가지 문제가 있습니다.

    1. 가변 길이 배열은 C++ 표준이 아니며, g++ 컴파일러 익스텐션에 의해 지원되므로 다른 컴파일러에선 안 될 가능성이 높습니다. (곧 C++ 컴파일 옵션에 해당 익스텐션들을 제외하는 -pedantic 옵션을 추가하겠습니다)
    2. number를 입력받기 전에 배열을 선언하시므로, number에 들어가 있는 쓰레기값 크기대로 배열이 초기화됩니다.

    10년 전 link
  • JongMan
    JongMan

    해당 옵션을 추가해 앞으로는 이와 같은 비표준 코드는 컴파일이 제한됩니다.


    10년 전 link
  • ahsomsid
    ahsomsid

    아 그렇군요.. 정말 감사합니다 많이많이 알아가요!!


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.