표준 입력으로 길이 1,000 이하의 문자열이 입력됩니다. 입력된 문자열에서 "the"의 개수를 출력하는 프로그램을 만드세요
문의한 코드는 삭제합니다.
5개까지만 나와서 원인을 계속 찾아보았지만 해결하지 못했습니다..
어디 부분이 잘못된건지 알고싶습니다
(도장_ 관리자님이 수정함 - 원문 제출일: 2020년 8월 12일, 수요일, 오후 11:11)
UNIT 번호가 몇 번인가요? 번호가 없으니 확인이 어렵습니다.
포럼 오른쪽 상단에 해당 심사문제 UNIT 번호를 검색하면 이전 질문과 답변을 문제 해결에 참고할 수 있습니다.
#define _CRT_SECURE_NO_WARNINGS // strtok 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strtok 함수가 선언된 헤더 파일
int main()
{
char s1[1001];
scanf("%[^\n]s", s1);
char* ptr = strtok(s1, " .");
int cnt = 0;
while (ptr != NULL)
{
if (ptr != NULL && strcmp("the", ptr)==0)
{
printf("\n%s\n", ptr);
cnt ++ ;
ptr= strtok(NULL, " .");
}
}
printf("\n%d", cnt);
return 0;
}
45.8번 심사문제입니다.
입력값
the grown-ups' response, this time, was to advise me to lay aside my drawings of boa constrictors, whether from the inside or the outside, and devote myself instead to geography, history, arithmetic, and grammar. That is why, at the age of six, I gave up what might have been a magnificent career as a painter. I had been disheartened by the failure of my Drawing Number One and my Drawing Number Two. Grown-ups never understand anything by themselves, and it is tiresome for children to be always and forever explaining things to the.
을 넣어서 출력이 6이 나와야 되는 문제인데
제 코드는 출력값이 5만 나옵니다
입력 결과에 대해서 숫자가 아니라 the만 출력하고 멈췄습니다.
더 이상 진행되지 않고, 심사에서는 실행 시간 초과로 종료됩니다.
처음 문의한 코드는 5를 출력합니다. 두 번째 코드는 the만 출력하고 무한 반복입니다.
입력 텍스트에 대해서 the를 검색하면 8개의 일치가 있습니다.
이중에 whether, themselves 2개를 제외하면 6개의 the가 있습니다.
UNIT 6을 참조해서 첫 번째 코드에 대해서 디버거로 단계별로 실행하면서 6개의 the 중에 지나치는 the가 있을 겁니다. 그때의 the를 추적하면 되겠지요.
지금 코드는 첫 번째 시작이 the이면 무조건 실패하게 되어 있습니다.