게시판

검색 결과: 118

, w white님이 작성
 

47.5 공백이 포함된 회문 판별 질문 드립니다.

47.5를 풀어보다가 너무 풀리지 않아 인터넷에서 해답을 얻었고, 문제를 풀었지만 아직 잘 이해가 되지 않는 부분이 있어서 이렇게 올립니다.

밑 파일에서

while (ptr != NULL) {

strcpy(copy, ptr);

strcat(newWord, copy);

ptr = strtok(NULL, " ");

}

이 부분이 설명을 부탁 드립니다.

, 도장_ 관리자님이 작성
 

무한반복으로 프로그램이 실행 중이므로 프로그램이 종료되지 않습니다.

원인을 살펴보려면 UNIT 6 디버거 사용법을 참고해서 반복문에 중단점을 걸고 변수 값의 변화를 추적해보세요.


, 박 종현님이 작성
 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

int main()
{
 int a = 0;
 char* zip = malloc(sizeof(char) * 31);
 char* cut = { NULL, };
 char* result = malloc(sizeof(char) * 31);
 bool isit = true;

 scanf("%[^\n]s", zip);

 char* ptr = strtok(zip, " ");

 while (ptr != NULL);
 {
  cut[a] = ptr;
  a++;

  ptr = strtok(NULL, " ");
 }

 for (int i = 0; i < 16; i++)
 {
  if (cut[i] != NULL)
  {
   printf("%s\n", cut[i]);
  }
 }


 free(zip);
 free(cut);
 free(result);

 return 0;
}


문제를 만들던 중 문자를 자르고 저장하는 과정을 실행시켰고, 실행은 되지만 결과가 나오지 않아서 보니 while문에 문제가 있는 것 같습니다.

그런데 뭐가 정확히 문제인지 파악이 되지않아 질문남겨봅니다.

, 홍 성일님이 작성
 

해결이 되어서 이 문제 넘어갔습니다.

답변 감사드립니다.

 
심사문제의 입출력 양식에 따라서 제출한 코드의 실행 결과는
nurs  es run
1
이렇게 됩니다. 이게 그대로 텍스트 파일로 저장되어 있다고 생각하세요.

그런데 문의자가 제출한 코드의 실행 결과는 이렇게 됩니다.
단어를 입력하세요: nurs  es run
1
이것도 텍스트 파일로 저장되어 있다고 생각해보세요.

그러면 심사는 이 두 결과의 텍스트를 비교하는 것으로 문제를 제대로 풀었는지 판단하게 됩니다. 물론, 내부에는 더 많은 테스트 데이터가 있어서 올바르게 문제를 풀었는지 검증합니다. 그렇지 않으면 온라인 심사를
printf("nurs  es run\n");
print("1\n");
이렇게 작성한 코드로 통과할 수 있기 때문입니다. 흔히 말하는 치팅이 가능해집니다.

심사문제 통과를 위해서는 프로그램이 만드는 입출력이 동일해야 합니다. 입력은 사람이나 온라인 심사가 하더라도 출력 부분은 동일해야 합니다. 따라서 "단어를 입력하세요: "까지가 있으면 안 되는 텍스트입니다. 지시문을 제거한 후에도 심사를 통과하지 못한다면 문제를 제대로 풀지 못한 것입니다.
단어를 입력하세요: nurs  es run
1

, 홍 성일님이 작성
 

답변에서 아래 2개의 입력값의 차이가 뭔가요? 차이를 잘 모르겠고요.

질문에 아래 값을 입력하라는게 있어서 동일하게 입력을 했는데요.

입력값이 불일치로 심사통과를 못했다는 것도 이해가 안됩니다.

입력값을 가지고 처리하는 코드 특정 부분이 잘못되었다고 하면 이해가 되는데요. 그럼 코드에는 문제가 없다는 것인지요?


문제가 원하는 입력은
nurs  es run
문의자가 원하는 입력은
단어를 입력하세요: nurs  es run

, 홍 성일님이 작성
 

제 PC에서는 문제 없이 잘 되는 것 같은데요. 답을 올리면 틀림으로 나오는데요. 도움 좀 부탁드립니다.

문의한 코드는 삭제합니다.

(도장_ 관리자님이 수정함 - 원문 제출일: 2019년 9월 12일, 목요일, 오후 11:04)

 
심사문제는 텍스트 일치로 판단합니다.
문제가 원하는 입력은
nurs  es run
문의자가 원하는 입력은
단어를 입력하세요: nurs  es run
입니다.

안내 문구는 텍스트 불일치 요인이므로 심사를 통과할 수 없습니다.

, 코 딩님이 작성
 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <string.h>

#include <stdbool.h>

int main(void)

{

    char s1[30];

    int length;


    scanf("%[^\n]s", s1);

    bool ispalindrome = true;


    length = strlen(s1);


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

    {

        if (s1[i] != ' ' && s1[length - 1 - i] != ' ')

        {

            if (s1[i] != s1[length - 1 - i])

            {

                ispalindrome = false;

                break;

            }

        }

    }

    printf("%d\n", ispalindrome);

    return 0;

}

출력해봤을땐 이상없는데 여기서는 틀림이라고 나옵니다 . 왜 그런거죠?