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
[53592] Re:Re:Re:배열나눗셈계산질문
장성호 [nasilso] 1902 읽음    2008-06-05 13:04
a la russe 알고리즘 .. 좋은거 하나 배우네요     - http://blog.naver.com/lovely_hanga/60019576608
나눗셈 알고리즘도 생각나거든 알려주세요

그런데 문제는 굉장히 긴 숫자라는겁니다.
굉장히 긴 숫자 string을 char배열에 넣는거 자체가 쉽지 않을것 같은데요...

String  "255"    는    buf[0]=0xFF  이렇게 넣으면 되고
String  "256"    은    buf[0]=0x01, buf[1]=0x00; 이렇게 넣으면 되죠

하지만 String이 "12431234132412341435732457239547293750293750234572390759234134523545"  처럼
긴 숫자는 char buf에 어떻게 넣죠?

INT64 가 지원하는 크기 안이라면?
그냥 StrToInt 하면 되지만?
그영역을 벗어난다면 어떻게 하죠?


참..
첨부파일은 직접 만들어본것인데  문제가 있나 확인좀 해주시겠어요?

계산속도가 엄청 느립니다.
곱셈/나눗셈의 경우 자릿수가 수십자리되면 1천번정도 하는데 수초씩이나 걸립니다.

그럼..

Lyn 님이 쓰신 글 :
: 그런 나눗셈/곱셈을 구현하실때는..
:
: 10진수로 두고 계산하시기보단 2진수로 변환해서 계산하는게 편할겁니다.[즉 char 배열에 0과 1만 넣고...]
: CPU내부에서 사용하는 곱셈/나눗셈 알고리즘이 있거든요.
: 10진수로 생각하고 계산하는것보다 빠릅니다.
:
: 곱셈알고리즘은  a la russe 인가.. 하는 이름이 붙어있었는데
: 나눗셈은 까먹었네요 ^-^;
:
: 장성호 님이 쓰신 글 :
: : 제 생각에도 string으로 처리해야 할것 같구요
: :
: : 컴퓨터에서
: :
: : 곱셈은  덧셈의 반복이라는 얘기 들어보셨습니까?
: : 나눗셈은 뺄셈의 반복으로 보시면 될것입니다.
: :
: : 그렇다면 핵심은
: : 덧셈과 뺄셈이죠
: :
: : 덧셈과 뺄셈만 완벽하게 된다면
: : 그것을 응용해서 곱셈과 나눗셈도  가능할것입니다.
: :
: : 단 곱셈과 나눗셈할때 그냥 단순히 반복하면 좀 문제가 될것입니다.
: :
: : 그럼..
: :
: :
: : 열혈제자 님이 쓰신 글 :
: : : 요번에 계산기짜는것이 있는데요 보통계산기면 쉽게하겠지만 아주 큰숫자
: : : 50자리나 되는것을 계산하게만드는거거든요 곱하기까지는 어떻게했는데
: : : 나누기가 어떤원리로 접근해야할지몰라서요
: : : 배열로 숫자와 연산자를 한꺼번에 받아 계산을 하려고하거든요
: : :
: : :
: : : while((a[size]=getchar())!='\n')
: : : {
: : : ++size;
: : : }
: : :
: : : while(a[j]!='\n')
: : : {
: : : if(a[j]=='%')
: : : {
: : : b[j]='\0';
: : : break;
: : : }
: : : b[j]=a[j];
: : : ++j;
: : : }
: : : j=j+1;
: : :
: : : while(a[j]!='\n')
: : : {
: : : c[k]=a[j];
: : : ++k;
: : : ++j;
: : : }
: : : c[k]='\0';
: : :
: : :
: : : /* string에서 숫자 만들기 */
: : :
: : :
: : : for(i=strlen(b),j=N;i>=0;i--,j--)
: : : {
: : :
: : : b_n[j] = b[i] - 0x30;
: : : }
: : : for(i=strlen(c),j=N;i>=0;i--,j--)
: : : {
: : : c_n[j] = c[i] - 0x30;
: : : }
: : : 큰배열에 모든것넣고 두개의 배열로 나누어서 나누기를 해야하는데
: : : char 배열쓰니까 어떻게 나누기를해야할지감이 안잡혀서요 약간의
: : : 팁좀부탁드렸으면합니다.

+ -

관련 글 리스트
53589 배열나눗셈계산질문 열혈제자 2238 2008/06/05
53590     Re:배열나눗셈계산질문 장성호 1565 2008/06/05
53592             Re:Re:Re:배열나눗셈계산질문 장성호 1902 2008/06/05
53593                 Re:Re:Re:Re:배열나눗셈계산질문 열혈제자 2848 2008/06/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.