c++ char형 출력

조회수 524회

제가 123 456 입력받고 321 654 출력을 하려고 합니다 제 형식에서 무엇이 잘못되었나요..?

int main() {
    int t = 0;
    char str1[4];
    char str2[4];
    cin >> str1 >> str2;
    char str1copy[4] = { 0 };
    char str2copy[4] = { 0 };

    for (int i = 2; i >= 0; i--) {
        str1[i] = str1copy[t];
        t++;
    }
    for (int a = 2; a >= 0; {
        str2[a] = str2copy[t];
        t++;
    }
    str1copy[3] = 0; str2copy[3] = 0;
    cout << str1copy[t]<< str2copy[t];

}
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 4군데가 틀렸습니다.

    우선 두번째 for루프 자체가 오타났네요.

     for (int a = 2; a >= 0; {
    

    위의 라인을 아래와 같이 바꾸세요.

    for (int a = 2; a >= 0; a--) {
    

    두번째 문제는 str1, str2의 값을 str1copy, str2copy에 복사하려고 하는 것 같은데, 그렇다면 아래의 문장의 좌우가 거꾸로 된거지요.

    str1[i] = str1copy[t];
    str2[a] = str2copy[t];
    

    위의 문장을 아래와 같이 바꾸세요.

    str1copy[t]=str1[i];
    str2copy[t]=str2[a];
    

    세번째 문제는 첫번째 for루프에서 증가된 t를 두번째 for루프에서 그대로 사용하고 있다는 점입니다. 두 번째 for루프가 시작하기 전에 t=0;으로 초기화해 줘야 합니다.

    마지막 잘못된 곳은 cout이 있는 곳입니다. char형 배열의 문자열을 출력하려면 배열의 이름만 지정해야 합니다.

    cout << str1copy[t]<< str2copy[t];
    

    위의 문장을 아래와 같이 바꾸세요.

    cout << str1copy<<' '<< str2copy;
    

    아래가 수정된 전체 코드입니다.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int t = 0;
        char str1[4];
        char str2[4];
        cin >> str1 >> str2;
        char str1copy[4] = { 0 };
        char str2copy[4] = { 0 };
    
        for (int i = 2; i >= 0; i--) {
            str1copy[t] = str1[i];
            t++;
        }
        t = 0;
        for (int a = 2; a >= 0; a--) {
            str2copy[t] = str2[a];
            t++;
        }
        str1copy[3] = 0;
        str2copy[3] = 0;
        cout << str1copy << ' ' << str2copy;
    
        return 0;
    }
    

    결과

    이미지

    보통은 아래와 같이 짤것 같네요.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        char str1[20] = { 0, };
        char str2[20] = { 0, };
        char str1_copy[20] = { 0, };
        char str2_copy[20] = { 0, };
    
        cin >> str1 >> str2;
    
        int str1_len = strlen(str1);
        int str2_len = strlen(str2);
    
        for (int i = 0; i < str1_len; ++i)
            str1_copy[i] = str1[str1_len - 1 - i];
    
        for (int i = 0; i < str2_len; ++i)
            str2_copy[i] = str2[str2_len - 1 - i];
    
        cout << str1_copy << ' ' << str2_copy << '\n';
    
        return 0;
    }
    

    결과

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 선생님 정말 감사합니다............ ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 그런데 멍청한 질문이지만 복사할 때 str1과 str1copy의 순서가 바뀌는 것이 왜 중요한 것인가요..? 알 수 없는 사용자 2021.5.30 20:57
    • a=b;라는 문장은 a와 b가 같다라는 뜻이 아니고 b에 있는 내용을 a에 저장하라는 뜻입니다. str1copy에 좌우가 바뀐 내용을 저장하고 싶은 거니까 str1copy에 str1의 내용을 인덱스 잘 생각해 가면서 저장해야 합니다. 알 수 없는 사용자 2021.5.30 21:11
    • 감사합니다.......!!!! 알 수 없는 사용자 2021.5.30 22:17

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)