[問題] 函式

看板C_and_CPP (C/C++)作者 (追風箏的孩子)時間15年前 (2010/10/06 02:01), 編輯推噓5(5018)
留言23則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 請由main()函數輸入(a,b,c)三個實數值,寫一個函數uabc()傳入(a,b,c)三個實數, 在uabc()將(a,b,c)排序為數(a>b>c),由main()呼叫執行完後,然後在main()印出 (a,b,c)之值.函數的原型宣告為:void uabc(float,float,float); 希望得到的正確結果: 聽說正確答案應該是原始輸入值 程式跑出來的錯誤結果: 排序好的結果 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++2008 有問題的code: (請善用置底文標色功能) 應該在函數部分 補充說明: 底下為程式碼 #include <iostream> using namespace std; void uabc(float ,float ,float ); void uabc(float a,float b,float c) { float temp,temp1,temp2,temp3,temp4,temp5,temp6; float h[3]; h[0]=a; h[1]=b; h[2]=c; if(b>a){ //swap(h[0],h[1]); temp=h[1]; h[1]=h[0]; h[0]=temp; if(c>a&&c<b){ //swap(h[1],h[2]); temp1=h[2]; h[2]=h[1]; h[1]=temp1;} if(c>b){ temp3=h[2]; temp4=h[0]; h[2]=h[1]; h[0]=temp3; h[1]=temp4;} } if(b<a){ if(c>a){ temp5=h[2]; temp6=h[0]; h[2]=h[1]; h[0]=temp5; h[1]=temp6;} if(c>b&&c<a){ //swap(h[1],h[2]); temp2=h[2]; h[2]=h[1]; h[1]=temp2;} } cout<<h[0]<<" "<<h[1]<<" "<<h[2]<<endl; } int main() { float a,b,c; cout<<"Enter 3 numbers\n"; cin>>a>>b>>c; uabc(a,b,c); cout<<a<<" "<<b<<" "<<c<<endl; return 0; } -- ◢███◣ ◢██◣ 洨派氣功!! ▄▆▄ ▄▆ ◥◥◥◥◥◥ / ◥ ▅◥ //// ˊ ˋ □︵□ ◣◢◣ ◢◣ ◢◣ ~───~ /// 啊~ ◥◣ ◥◣ ψqazsugf ⊙ ⊙ / ◥◣ ◥◣ ▃▁ . . ▂▂ ◤ ◥◤ ◥◤▅▃ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.245.27

10/06 02:05, , 1F
看起來像作業的東西XD
10/06 02:05, 1F

10/06 02:07, , 2F
void uabc(float *a,float *b,float *c); 這樣算提示吧
10/06 02:07, 2F

10/06 02:08, , 3F
作業狂潮
10/06 02:08, 3F

10/06 02:11, , 4F
都用VC++了 學一下debugger吧
10/06 02:11, 4F

10/06 02:11, , 6F
老師應該在教指標的部分,才會出這個作業吧
10/06 02:11, 6F

10/06 02:13, , 7F
之前的東西,當時我直接用if排,現在想改成正規的寫法
10/06 02:13, 7F

10/06 02:16, , 8F
函數的原型宣告為:void uabc(float,float,float);
10/06 02:16, 8F

10/06 02:17, , 9F
光是這個前提就有很大很大的問題了 XD
10/06 02:17, 9F

10/06 02:17, , 10F
如果參數再加一個, 你會哭哭喔~
10/06 02:17, 10F

10/06 02:18, , 11F
說不定是存結果到全域陣列理
10/06 02:18, 11F

10/06 02:18, , 12F
我討厭全域變數 XDDD
10/06 02:18, 12F

10/06 02:22, , 13F
參數太多應該就用bubble sort,之前在寫一種排序法一直
10/06 02:22, 13F

10/06 02:23, , 14F
掛掉,等到有個基本雛形在放上來好了
10/06 02:23, 14F

10/06 02:29, , 15F

10/06 02:29, , 16F
↑如果你知道這個程式的問題 你就會修改你的程式了
10/06 02:29, 16F

10/06 02:34, , 17F
真是簡單明瞭XD
10/06 02:34, 17F

10/06 03:09, , 18F
有兩種方法, 傳址給函式, 或是傳參考給函式, 如果你會
10/06 03:09, 18F

10/06 03:10, , 19F
泡泡排序了, 可以試試先把最大的移到最前面, 接著剩下
10/06 03:10, 19F

10/06 03:10, , 20F
兩者比大小視情況交換, 標準庫的 swap就可以直接拿來
10/06 03:10, 20F

10/06 03:10, , 21F
用了
10/06 03:10, 21F

10/06 03:23, , 22F
補充, 傳指標有 iter_swap 可以用
10/06 03:23, 22F

10/06 03:29, , 23F
樓上早點休息吧 XD 原po顯然已經去睡了
10/06 03:29, 23F
文章代碼(AID): #1CgsVSew (C_and_CPP)
文章代碼(AID): #1CgsVSew (C_and_CPP)