snujoon   5년 전

string만써도 틀리고

char형 1개씩 배열늘리고 초기화해도 틀리고

뭐가 문제인가요 ㅠㅠ 

djm03178   5년 전

string 객체에서 size() 번째 이후의 인덱스에 접근하는 것은 undefined behavior입니다. 길이를 넘어서서 접근하지 않게 해보세요.

snujoon   5년 전

호고곡... 왜 저의 멍청한 xcode는 그럼 오류를 띄우지 않았나요 warning이나 ㅠㅠ

snujoon   5년 전

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main()

{

    string arr[5];

    int length = 0;

    for(int i=0;i<5;i++)

    {

        string input;

        cin >> input;

        arr[i] = input;

        length = max(length, (int)arr[i].size());

    }

    for(int i=0;i<length;i++)

    {

        for(int j=0;j<5;j++)

        {

            if(arr[j].size()<=i)

                continue;

            cout << arr[j][i];

        }

    }

}

이게 통과 소스이구요

#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

int main()

{

    string arr[5];

    int length = 0;

    for(int i=0;i<5;i++)

    {

        string input;

        cin >> input;

        arr[i] = input;

        length = max(length, (int)arr[i].size());

    }

    for(int i=0;i<length;i++)

    {

        for(int j=0;j<5;j++)

        {

// if(arr[j].size()<i)로해도 저는 공백이 출력이 안되서 한참 해맸내요 ㅠㅠ

            if(arr[j].size()<i)

                continue;

            cout << arr[j][i];

        }

    }

}

djm03178   5년 전

실제 실행 중에 변수가 무슨 값을 가질지 컴파일러는 알 수 없기 때문에 워닝이나 에러를 띄우는 것은 컴파일러의 역할은 아닙니다. 이 부분은 100% 프로그래머의 책임입니다.

arr[i].size()번째 문자를 출력하는 것은 공백이 아니라 널 문자이고, 이는 공백과 달리 하나라도 출력하면 채점 프로그램에서 틀린 답으로 간주합니다.

댓글을 작성하려면 로그인해야 합니다.