무언가 만들기 위한 지식/C,C++,Embedded C
[C,C++] 입력받은 값의 대칭판별
신럭키
2010. 2. 18. 20:03
이 소스도 친구의 부탁으로 쌩으로 작성한 코드.
제작시간은 짱구를 굴리고 테스트좀 하느라 2시간 정도.
문자열을 컨트롤 하는 부분이 많아, 구상만 해놓으면 구현은 금방되었다.
개발환경 : Window XP 개발 툴 : Visual Studio 2005 사용언어 : C++
※ 특이사항 : scanf 및 cin을 사용하고 나서 gets함수를 사용하고 나면 버퍼에 \n이 남아 있어 제대로된 String을 받아들이지 못하였다. 그렇기 때문에 flushall()을 사용하여 gets를 호출하니 정상적으로 string을 받을 수 있었다.
제작시간은 짱구를 굴리고 테스트좀 하느라 2시간 정도.
문자열을 컨트롤 하는 부분이 많아, 구상만 해놓으면 구현은 금방되었다.
요구사항 :
임의의 정수를 입력받는다.
입력받은 정수를 뒤집은후(ex : 123 -> 321)
원래의 값과 뒤집힌 값을 더한다. (ex : 123 + 321)
그 후 더한값이 좌우 대칭인지를 확인후 YES or NO를 출력한다.
임의의 정수를 입력받는다.
입력받은 정수를 뒤집은후(ex : 123 -> 321)
원래의 값과 뒤집힌 값을 더한다. (ex : 123 + 321)
그 후 더한값이 좌우 대칭인지를 확인후 YES or NO를 출력한다.
소스내용 :
입력받은 정수를 gets를 이용하여 배열에 저장한다.
총 2개의 이차원 배열을 동적할당 한다. 첫번째 배열은 초기값, 두번째 배열은 좌우 대칭된 값을 저장한다.
간단한 연산을 위해서 숫자를 10진수로 쪼개서 파싱하지 않고
문자열 함수를 이용하여 계산한다.
itoa, atoi, strlen을 사용함.
대칭을 판별하기 위해 짝수와 홀수로 나누기로 했으나,
C언어에서 나눗셈하여 떨어지지 않으면 내림한 값을 리턴하기 때문에 strlen/2 로 통일 시킴.
단 홀수일경우 가운데 값을 연산하지 않기 때문에 복사하는 코드를 넣어줌.
입력받은 정수를 gets를 이용하여 배열에 저장한다.
총 2개의 이차원 배열을 동적할당 한다. 첫번째 배열은 초기값, 두번째 배열은 좌우 대칭된 값을 저장한다.
간단한 연산을 위해서 숫자를 10진수로 쪼개서 파싱하지 않고
문자열 함수를 이용하여 계산한다.
itoa, atoi, strlen을 사용함.
대칭을 판별하기 위해 짝수와 홀수로 나누기로 했으나,
C언어에서 나눗셈하여 떨어지지 않으면 내림한 값을 리턴하기 때문에 strlen/2 로 통일 시킴.
단 홀수일경우 가운데 값을 연산하지 않기 때문에 복사하는 코드를 넣어줌.
개발환경 : Window XP 개발 툴 : Visual Studio 2005 사용언어 : C++
※ 특이사항 : scanf 및 cin을 사용하고 나서 gets함수를 사용하고 나면 버퍼에 \n이 남아 있어 제대로된 String을 받아들이지 못하였다. 그렇기 때문에 flushall()을 사용하여 gets를 호출하니 정상적으로 string을 받을 수 있었다.