C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11611] Re:허접한 답변....ㅡ_ㅡㆀ
SteelHeart [] 917 읽음    2001-10-08 06:25
한마디로 int 형 변수 크기보더 더 큰 수를 읽을 수 있는 방법이라는 거죠?

그러면 큰 수 부분과 작은 수 부분으로 나누면 될 것 같은데요..;;

예를 들면요..

typedef srtuct BiggerByte
{
  char HighNum;
  char LowNum;
} BiggerThanChar;

이렇게 선언한 다음 char 형 변수의 크기를 고려해서 최대 크기를 정합니다.

const int MaxLowNum = 100;

자 그런 다음..

BiggerThanChar A;

만약 A에 12453 라는 수를 넣는다고 해 봅시다

char 형 변수 최대 값은 255 그런데 우리는 지금 최대값을 100으로 정했죠?

그럼 12453을 다음과 같이 분할해서 A에 넣는 겁니다

A.HighNum = 12453 / 100;
A.LowNum = 12453 % 100;

100..즉 두자리 이상의 값은 HighNum 에 넣는 겁니다.
두자리 이하의 값은 LowNum에 넣구요

그럼 수를 하나 더 만들어 봅시다

BiggerThanChar B;

B.HighNum = 53426 / 100;
B.LowNum = 53426 % 100;

그리고 A와 B를 더해 봅시다

BiggerThanChar C;

C.LowNum = A.LowNum + B.LowNum;
C.HighNum = A.HighNum + B.HighNum;

그런데 여기서 적은 수를 더하는 경우..적은수가 100 MaxLowNum 을..

즉 두자리 이상의 수가 되면 안되겠죠?

그럼 자리값 올림을 계산합시다.

C.HighNum = C.LowNum / 100;
C.LowNum %= 100;

이렇게 해서 두 수의 덧셈이 끝났습니다.

이런 식으로 만든다면 웬만큼 커도 하실 수 있으실 겁니다.


덧붙여 말씀드리자면 이런 건 C++ 인 경우는 class로 만드는 게 편하겠지요?

생성 시 크기를 정할 수 있게 만들고

operater 오버로딩도 하면 훨씬 편하니깐여..

C 언어인 경우라면 따로 헤더와 선언, 함수들을 모으는 게 좋겠죠.


이외에 다른 방법이 있는지는 모르겠습니다만..저라면 이렇게 해결 할 것 같네요..^^ㆀ

곱셈일 경우가 좀 난감합니다마는...

(for문 죽어라 돌리면 되겠다..라는...ㅡ_ㅡㆀ)

여간...도움이 되셨으면 합니다..^^a


그럼 즐프하세요~

+ -

관련 글 리스트
11608 bigint 문제를 어떻게 해결해야하는지... 심동택 1143 2001/10/08
11615     Re:bigint 문제를 어떻게 해결해야하는지... 만해 913 2001/10/08
11611     Re:허접한 답변....ㅡ_ㅡㆀ SteelHeart 917 2001/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.