게시판
검색 결과: 27
if ((num1 > 200) || (num1 < 0) || (num2 > 200) || (num2 < 0) || (num1 > num2))
이게 왜 답이 안되는 건지 이유를 모르겠습니다. 프로그램으로 실행 시에는 아무 문제가 없습니다.
(도장_ 관리자님이 수정함 - 원문 제출일: 목요일, 30 9월 2021, 5:23 오후)
포럼 오른쪽 상단에 30.7로 검색하면 이전 질문과 답변을 참조할 수 있습니다.
https://dojang.io/mod/forum/search.php?id=2&search=30.7
먼저 살펴보세요.
심사문제에서 코드의 일부만을 입력해서 제출하라는데 그렇게 하면 풀이대로 i++을 continue 위로 올릴 방법이 안 보이더라고요. 이거 어떻게 해야 하죠?
UNIT 6 디버거 사용법을 학습하고
원하는 위치에 중단점을 걸어서 실행될 때의 변수 값을 살펴보는 방법이 있습니다.
또는 처음부터 F11로 한 단계씩 실행하면서 전체 실행과 변수 값의 변화를 살펴보는 방법이 있습니다.
디버거 사용이 어려우면 온라인 시각화 툴을 사용해서 한 단계씩 실행해봐도 됩니다.
https://dojang.io/mod/forum/discuss.php?d=960
그림 30-3을 참고해서 자신이 짠 코드의 실행 순서도를 직접 그려보는 게 좋습니다. 전문가도 로직을 이해할 때는 실행 순서도를 그려보곤 합니다. 머릿속으로 생각하고 해결하고, 손가락을 움직여서 코딩하고, 실행해서 결과가 나오나 보는 건 낮은 수준의 문제 해결인데, 알고리즘 코딩 테스트로 가면 반드시 막히게 됩니다. 코딩 면접에서는 순서도를 그려서 설명할 수 있는 능력을 중요하게 보는 회사도 있습니다.
순서도로 그리고 이해하면 빠진 단계가 보입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1;
int num2;
int i;
scanf("%d %d", &num1, &num2);
i = num1;
while (1)
{
if (i % 10 == 7)
continue;
if (i > num2)
break;
printf("%d ", i);
i++;
}
return 0;
}
사실 정확히 어느부분이 잘못된건지 알 수가 없습니다.
제가 짠 코드인데요
특히 if ( i> num2)
break;
인데 코드 실행시 7을 넘어서 값이 안나옵니다...
printf("%d\t", i);
문의한 코드는 삭제합니다.
이번 문제는 여러번 시도해보고 고민하고 답안을 봐도 잘 이해를 못하겠는데 어떤 부분을 더 보는게 좋을것 같습니까?
초기에 for문 설정할때부터 막막해서 많이 고민했습니다 센스적인 부분이 부족한 것일까요? 아니면 예제를 더 많이 풀어보는게 좋을까요?
예제를 더 많이 풀어봐야 한다면 풀어볼만한 예제같은 거나 책을 추천부탁드려도 될까요?
질문을 너무 두서없이 많이해서 죄송합니다만 제가 지금 배울 수있는 방법이 많이 제한적이라서 너무 답답해서 물어봤습니다 감사합니다
(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 9월 24일, 목요일, 오후 10:32)
심사문제는 텍스트 일치로 판단합니다.
문제가 원하는 출력은
1 2 3 4 5 6 8 9 10
이고,
문의한 코드의 출력은
1 2 3 4 5 6 8 9 10입니다.
i > num2만 있으면 코드는 동작하고, 심사문제는 통과할 수있습니다.
0, 201을 넣어도 코드는 물론 동작합니다.
심사문제에서는 i > num2가 아닌 상황, i < num2인 상황에서 심사를 통과할 수 없습니다.