질문과 답변

강좌 - C언어 4장 continue 과제 관련 질문입니다.(ReflectSharp) 날짜:2021-6-9 12:03:27 조회수:106
작성자 : 선율
포인트 : 9
가입일 : 2021-04-22 23:22:25
방문횟수 : 232
글 1개, 댓글 2개
소개 : 안녕하세요. 프로그램에 관심이 생겨서 가입하게 되었습니다. 감사히 잘 배우고 성장하도록 하겠습니다.
작성글 보기
쪽지 보내기
void Reflect()
{    
    int i = 0;
    int j = 0;

    int maxX, maxY;
    printf_s("X의 최대값을 입력하세요 :");
    scanf_s("%i", &maxX);
    printf_s("Y의 최대값을 입력하세요 :");
    scanf_s("%i", &maxY);

    clrscr();

    for (;;)
    {
            here2:
            while (j != maxY)
            {
                ++i;
                ++j;

                if (i == maxX) goto here1;
        
                gotoxy(i, j);
                printf_s("#");
                gotoxy(i - 1, j - 1);
                printf_s(" ");
                delay(50);
            }
            here4:
            while (j != 0)
            {
                ++i;
                --j;

                if (i == maxX) goto here3;

                gotoxy(i, j);
                printf_s("#");
                gotoxy(i - 1, j + 1);
                printf_s(" ");
                delay(50);
            }
    }
        
    for (;;)
    {
            here3:
            while (j != 0)
            {
                --i;
                --j;

                if (i == 0) goto here4;

                gotoxy(i, j);
                printf_s("#");
                gotoxy(i + 1, j + 1);
                printf_s(" ");
                delay(50);
            }

            here1:
            while (j != maxY)
            {
                --i;
                ++j;

                if (i == 0) goto here2;

                gotoxy(i, j);
                printf_s("#");
                gotoxy(i + 1, j - 1);
                printf_s(" ");
                delay(50);
            }

    }
}

이제 막 입문해서 공부하고 있는 초보자입니다.
과제를 위와 같이 작성해봤는데, 완성도가 좀 많이 떨어지네요 ㅠㅠ
처음에는 goto를 쓰지않고 작성하려했으나, 근성이 부족한 탓에 써버렸습니다.
그래도 여러 시도해봤습니다. 이중루프 구성하고 스위치쓰고, x축 y축 길이에 따라
반사되는 지점이 일정한 패턴을 갖는지 계속 그려도 보고
*그래도 y축 기준으로 ( maxY - (maxX % maxY) ) 의 값에 반사되기는 하더군요 ㅋㅋ
다만, 15와 11, 11과 7 처럼 1을 제외한 나머지 약수가 겹치지않는 경우에는 적용이 안되더라구요.
나름 재밌었습니다만.. 각설하고

1. x축의 최소값(0)과 최대값에 반사되면 #이 지워지지않고 남아있습니다. 어느 곳을 보완해야되는지
   살짝 힌트라도 주시면 감사하겠습니다.

2. 혹시 goto 안쓰고도 해결이 가능할까요? 이 경우도 살짝 언질해주시면 열심히 고민해보겠습니다.

긴글 읽어주셔서 감사합니다.
   

목록보기 삭제 수정 신고 스크랩

선율 6월9일 1:51:03  

생각해보니 *부분은 당연한거네요 ㅋㅋㅋ


로그인하셔야 댓글을 달 수 있습니다.