花之慶次 2007-2-20 13:43
以下C++程式有沒有出錯
以下是一個隨機函式, 如果沒有出錯的話可以不用理會
#include<iostream>
#include<cstdlib> // 隨機函式rand與設定隨機函式初值的函式srand
#include<ctime> // 程式在執行時的時刻資料 time
using namespace std;
int main() {
// 以程式執行的時間來設定隨機函式的初始值
srand(static_cast < unsigned int >(time(NULL)));
// 產生十個0到9之間的隨機整數
for(int i=0; i<10; ++i) cout << rand()%10 << ' ';
cout << '\n';
system("pause");
return 0;
}
[[i] 本帖最後由 花之慶次 於 2007-2-20 13:53 編輯 [/i]]
jayzhou_2046 2007-2-21 11:34
是一個隨機産生10個由0至9的數字的程式!
沒問題啊!
用borland bcc55 free command line tool編譯後,
運行順利, 感覺良好!
花之慶次 2007-2-21 22:04
好, 多謝你!!!
:):):):):)
花之慶次 2007-2-22 09:50
留意紅字部份:
#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
int main(){
// a: 被乘數, b: 乘數
int a, b, c, i, no;
cout << ">請輸入兩正數 :";
// 輸入a, b
cin >> a >> b;
// 列印aXb的直式部份
cout << "\n"
<< setw(10) << a << endl
<< setw(3) << "x" << setw(7) << b << endl
<< setw(10) << "-------------" << endl;
// 計算b由個位數起的每一位數(存入c), 分別乘以a的值
// i:控制輸出的位置
// no:儲存乘數b重複除以10後的值
i = 0;
no = b;
while(no){
c=no%10;
no=no/10;
cout << setw(10-i) << c*a << endl;
++i;
}
// 列印最後的相乘結果
cout << setw(10) << "-----------" << endl;
[color=Red]<< setw(10) << a * b << endl; [/color]
system("pause");
return 0;
}
在紅字部份中所明確指出的是parse, 下一步我應該如何改正呢??
花之慶次 2007-2-22 10:22
還有這個程式, 嚴格上應該沒有問題, 但不知何故不能執行:
#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
int main(){
int F, O, R,T,Y, E, N, S, I, X;
int i, j, t, y;
int forty, ten, sixty;
// 站圈由最小的數字到最大的數字
for(i=10234; i<98766; ++i){
// 分別計算各個數字, 及檢查其數字不能重複
F = i/10000;
O = (i/1000)%10;
if(0==F)continue;
R = (i/100)%10;
if(R==F||R==0)continue;
T=(i/10)%10;
if(T==F||T==0||T==R)continue;
y=i%10;
if(Y==F||Y==0||Y==R||Y==T)continue;
forty=F*10000+0*1000+R*100+t*10+y;
for(j=1; j<99; ++j){
E = j/10;
if(E==F||E==0||E==R||E==T||E==Y)continue;
N = j%10;
if(N==F||N==0||N==R||N==T||N==Y||N==E)continue;
ten = T*100+E*10+N;
sixty=forty+ten+ten;
S=sixty/10000;
I=sixty/10000%10;
X=sixty/100%10;
t=sixty/10%10;
y=sixty%10;
if(y!=Y||t!=T)continue;
if(S==F||S==0||S==R||S==T||S==Y||S==E||S==N)continue;
if(I==F||I==0||I==R||I==T||I==Y||I==E||I==N||I==S)continue;
if(X==F||X==0||X==R||X==T||X==Y|X==E||X==N||X==S||X==I)continue;
// 列印結果
cout << setw(10) << forty << endl
<< setw(10) << ten << endl
<< setw(3) << " +" << setw(7)<< ten << endl
<< setw(11) << "---------" << endl
<< setw(10) << sixty << endl;
}
}
system("pause");
return 0;
}
jayzhou_2046 2007-2-22 11:46
小弟相信是
if (S==F||S==0||S==R||S==T||S==Y||S==E||S==N) continue;
此句讓程式永遠回到for-loop的開頭,
沒法執行下面的statements.
小弟想請問一下此程式是用來幹什麼的?
cutymelon 2007-2-22 21:14
小弟我看不懂
duibuqi
花之慶次 2007-2-22 22:58
[quote]原帖由 [i]jayzhou_2046[/i] 於 2007-2-22 11:46 發表
小弟相信是
if (S==F||S==0||S==R||S==T||S==Y||S==E||S==N) continue;
此句讓程式永遠回到for-loop的開頭,
沒法執行下面的statements.
小弟想請問一下此程式是用來幹什麼的? [/quote]
這是一個有趣的數學問題, brute force method, 這是一個在所有的英文字母分別代表一個介於0到9的數字, 使到數字是可以不停地重複
其實我這是在溫習程式設計, 因為我過去本身有學過C/C++, 我是不想荒廢而已, 話時話, 最近我同所貼的問題是不是有一點深奧了一點??
jayzhou_2046 2007-2-23 08:43
請別介意!
1. brute force 意指嘗試有系統地去從所有有機會成為解答的"答案",
找出解答! 這本身不算是一個數學問題, 而是一種找解答的方法!
2. "所有的英文字母分別代表一個介於0到9的數字, 使到數字是可以不停地重複"
是什麼意思? 如果a代表0, b代表1, ..., j代表9, k代表0, ...
這樣不就可以"使到數字是可以不停地重複"?!
問題在於"問題有問題"!
3. 程式不能運行下去, 相信是編程邏輯, 用上太多continue.
如能透過使用if-else去處理為清晰些!
花之慶次 2007-2-23 09:58
[quote]原帖由 [i]jayzhou_2046[/i] 於 2007-2-23 08:43 發表
請別介意!
1. brute force 意指嘗試有系統地去從所有有機會成為解答的"答案",
找出解答! 這本身不算是一個數學問題, 而是一種找解答的方法!
2. "所有的英文字母分別代表一個介於0到9的 ... [/quote]
我沒有介意
第一點我正是要表達此意!!:applause::applause:
第二點真的不好意思, 是我打多了兩個"停地"字, 其實我想表達的是使到數字是可以不重複:L:L
第三點你的回應值得研究, 也許我看這本"深度學習C++"一書也許太過深奧!!:L:L
朋友, Thank you你
:bow::bow::bow::bow::bow::givemefive::jump:
jayzhou_2046 2007-2-23 11:06
小弟瀏覽了有關的網頁,
感覺挺有趣!
若推"深奧", 小弟認為"The Art of Programming"是其中之一!
當年蓋茨先生如是說:
如果看明了頭一卷的話,
可以到微軟找工作!
值得一提的是:
利用編程去解答組合數學的問題,
小弟覺得不是一般商業機構會用上!
最後, 請恕小弟在各位大大面前班門弄斧,
要寫出較少錯誤的程式,
1. 有好的編程習慣, 模式, 風格,
方便自己及他人閱讀.
2. 要懂得應用除錯功能.
最起碼要用上printf (c), 或cout (c++)
去把變數的內容
至於版主的第三個程式,
因中間有大量數字, 要偵錯不容易.
如果只是要把forty six用0 - 9不重複來代表,
大可不必用那麼多數字去找乘積及餘數.
可以利用一個像list的資料結構.
假設此list共存有0 - 9個數字.
每次隨機產生出來的0 - 9數字,
便從list中提取一個數字,
下一次隨機產生出來的0 - 8數字,
又再從list中提取一個數字.
那便不須要進行大量數字的運算了!
記著"簡單是美"這句說話.
花之慶次 2007-2-23 19:06
多謝你的忠告!!:bow::bow::bow::bow::bow:
頁:
[1]