QQ
Lv 4
QQ 發問時間: 電腦與網際網路程式設計 · 1 0 年前

給20點,有關c++的問題,我的程式有點小錯誤,請幫我改正

以下是我寫的c++程式,有點小錯誤,請幫我改正,感謝,另外還有兩個題目,會的請幫忙,一樣都是給20點

三提的題目在此

(1)設計程式以便將24小時表示的時間轉換成以12小時表示的時間;例如14:25應轉換成2:25PM。此程式的輸入為兩個整數,程式中應設計三個函式來處理輸入的工作、時間轉換的工作與輸出的工作;main函式中應包含迴圈來重複時間轉換,直到使用者回答No之後為止。

(2)已知kilogram = 2.2046 pounds、kilogram =1000 gram且pound = 16 ounces;請設計下列函式:

(壹)用來將以kilogram與gram為單位之重量轉成以pound與ounces為單位之重量之函式,

(貳)用來將以pound與ounces為單位之重量轉成以kilogram與gram為單位之重量之函式,

(參)main函式依使用者的輸入值來決定做那一種轉換,若使用者輸入1則做(壹)的轉換,若使用者輸入1則做(貳)的轉換,main函式中應包含迴圈來重複轉換工作,直到使用者回答No之後為止。

(3) 請設計main( )函式與一個名為seriesSum之函式:

(壹) seriesSum函式是用以計算級數a1 + a2 + … + an之sum值;

(a)此級數可為等差級數或等比級數,若為等差級數,則sum=(a1+an)*n/2;若為等比級數,則sum = a1*(1–rn) / (1-r);

(b)seriesSum函式應有4個參數(parameter);其中一個名為type之參數用以區分是那一種級數,若type之值為1,則表等差級數;若type之值為2,則表等比級數;其餘3個參數,分別代表等差級數中之a1、an、與n,或代表等比級數中之a1、r、與n。

(貳) main( )函式用以

(a)輸入等差級數中之a1、an、與n之值,再呼叫seriesSum函式以計算等差級數之sum值,並將sum輸出;再

(b)輸入等比級數中之a1、r、與n之值,再呼叫seriesSum函式以計算等比級數之sum值,並將sum輸出。

(註:庫存函式pow(x,y)可用以計算xy之值 )

以下是我寫的程式,我寫的是第3提

#include<iostream>

using namespace std;

double seriesSum(char type,double a1,double an,double n,double r);

int main ()

{

int sum;

double a1,an,n,r;

char type;

cout<<\"請輸入一個數字為1或2\"<<endl;

cin>>type;

if(type==1)

{

cout<<\"請輸入等差及數的首項,末項與項數\"<<endl;

cin>> a1 >> an >> n ;

sum=seriesSum(type,a1,an,n,r);

cout<< sum <<endl;

}

else

{

cout<<\"請輸入等比及數的首項,公比與項數\"<<endl;

cin>> a1 >> r >> n ;

sum=seriesSum(type,a1,r,n,an);

cout<< sum <<endl;

}

return 0;

}

double seriesSum(char type,double a1,double an,double n,double r)

{

if(type==1)

return ((a1+an)*n/2);

else

return (a1*(1-(r,n))/(1-r));

}

現在不管我輸入1或2都是跑等比級數,可以幫我改正嗎?

已更新項目:

還有等比的答案跑出來都是0,可以幫忙改正一下ㄇ?

2 個已更新項目:

希望另外兩題可以一起幫我解答一下,感謝各位

2 個解答

評分
  • Almond
    Lv 6
    1 0 年前
    最佳解答

    3. #include<iostream>#include<math.h> //幫你加入math.h題頭檔。using namespace std;double seriesSum(char type,double a,double b,double c); /*幫你把參數簡單化,就type , a , b, c這樣而已,看的比較清楚。*/int main (){int sum;double a1,an,n,r;char type;cout<<"請輸入一個數字為1或2"<<endl;cin>>type;if(type=='1') //幫你修改if判斷式這行而已。{cout<<"請輸入等差及數的首項,末項與項數"<<endl;cin>> a1 >> an >> n; //提醒你,輸入時是,首頁 末項 項數,不要輸入錯了。sum=seriesSum(type,a1,an,n);cout<< sum <<endl;}else{cout<<"請輸入等比及數的首項,公比與項數"<<endl;cin>> a1 >> r >> n; //提醒你,輸入時是,首頁 公比 項數,不要輸入錯了。sum=seriesSum(type,a1,r,n);cout<< sum <<endl;}return 0;}double seriesSum(char type,double a,double b,double c){if(type=='1')return ((a+b)*c/2); //如果type是1的話,a=a1,b=an,c=n。elsereturn (a*(1-pow(b,c))/(1-b)); //type是2的話,a=a1,b=r,c=n。}執行結果:

    圖片參考:http://img96.imageshack.us/img96/4203/0721ao9.jpg

    2006-07-21 11:41:20 補充:

    第一題在這:http://img146.imageshack.us/img146/917/07212dg1.jp...

    參考資料: 自己
  • 1 0 年前

    a.. 改成if(type=='1')看看吧

    因為你是char type;

還有問題?馬上發問,尋求解答。