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


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


LIST ALL
Posted by 지상현2006-01-15 14:24:43, Hit : 5233
"문을실수" 함수 완성!
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
342
   [창조 V1.1a 16p] DB관련 명령어 중 도움말 없는 명령어와 숨...
바람 2023/02/03  285
341
   창조에도 goto문이 존재했었습니다.
바람 2018/01/05  2472
340
   메뉴제목 깔끔하게 사용하기
바람 2018/01/05  2264
339
   [창조 1.0] 팝업메뉴 사용 시 '제어'와 '보이기' 사용
바람 2018/01/05  2538
338
   [창조 1.0] 0.9b 대비 반복문 속도 향상.
바람 2018/01/05  2210
337
   [창조 1.0] '폴더선택창보여'와 '폴더선택창보여줘'의 차이.
바람 2018/01/05  2456
336
   [창조 1.0] 'ㅎ메모'의 '문자찾아'
바람 2018/01/05  2518
335
   관리자 권한이 포함 된 manifest
바람 2018/01/05  2177
334
   여러개의 DLL 사용 시 사용자함수 충돌 피하기
바람 2017/11/21  2185
333
   32비트 프로그램으로 64비트 윈도우의 'Redirection' 폴더 제...
바람 2017/10/18  2448
332
   '끝내' 쓸 때 유의할 점
성인e 2015/09/09  3039
331
   shr, 소반올림, bAND, % 시간 비교
성인e 2013/07/25  4507
330
   곱하기 버그 [2]
성인e 2013/07/07  5481
329
   작업 중 필요해서 만든 문자열내에서 서열 위치찾기 함수.
바람 2012/12/08  4006
328
     [re] 작업 중 필요해서 만든 문자열내에서 서열 위치찾기 함수.
바람 2017/10/18  2130
327
   'ㅎ메모' 문자찾아 최종.
바람 2012/11/11  5003
326
   "ㅎ리스트박스" 다중선택 처리
지상현 2012/01/26  5290
325
   배경을 다룰 때 유의할 점.
바람 2012/01/10  5486
324
   사용자함수 버그 관련 나름 사용중인 해법.
바람 2012/01/10  4688
323
   '사용자함수' 불러올 때 버그
지상현 2012/01/04  4421
322
   'ㅎ메모'의 문자찾아 속도 비교 2탄.[2011.12.20 12:45 내용... [1]
바람 2011/12/20  4576
321
     [re] 마지막 부분에서 속도 느려짐 해결.
바람 2012/01/10  4378
320
     문자함수 사용하는 방법 추가 [1]
지상현 2011/12/22  4845
319
   ㅎ메모의 64k 제한..
바람 2011/11/19  5460
318
     [re] ㅎ메모의 64k 제한..
바람 2017/10/19  2465
LIST ALL   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이희철
로그인