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


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


LIST ALL
Posted by 지상현2006-01-15 14:24:43, Hit : 5236
"문을실수" 함수 완성!
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
192
     [+] 비슷한 오류(?) 하나더... [7]
이희창(빙고) 2006/02/25  5370
191
   Filetr32.dll 를 이용해서 FTP 파일 다운로드&업로드 할때... [6]
이희창(빙고) 2006/02/19  5479
190
   VB - 창조 명령어 비교(?) [2]
박종훈 2006/02/15  7871
189
   WinAPI 레퍼런스 창조로 쓸수있는것들? [4]
박재성[날개달기] 2006/02/11  5150
188
   [편한 Tip^^] 객체 위치 조정 [4]
박종훈 2006/02/11  4507
187
   & 입력하기 -_-+ [7]
박종훈 2006/02/05  4485
186
   창조에서 창없이 사용하기(?) [10]
박종훈 2006/01/30  5119

   "문을실수" 함수 완성! [10]
지상현 2006/01/15  5236
184
   [버그보고] "문을수" 함수 버그... [8]
지상현 2006/01/14  5584
183
   멀티버튼의 그림분할 속성... [5]
qkrwhdgns 2005/12/20  4501
182
   창조파일 연결 바꾸기.. / 창조 nhpro.ini 파일 요리하기?? [6]
qkrwhdgns 2005/12/11  5289
181
   팝업메뉴-표시... [4]
qkrwhdgns 2005/11/27  4928
180
   XP 루나 어쩔수 없다..;; [15]
qkrwhdgns 2005/11/26  4993
179
     [re] 그룹박스는 밑판+이름표(밑판)?;; [2]
박종훈 2006/01/13  4118
178
   1145 번째의 비밀(?);; [2]
qkrwhdgns 2005/11/21  5563
177
     [re] 1145 번째의 비밀(?);; [2]
최재일 2005/11/21  4643
176
   마우스/키보드 누를때,눌렀을때.. 속도(?) [1]
qkrwhdgns 2005/11/13  5604
175
     [re] 나른한 일요일 오후에의 잡설 [1]
지상현 2005/11/13  4810
174
   확실한 시스템/윈도우/임시 폴더 알아오기 [6]
지상현 2005/10/28  6312
173
   창조에서 음수를 사용할 때 주의하자! [1]
지상현 2005/10/08  6813
172
   창조 도움말이 뻥을 쳤다! [5]
지상현 2005/10/08  5313
171
   [팁#3] 파일에 정수값 쓰기, 또 다른 방법!
지상현 2005/10/05  5537
170
   [팁#2] 파일에서 정수값 읽기!
지상현 2005/10/05  5748
169
   [팁] 파일에 정수값 쓰기
지상현 2005/10/05  5489
168
   팁입니다 ㅡ,ㅡ;; 확장자없는 미디어 사용하기 ㅡㅡ; [1]
만물 2005/10/04  6152
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이희철
로그인