作者obelisk0114 (追風箏的孩子)
看板C_and_CPP
標題[問題] 函式
時間Wed Oct 6 02:00:56 2010
( *[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
推 stupid0319:看起來像作業的東西XD 10/06 02:05
→ stupid0319:void uabc(float *a,float *b,float *c); 這樣算提示吧 10/06 02:07
推 purpose:作業狂潮 10/06 02:08
→ james732:都用VC++了 學一下debugger吧 10/06 02:11
推 stupid0319:老師應該在教指標的部分,才會出這個作業吧 10/06 02:11
→ obelisk0114:之前的東西,當時我直接用if排,現在想改成正規的寫法 10/06 02:13
→ james732:函數的原型宣告為:void uabc(float,float,float); 10/06 02:16
→ james732:光是這個前提就有很大很大的問題了 XD 10/06 02:17
→ loveme00835:如果參數再加一個, 你會哭哭喔~ 10/06 02:17
→ loveme00835:說不定是存結果到全域陣列理 10/06 02:18
→ james732:我討厭全域變數 XDDD 10/06 02:18
→ obelisk0114:參數太多應該就用bubble sort,之前在寫一種排序法一直 10/06 02:22
→ obelisk0114:掛掉,等到有個基本雛形在放上來好了 10/06 02:23
→ james732:↑如果你知道這個程式的問題 你就會修改你的程式了 10/06 02:29
推 loveme00835:真是簡單明瞭XD 10/06 02:34
→ loveme00835:有兩種方法, 傳址給函式, 或是傳參考給函式, 如果你會 10/06 03:09
→ loveme00835:泡泡排序了, 可以試試先把最大的移到最前面, 接著剩下 10/06 03:10
→ loveme00835:兩者比大小視情況交換, 標準庫的 swap就可以直接拿來 10/06 03:10
→ loveme00835:用了 10/06 03:10
推 loveme00835:補充, 傳指標有 iter_swap 可以用 10/06 03:23
→ james732:樓上早點休息吧 XD 原po顯然已經去睡了 10/06 03:29