查看單個文章
舊 2007-12-10, 03:43 PM   #4 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時級別:97 | 在線時長:9894小時 | 升級還需:102小時
註冊日期: 2002-12-07
文章: 13359
精華: 0
現金: 26484 金幣
資產: 3024394 金幣
預設

遇到這種問題
先把變數設定好
錢是 N
跑幾公里是 x
計價單位 y
每單位花多少錢 n
暫存變數 tmp

再來是先寫外圈
while (N>0) {
 x=x+y;
 N=N-n;
}

接著再在圈內寫條件及改寫
語法:
if (N>=80) { //必須至少有 80元

  /* 前面是2公里內,每公里 80元,題指個人是這麼解釋,如有誤那這一段就要改了*/
  y=1;
  n=80;
  while (N>0) {
    x=x+y;
    if (x>2) {
      x=2;
      break; //離開 while 迴圈
      }

    //試算是否可以跑下一個單位
      tmp=N-n;
    if (tmp>0) {
      N=tmp; //扣款成立
      }else {
      x=x-y; //錢變負的,之前跑得y公里要扣回
          break;
    }
  } //第一段的 while迴圈結尾

  if (x>=2) { //需跑到2公里才可套用以下算式

      /* 後面是以每0.5公里 加5元來算,*/
    y=0.5;
    n=5;
    while (N>0) {
      x=x+y;
      //試算是否可以跑下一個單位
         tmp=N-n;
      if (tmp>0) {
        N=tmp; //扣款成立
          }else {
        x=x-y; //錢變負的,之前跑得y公里要扣回
              打折副程式;
         break;
      }

      if (打折副程式==1) break;
    }
  } //第二段的 while迴圈結尾
}

int 打折副程式()
{
  if (x>=30) {

    //試算 是否還有錢可以跑 0.5公里
       tmp=N*0.8; //八折
        if ((N-tmp)<5) { //至少要剩五元
             N=tmp;
        打折副程式=1;
     }
  }
}

此帖於 2007-12-10 03:58 PM 被 mini 編輯.
mini 目前離線  
送花文章: 2016, 收花文章: 8010 篇, 收花: 26819 次
回覆時引用此帖
向 mini 送花的會員:
vp6662 (2007-12-10)
感謝您發表一篇好文章