창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판 (1/0)
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 지상현2006-01-15 14:24:43, Hit : 5255
"문을실수" 함수 완성!
Homepage : http://ssidang.x-y.net
File #2 : 문을실수.cuf (564 Byte)   Download : 230
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=261
문을수 함수가 실수 형식을 지원하지 못하고, 또 너무 긴 수는 제대로 변환하지 못하는 안타까운(?) 버그때문에 문을실수 함수를 새로 만들게 되었습니다.

바로 아래 글에서 클립하신 분들인 이 것으로 바꿔주시길 ^^;
아래에 나온 방법을 포기하고 완전히 새로운 방법으로 새로 만들었습니다.
그래서, 소수점은 물론 음수와 지수 표기법까지 완벽하게 지원합니다.
물론, 처리가 추가된 만큼 조금 느려졌기 때문에, 이전 방법은 남겨두겠습니다. 필요한 용도에 따라서, 적당한 것을 골라서 사용하시면 될 것 같네요.






아래는 소스입니다.
사용 하실때는 첨부파일로 올린 사용자 함수 파일을 이용해주세요!
주석이 있기 때문에, 제대로 동작하지 않는 버그가 있습니다.
그리고, 창조는 주석이 있으면 좀 느려지기 때문에, 지우고 사용하시는게 여러모로 좋습니다 ^^
어쨌든, 원리(?)는 밝히기 위해 주석까지 있는 버전을 여기에 적습니다.



이 소스는 이런 것을 지원합니다.

문을실수("1234") ==> 1234
문을실수("3.14159") ==> 3.14159
문을실수("-2.7182818") ==> -2.7182818
문을실수("7.389e+2") ==>738.9
문을실수("-1771.4E-3") ==> -1.7714








// ********************************************************
실수함수:문을실수(문자:문);
// ********************************************************
실수:문길이,ㅋ;        
// ㅋ는 카운터 변수, 변수 이름에 오해 없기를 *-_-*
실수:총합,지수;
실수:문자코드,숫자;
문자:ㄱㅈ;              
// 한 "글자"
진리:음수다,소수네;  // 이 놈이 음수인지?, 그리고 소수점 이하 숫자인지?








// 일단 전체 문자의 길이를 구해두고
문길이 := 문자길이(문);
// 카운터 초기화
ㅋ :=
1;    // 문자 함수들은 1부터 시작하니까

// 1. 음수인지 검사합니다. 앞에 - 가 붙었나?
// 문자복사(문,1,1) = "-" 와 같음
음수다 := (문자비교(문자복사(문,1,1),"-") = 0);

만일(음수다) {
 
// 음수면 카운터를 2부터 시작하도록
 // - 기호는 빼고 읽어야 하니까
 ㅋ := 2;
}

// 이제, 한 글자 한 글자 읽어오는 겁니다.
총합 := 0;
지수 := -
1;  // 소수점 첫째 자리부터 시작
되풀이(ㅋ <= 문길이) {
 ㄱㅈ := 문자복사(문,ㅋ,
1);
 
// 문자코드로 일단 바꿔서 처리합니다.
 // ***여기서 필요한 문자코드들***
 // 0~9 [48-57]
 // . [46]
 // e, E [101, 69]
 // +, - [43, 45]
 문자코드 := 문수(ㄱㅈ);
 
 
// 숫자에 대한 처리...
 만일((문자코드 >= 48) 그리고 (문자코드 <= 57)) {
  숫자 := 문자코드-
48;
  만일(소수네) {
   
// 소수일 때는 그냥 더하기만 하는데
   // 이 때 10의 지수 제곱을 곱해서~ 더해주면 된다.
   // 역시 왜 그런지는 직접 컴퓨터가 되어서!!!
   총합 := 총합 + 숫자*제곱(10,지수);
   지수 := 지수 -
1;
   
// 이렇게 하면 너무 작은 숫자는 알아서 잘리게 됨. ~_~
  }
  아니면 {
   
// 10 곱하고, 더한다. 왜 그런지는, 한번 컴퓨터가 되어서 직접 해보세요!
   총합 := 총합*10+ 숫자;
  }
 }
 아니면 만일(문자코드 =
46) {
  
// 소수점에 대한 처리!
  // 소수점이 나오면 플래그 하나면 켜면 됩니다.
  소수네 := ;
 }
 아니면 만일((문자코드 =
101) 또는 (문자코드 = 69)) {
  
// 지수에 대한 처리!
  // 1.0E+0 같이, E 부분 이하는 지수 부분이다.
  // 대소문자 구분을 위해 두 가지 모두 검사...
  // E 뒷부분 글자를 모두 읽어서 그냥 지수화 해서 곱하면 땡
  // 지수는 별로 길지도 않을테니까 여기서는 간단하게...!
  숫자 := 문을수(문자복사(문,ㅋ+1,(문길이-ㅋ)),0);

  총합 := 총합 * 제곱(
10,숫자);
  
// 이제 더 이상 처리할 필요도 없다
  그쳐;
 }
 
 ㅋ := ㅋ +
1;
}

// 결과만 반환하면 끝!
// 이 때 음수 처리를 잊지 말아야
만일(음수다) {
 결과 := -총합;
}
아니면 {
 결과 := 총합;
}

박종훈   2006-01-15 PM 2:30:45  
크.. 어렵다.. -_-+..
프로그래밍에선 수학은 필수 !.. (선생님도 그러셨음 -_-;;)
나중에 평균 계산기에 적용을 해서 사용해야 겠습니다.^^;
박종훈   2006-01-15 PM 2:35:36  
이거 사용하는데.. 뭐.. 문법검사기에서.. 문법 어쩌구 저쩌구 하면..
그냥 실행해 보세요.. 그럼 된다는 -_- (그래도 안된다면 ??? -_-a)
실수로 변환 하는데 실패하면, 0을 반환하네요..
지상현   2006-01-15 PM 2:47:05  
실패했을 경우 처리를 안했습니다. -_-;;
간단하게, 중간에 반복문 돌 때 숫자나 소수점, 그리고 지수표기 이외의 문자 코드가 나오면 실패 처리하면 되겠지만~
박종훈   2006-01-15 PM 4:09:20  
그런데.. 애매한것이.. 실패 했을때 반환하는 수는 어떻게 정하지?..
문을수의 경우, 음수를 지원하지 아니하잖아요.. 그래서.. 실패시
반환값에 -1 을 넣어주면.. 되지만, 이 소스의 경우 방대하게(^^..)
음수,양수,소수 모두 지원하니까.. -_-; 만일, -1 을 실패시 반환값으로 하면,
사용자가 -1을 넣었다고 하면.. 실패반환과 입력값이 겹치고 ^^;;
지상현   2006-01-15 PM 5:12:12  
어파치 결과같은 숫자이므로, 0 이 적당하겠죠 ^^
이진백   2006-01-15 PM 10:23:17  
문을수 음수 지원합니다.
이전에 단순히 에디트 두개 놓고 사이에 + 써놓고 문을수 각각 더해보면

예: 1 + -1 이라고 쓰면 0 이라고 뜹니다. 즉, 문을수는 음수를 지원합니다.
다만 실수가 지원안될뿐 -0-
지상현   2006-01-15 PM 10:44:03  
음수가 지원되니까, 제 소스가 먹힌다는 ^^;
박종훈   2006-01-16 AM 7:57:29  
아... 음수는 지원하는네, 소수는 지원이 되지 않군요-_-^;;
(문을수에서 음수 지원하지 않는 줄 알고, 실패 반환값 -1 썼는데;;)
최재일   2006-01-16 PM 3:14:14  
클립!!
나중에 분석해봐야겠네요 ㅎㅎ
손상진   2006-01-16 PM 10:23:37  
저도 클립!!..^^;
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
217
   [팁] 자신의 계정 ip 보기. [11]
Pueding 2002/11/06  5381
216
   프로그램 버전업 업데이트....
위자드 2004/02/03  5379
215
   [보안 프로그램]에 대하여.... [8]
하얀종이 2002/11/03  5377
214
   API이름뒤에 A나 W가 붙는 경우 [2]
박종훈 2009/03/08  5364
213
   시피유 속도를 알아보자 ?????????? [1]
날개달기 2002/11/08  5352
212
   창조를 위한 창조도움말 유저가이드-_-; [3]
박종훈 2006/08/26  5342
211
   [팁#10] 진리형을 사용할 때 유의할 점 [5]
ps.구루 2004/05/16  5338
210
   [팁#5] 모든 사용자에 대한 시스템 경로
ps.구루 2003/08/01  5337
209
   알면좋은것들..
날개달기 2003/11/11  5333
208
   레지스트리 다루기(명령 프롬프트) [4]
박종훈 2009/02/26  5332
207
   창조 도움말이 뻥을 쳤다! [5]
지상현 2005/10/08  5331
206
   웹사이트 자동 백업 archive [2]
리시 2004/09/05  5323
205
   프로그램을 좀더 쉽게 익히려면 by 권선중님 [1]
Pueding 2003/07/06  5321
204
   "ㅎ리스트박스" 다중선택 처리
지상현 2012/01/26  5316
203
   창조파일 연결 바꾸기.. / 창조 nhpro.ini 파일 요리하기?? [6]
qkrwhdgns 2005/12/11  5315
202
   숫자만 입력하게 하기 ^^ [6]
박종훈 2006/06/06  5313
201
   자기창이 잠깐동안 맨 위로 올라오게 하기 [5]
박종훈 2006/07/17  5311
200
   [팁] 웹 DB와 창조의 연결 [1]
권선중 2003/11/17  5288
199
   [팁] ^ㅁ^ [4]
박재성[날개달기] 2005/04/14  5287
198
   프로그램에서 내용정렬양식 거부한다.. [2]
박종훈 2006/02/26  5285
197
   [tip] 포커스란.. 그리고 응용방법
권선중 2003/09/09  5270
196
   불필요한 파일을 제거하여, 속도를 높이자! [3]
신용주 2009/01/26  5267

   "문을실수" 함수 완성! [10]
지상현 2006/01/15  5255
194
   정식판,데모버전 구현하기.. 노가다~~~ [1]
권선중 2009/05/18  5253
193
   창틀 없이 창 이동
Pueding 2003/07/06  5230
LIST ALL   Prev [1][2][3][4][5] 6 [7][8][9][10]..[14] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인