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


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


LIST ALL
Posted by 지상현2006-01-15 14:24:43, Hit : 5254
"문을실수" 함수 완성!
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
167
     [re] 나른한 일요일 오후에의 잡설 [1]
지상현 2005/11/13  4839
166
   1145 번째의 비밀(?);; [2]
qkrwhdgns 2005/11/21  5590
165
     [re] 1145 번째의 비밀(?);; [2]
최재일 2005/11/21  4661
164
   XP 루나 어쩔수 없다..;; [15]
qkrwhdgns 2005/11/26  5016
163
     [re] 그룹박스는 밑판+이름표(밑판)?;; [2]
박종훈 2006/01/13  4130
162
   팝업메뉴-표시... [4]
qkrwhdgns 2005/11/27  4953
161
   창조파일 연결 바꾸기.. / 창조 nhpro.ini 파일 요리하기?? [6]
qkrwhdgns 2005/12/11  5313
160
   멀티버튼의 그림분할 속성... [5]
qkrwhdgns 2005/12/20  4515
159
   [버그보고] "문을수" 함수 버그... [8]
지상현 2006/01/14  5597

   "문을실수" 함수 완성! [10]
지상현 2006/01/15  5254
157
   창조에서 창없이 사용하기(?) [10]
박종훈 2006/01/30  5145
156
   & 입력하기 -_-+ [7]
박종훈 2006/02/05  4507
155
   [편한 Tip^^] 객체 위치 조정 [4]
박종훈 2006/02/11  4527
154
   WinAPI 레퍼런스 창조로 쓸수있는것들? [4]
박재성[날개달기] 2006/02/11  5167
153
   VB - 창조 명령어 비교(?) [2]
박종훈 2006/02/15  7908
152
   Filetr32.dll 를 이용해서 FTP 파일 다운로드&업로드 할때... [6]
이희창(빙고) 2006/02/19  5506
151
   창조에서 사용할수 없는 글자... [7]
이희창(빙고) 2006/02/25  4943
150
     [+] 비슷한 오류(?) 하나더... [7]
이희창(빙고) 2006/02/25  5385
149
   수동으로 창을 생성할시 주의 할점.. [1]
박종훈 2006/02/25  5006
148
   프로그램에서 내용정렬양식 거부한다.. [2]
박종훈 2006/02/26  5283
147
   메모장(제목 없음 - 메모장)이 실행되면 닫아버리고 없으면 ... [5]
이희창[빙고] 2006/03/15  6044
146
   Window Message 상수값들 -_-; [3]
박종훈 2006/03/15  6326
145
   프로세스 아이디 구하기 [4]
박재성[날개달기] 2006/03/22  5548
144
   [api] 작업관리자에서 프로그램 숨기기 [4]
박재성[날개달기] 2006/03/22  5855
143
   [도움말 오류..] 도움말의 문법에 오류가 ^^; [3]
박종훈 2006/03/25  4346
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이희철
로그인