질문과 답변

c언어 질문 날짜:2022-1-24 10:21:10 조회수:160
작성자 : 리을자인사
탈퇴한 회원이며 개인 정보가 없습니다.
작성글 보기
쪽지 보내기

인자로 전달되는 영단어가 회문(palindrome)인지 아닌지 판단해서 결과를 출력하는 기능의 함수를 정의하고 이에 적절한 main함수를 정의하는 문제인데 "level","bob","noon"같은 회문을 입력해도 왜 aniyo라고 출력되는지 모르겠네요...도와주세요 선배님들 ㅠ.ㅠ

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

작가K 1월25일 2:50:32  

이미지 말고 소스를 올려 주시면 더 좋을 거 같애요.
이미지 해상도가 떨어져 소스 내용이 잘 안 보이네요.

소스 입력해 봤는데 잘 되는 거 같습니다. 

#include
void palindromeinga(char*);
short kegi(char*);

int main(void)
{
    char daneo[28]; scanf("%s", daneo);
    palindromeinga(daneo);
    return 0;
}

void palindromeinga(char* daneo)
{
    long x = 0;
    while (*(daneo + x) == daneo[kegi(daneo) - 1 - x])++x;
    if (x == kegi(daneo)) printf("nae");
    else printf("aniyo");
}

short kegi(char* daneo)
{
    long long x = 0;
    while (*(daneo + x) != '\0')x++;
    return x;
}

kegi는 문자열 길이를 조사하고 메인에서 첫자와 끝자를 가운데로 좁혀가며 같은지 계속 조사해서 문자열 끝까지 다 같으면 회문으로 판단하는 논리이네요. 
소스는 정상적입니다만 만약 이게 안된다면 프로젝트 설정을 보셔서 유니코드로 설정했거나 SDL 옵션을 켜 놓지 않았는지 점검해 보세요. 옵션이 뭐든 안될 이유는 없어 보입니다. 

리을자인사 1월25일 3:02:29  

감사합니다. 그런데 SDL옵션이니 유니코드니 뭐니 어디가야 있는지 모르겠네요 Dev C++써서요.. 아 전 Dev C++만 깔았지 SDL같은 애드온은 깔지 않았습니당


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