PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
以月為影
Senior Member
 

加入日期: Nov 2002
文章: 1,414
回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by asdf77885511
指標加迴圈加switch可以寫得出來.............
另外也可以不用指標用除的就可以將商數和餘數分離的方式也可以..........
六位數除100000~~~得到的商就是第六位數~~~
六位數除10000~~~~得到的商就是第五位數~~~依次類推.........
用除法外加迴圈加switch也可以寫得出來................
這個程式我覺得應該不會超過三十行...........


功力不夠....寫了80行...
     
      
舊 2003-10-24, 12:52 AM #11
回應時引用此文章
以月為影離線中  
asdf77885511
New Member
 

加入日期: Jun 2003
文章: 8
回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by asdf77885511
指標加迴圈加switch可以寫得出來.............
另外也可以不用指標用除的就可以將商數和餘數分離的方式也可以..........
六位數除100000~~~得到的商就是第六位數~~~
六位數除10000~~~~得到的商就是第五位數~~~依次類推.........
用除法外加迴圈加switch也可以寫得出來................
這個程式我覺得應該不會超過三十行...........

說錯了..........
假設六位數變數是i
i除10~~~~得到的商設為j~~~~而餘數為第一位數的0-9
j除10~~~~得到的商設為x~~~而餘數為第二位數的0-9
...........依此類推
而使用迴圈每次皆除以10再配合switch迴圈執行六次就可以做出來了
 
__________________
哇系金a.........
舊 2003-10-24, 12:56 AM #12
回應時引用此文章
asdf77885511離線中  
asdf77885511
New Member
 

加入日期: Jun 2003
文章: 8
回覆: 回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by 以月為影
功力不夠....寫了80行...

不會丫
我寫應該也差不多吧.......
只是行的算法不一樣吧.........
不曉得可不可以邊輸入邊判斷......
我覺得她們老師的用意是要讓她們有資料演算判斷的能力吧...........
__________________
哇系金a.........
舊 2003-10-24, 01:03 AM #13
回應時引用此文章
asdf77885511離線中  
shukae
*停權中*
 
shukae的大頭照
 

加入日期: Jun 2002
您的住址: 仙女銀河星系, 跨克星
文章: 1,791
就算用 basic
也可輕鬆寫出來, 25 列搞定....
要不是真實模式有單一節區64k大小限制
不然一次產生10萬組也不是問題
本來想用Perl寫, 不過 QB 大家應該比較容易看懂意思
直接轉成 C 也應該比較方便吧


DECLARE FUNCTION rand! (start!, ends!) ' 自訂函數
DIM ss$(1 TO 1000) ' 宣告 1 ~ 1000 的字串陣列
DIM num(0 TO 9) ' 宣告 0 ~ 9 的數字陣列

' 產生一大群長度介於 1~50 的數字字串組 (不固定長度)
' 產生組數大於1小於1000 (不固定組數)
FOR a = 1 TO rand(1, 1000)
FOR b = 1 TO rand(1, 50)
ss$(a) = ss$(a) + CHR$(rand(48, 57))
NEXT
NEXT

' 開始計算每組數字與其中數字出現的次數
FOR a1 = 1 TO a - 1
FOR b1 = 1 TO LEN(ss$(a1))
x = ASC(MID$(ss$(a1), b1, 1)) - 48 ' 把字串的數字轉成ASCII碼
num(x) = num(x) + 1 ' 再減 48 就會取得 "值"
NEXT ' 用這個 "值" 當成陣列的索引, 直接 +1
NEXT ' 如此就可以達到統計出現次數的目的

' 輸出結果
FOR z = 0 TO 9
PRINT z; "總共出現: "; num(z); "次"
NEXT

' 自定函數
FUNCTION rand (start, ends) ' 設定起迄數字
RANDOMIZE TIMER ' 設定亂數種子
rand = INT(RND * (ends - start + 1)) + start ' 產生亂數
END FUNCTION
舊 2003-10-24, 01:05 AM #14
回應時引用此文章
shukae離線中  
LucasY
Advance Member
 
LucasY的大頭照
 

加入日期: Nov 2002
文章: 427
回覆: 回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by asdf77885511
說錯了..........
假設六位數變數是i
i除10~~~~得到的商設為j~~~~而餘數為第一位數的0-9
j除10~~~~得到的商設為x~~~而餘數為第二位數的0-9
...........依此類推
而使用迴圈每次皆除以10再配合switch迴圈執行六次就可以做出來了

我是覺得他們老師說六位整數還不如讓他用字元陣列寫算了,新手剛近來要他處理那些C/C++的指標,我看大概會暴掉吧
我有的教授老說C/C++的指標其實是壞習慣,可是用的好高興啊,只要bug不是出現在指標的話
舊 2003-10-24, 01:06 AM #15
回應時引用此文章
LucasY離線中  
銀色三冠王IS
Golden Member
 
銀色三冠王IS的大頭照
 

加入日期: Jan 2001
文章: 2,724
回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by shukae
等一下我寫一段給你看
完全不需要使用 Switch 或類似的語法
用陣列與迴圈做做得到了 ^^

剛剛想到以前用過陣列的方法..
配合asdf77885511提到的做法..

基本上一開始宣告的還是差不多,但原本用來計次數的10個變數count_1 ..~ _10
改成用陣列宣告 int count[10]; //大小為10,實際指標為數字0~9 //

原輸入數值除以10 ,餘數為 x , 則陣列 count[x]+=1; (餘數範圍一定在0~9)
得的商繼續除以10 ,餘數為 x , 則陣列 count[x]+=1;
迴圈總共作六次,就可以從陣列count[] 中得到每個數字出現過的次數.
這樣真的不需要30行..也不需要用到switch.

不過大家還是幫原作者想想C語言switch解決這題目的方式吧..
畢竟先交出老師要求的方式比較重要..
舊 2003-10-24, 01:12 AM #16
回應時引用此文章
銀色三冠王IS離線中  
shukae
*停權中*
 
shukae的大頭照
 

加入日期: Jun 2002
您的住址: 仙女銀河星系, 跨克星
文章: 1,791
回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by 銀色三冠王IS
剛剛想到以前用過陣列的方法..
配合asdf77885511提到的做法..

基本上一開始宣告的還是差不多,但原本用來計次數的10個變數count_1 ..~ _10
改成用陣列宣告 int count[10]; //大小為10,實際指標為數字0~9 //

原輸入數值除以10 ,餘數為 x , 則陣列 count[x]+=1; (餘數範圍一定在0~9)
得的商繼續除以10 ,餘數為 x , 則陣列 count[x]+=1;
迴圈總共作六次,就可以從陣列count[] 中得到每個數字出現過的次數.
這樣真的不需要30行..也不需要用到switch.

不過大家還是幫原作者想想C語言switch解決這題目的方式吧..
畢竟先交出老師要求的方式比較重要..


我上面貼的 QB 程式, 若換成 Perl 程式, 甚至可以壓縮到20列以內
若以 Switch 也可以配合長整數陣列, 而不要宣告很多個長整數
這樣就會使程式很有彈性, 而且易於修改
不過這種Switch語法.... Perl 寫不出來.... Perl 沒有這種語法.....(至少我沒看過)
ps. 我不會 C++ =.=, 目前正努力學習 Gtk2-Perl 中

用除法求餘數雖然可以, 但數值若很長
給你50位數, 馬上死在路邊

此文章於 2003-10-24 01:26 AM 被 shukae 編輯.
舊 2003-10-24, 01:19 AM #17
回應時引用此文章
shukae離線中  
shukae
*停權中*
 
shukae的大頭照
 

加入日期: Jun 2002
您的住址: 仙女銀河星系, 跨克星
文章: 1,791
回覆: 回覆: 回覆: 回覆: 會c++的大大幫個忙......

---刪---
舊 2003-10-24, 01:24 AM #18
回應時引用此文章
shukae離線中  
asdf77885511
New Member
 

加入日期: Jun 2003
文章: 8
回覆: 回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by shukae
我上面貼的 QB 程式, 若換成 Perl 程式, 甚至可以壓縮到20列以內
若以 Switch 也可以配合長整數陣列, 而不要宣告很多個長整數
這樣就會使程式很有彈性, 而且易於修改
不過這種Switch語法.... Perl 寫不出來.... Perl 沒有這種語法.....(至少我沒看過)
ps. 我不會 C++ =.=, 目前正努力學習 Gtk2-Perl 中

用除法求餘數雖然可以, 但數值若很長
給你50位數, 馬上死在路邊

做迴圈就好了丫...........跟位數長不長沒有關係............
__________________
哇系金a.........
舊 2003-10-24, 01:29 AM #19
回應時引用此文章
asdf77885511離線中  
shukae
*停權中*
 
shukae的大頭照
 

加入日期: Jun 2002
您的住址: 仙女銀河星系, 跨克星
文章: 1,791
回覆: 回覆: 回覆: 回覆: 回覆: 會c++的大大幫個忙......

引用:
Originally posted by asdf77885511
做迴圈就好了丫...........跟位數長不長沒有關係............


嗯..... 我的意思是說, 因為 C 語言有變數型態的定義
我不曉得C語言能定義的整數數值能有多大啦~~~
但不論如何都有位數的極限, 數值處理的位數長度會受限制
所以若以接受數值輸入的方法, 最好採用字串變數
用字串變數與ASCII碼之間的對應關係來做
才不會產生溢位的問題
舊 2003-10-24, 01:38 AM #20
回應時引用此文章
shukae離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:04 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2026。