게시판

검색 결과: 118

, 김 현우님이 작성
 
문의하신 코드는 삭제했습니다.

이런식으로 작성하였는데..어디가 잘못된건지를 모르겠어요 ㅠㅠ 공백일경우 추가하고 감소하는것을 어떤식으로 만들어야 하죠 

(도장_관리자에 의해 편집됨 - 원문 제출일 2017년 1월 20일, 금요일, 오후 3:43 )

, 김 현우님이 작성
 
문의하신 코드는 삭제했습니다.


이렇게 작성해서 통과는 했습니다.. 공백을 " "이걸로잡아주니 안되는거였네요 ㅠㅠ scanf 공백입력도 빼먹었고.. ㅎㅎ 근데 while문의 첫번쨰 if문과 두번째 if문을 보시면 저것을 하나로 사용할 방법은 없을까요? || 연산을하자니.. 둘중하나가 공백일경우 실행되어버리니 해당공백에 값을 추가해주고 감소해주기가 애매한거같아서 좋은방법 없을까요?

(도장_관리자에 의해 편집됨 - 원문 제출일 2017년 1월 20일, 금요일, 오후 4:19 )

, 도장_ 관리자님이 작성
 

두 if 문 안에서 처리하는 내용이 다릅니다.

처리 내용이 같으면 합칠 수 있지만, 다를 때는 가능한가요?

감사합니다.


, 도장_ 관리자님이 작성
 

문의한 코드는 text1의 length를 구했는데,

공백을 제거한 text2의 length를 새로 구해야 할 겁니다.

디버거로 중단점을 지정하고 단계별로 선택하면서 변수의 값이 바뀌는 걸 관찰해보세요.

디버거는 UNIT 6, 중단점은 UNIT 6.1을 참조하세요.


이 문제는 복사하지 않고 푸는 방법이 더 풀기 쉬울 겁니다.

47.3의 회문과 비슷하게 하되

중첩 루프를 쓰고, 안쪽 루프에서 공백이 있으면 건너 뛰는 방식이 더 쉽습니다.

감사합니다.


, 김 태건님이 작성
 

 //47.5
 char text1[30];
 char text2[30];
 int length;
 bool isPalindrome = true;

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

 length = strlen(text1);

 for (int i = 0, j = 0; i < length; i++, j++)
 {
  text2[i] = text1[j];
  if (text1[j] == " ")
   j++;
 }

 for (int i = 0; i < length / 2; i++)
 {
  if (text2[i] != text2[length - 1 - i])
  {
   isPalindrome = false;
   break;
  }
 }

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


return 0;




이런 식으로 배열 2개를 만들어서 다른 한쪽에 공백을 없앤뒤에 검사를 하려했습니다.

근데 조건문으로 공백이 있으면 건너뛰려고 했는데 그러질 못하고 있습니다.

뭐가 문제인지 알 수 있을까요? 

 

답변 감사합니다.

if문을 대입하면 공백을 한번만 확인하고 다음 단계로 넘어가기 때문에 공백이 연속으로 붙어서 나오면 판별이 안되겠군요... ㅜㅜ



 

while문 안에 공백 관련 부분을 if대신 다른 키워드로 고쳐보세요.
회문을 판별할 때 공백은 검사하지 않고 다음 글자를 검색해야 합니다.

, 김 태호님이 작성
 

안녕하세요.

[47.5 심사문제: 공백이 포함된 회문 판별]에서 작성한 답안을 다른 컴파일러에서 테스트하면 정상적으로 동작하는 것 같은데, 심사통과를 하려고 제출하면 틀렸다고 하네요... ㅜㅜ

어느 부분이 잘못되었는지 조언 부탁드립니다.

-----------------------------------------------------------------------------------

문의하신 코드는 삭제했습니다.