Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 3620|回复: 26
打印 上一主题 下一主题

[C]车费问题 - “本人头脑生锈,逻辑思考功能严重受损。”

[复制链接]

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

跳转到指定楼层
1#
发表于 2010-7-21 03:26 PM |只看该作者 |倒序浏览
本帖最后由 ~Kai 于 2010-7-21 03:31 PM 编辑

各位大大们大家好,很不好意思又来打扰。
小弟有些疑惑,希望各路高手前来帮忙。

我需要做一个车票的程式,关于价钱的部分令我百思不解...
请看以下:-
车站A ← RM0.80 → 车站B ← RM0.60 → 车站C ← RM1.20 → 车站D ← RM0.90 → 车站E

比如说乘客在车站A要到车站C的话,车费就是RM0.80 + RM0.60;假如乘客要从车站E去到车站A的话,车费就是RM0.90 + RM1.20 + RM0.60 + RM0.80...
请问这一段要怎么写呢?




收藏收藏0

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

2#
发表于 2010-7-21 03:59 PM |只看该作者
各位大大们大家好,很不好意思又来打扰。
小弟有些疑惑,希望各路高手前来帮忙。

我需要做一个车票的程式,关于价钱的部分令我百思不解...
请看以下:-
车站A ← RM0.80 → 车站B ← RM0.60 → 车站C ← RM1.20 → 车站D ← RM0.90 → 车站E


比如说乘客在车站A要到车站C的话,车费就是RM0.80 + RM0.60;假如乘客要从车站E去到车站A的话,车费就是RM0.90 + RM1.20 + RM0.60 + RM0.80...
请问这一段要怎么写呢?
~Kai 发表于 2010-7-21 03:26 PM



只要你能够写出 A -> C 的逻辑,自然把 E -> A 转换为 A -> E 套用即可


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

3#
发表于 2010-7-21 04:02 PM |只看该作者
回复 2# Super-Tomato
乘客可以输入从任何车站到任何车站... 头痛在这里...


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

4#
发表于 2010-7-21 04:18 PM |只看该作者
回复  Super-Tomato
乘客可以输入从任何车站到任何车站... 头痛在这里...
~Kai 发表于 2010-7-21 04:02 PM



不就是车站往前或往後做计算而已啊


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

5#
发表于 2010-7-21 04:52 PM |只看该作者
各位大大们大家好,很不好意思又来打扰。
小弟有些疑惑,希望各路高手前来帮忙。

我需要做一个车票的程 ...
~Kai 发表于 2010-7-21 03:26 PM


你好, 我有个可行的方式。
一个 Array, 两个变量, 一个"方法(Method, 要不要也可以)" 就能实现。

  1. distancePrice[0] = 0.80; // A 去 B 车程 , 这里我们当成是Index 1
  2. distancePrice[1] = 0.60; // B 去 C 车程 , 这里我们当成是 Index 2
  3. distancePrice[2] = 1.20; // C 去 D 车程, 这里我们当成是Index 3
  4. distancePrice[3] =  0.90; // D 去 E 车程, 这里我们当成是 Index 4
  5. // 以上当成Array的初始。

  6. //接下来的两个变量(var), 我们要记录 A~ C 的车程。
  7. //那么 就会经过 , A -> B , B->C , 根据 Array 的Index 的话, 我们就说是经过 , 1 , 2。
  8. //所以我们来两个变量, int startPoint , int endPoint;
  9. //假设
  10. int startPoint = 1;
  11. int endPont = 2;

  12. //先来个判断, 假设如果 是 C 去 A 的话。 就要把他纠正成 A -> C (感谢TOMATO 提到的Point)
  13. if(startPoint > endPoint)
  14. {
  15. int temp = startPoint; // temp 的意义不大, 只是为了暂时存着 startPoint, 以免在转换的过程中丢失。
  16. sPoint = endPoint;
  17. endPoint = temp;
  18. }

  19. //接下来就来个变量记录 TotalPrice。
  20. double TotalPrice = 0; // 初始话, 我们就把他set 成0, 以免Compiler 篇译不到的危险。

  21. // 这个For 起点是 使用者输入的 startPoint,为了配合 Array Index 是0 开始, 我们就-1, 终点的时候假设是2 我们这里就拿 1 好了,  所以现在我们的循环是 0 , 1

  22. for (int i = startPoint-1; i < endPoint;  i++)
  23.             {
  24.                TotalPrice+= distancePrice[i];
  25.             }


  26. //你的output 是 1.40

  27. //////////////////////////////////////////////////////////////////////////////完整的 Code///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  28.             distancePrice = new double[4];
  29.             distancePrice[0] = 0.80;
  30.             distancePrice[1] = 0.60;
  31.             distancePrice[2] = 1.20;
  32.             distancePrice[3] = 0.90;

  33.             int startPoint = 1;
  34.             int endPoint = 2;

  35.             if (startPoint > endPoint)
  36.             {
  37.                 int temp = startPoint;
  38.                 startPoint = endPoint;
  39.                 endPoint = temp;
  40.             }

  41.             double total = 0;

  42.             for (int i = startPoint-1; i < endPoint; i++)
  43.             {
  44.                 total += distancePrice[i];
  45.             }
复制代码


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

6#
发表于 2010-7-21 05:07 PM |只看该作者
回复 5# 宅男-兜着走
对啊!为什么我就是没想到这个!
我之前一直在想用算出from和to之间间隔几个站,然后每过一个站就加一个价钱。但不能有效的控制每个站的价钱...
然后又在想用if else (什么&&什么)一个个打出来,但这样如果很多站打到玩的话我会死掉...
谢谢你!


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

7#
发表于 2010-7-21 05:21 PM |只看该作者
回复  宅男-兜着走
对啊!为什么我就是没想到这个!
我之前一直在想用算出from和to之间间隔几个站,然后 ...
~Kai 发表于 2010-7-21 05:07 PM


你的方法是可以实现的-rf
只是如果换成是我做的话, Code 会变到非常非常的长==
所以~ 简单就是美!


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

8#
发表于 2010-7-21 05:43 PM |只看该作者
回复 7# 宅男-兜着走
我用了你的方法,但是有问题...
如果乘客只坐一个站的话,价钱是两个站的。
比如所我要从车站A去车站B,价钱应该是RM0.80,但显示的是RM0.80+RM0.60呢...


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

9#
发表于 2010-7-21 05:48 PM |只看该作者
本帖最后由 宅男-兜着走 于 2010-7-21 05:53 PM 编辑
回复  宅男-兜着走
我用了你的方法,但是有问题...
如果乘客只坐一个站的话,价钱是两个站的。
比如所我 ...
~Kai 发表于 2010-7-21 05:43 PM


没啊~ 如果是 A-> B , 那么 车程是  sPoint = 1 , ePoint = 1; 所以价钱是 0.80
A , 是车程 1, B 还是车程1
A-> C 所以是 A->B 车程 1, B-> C 车程2 , 所以sPoint是 1, ePoint 是2
A->D , A->B 车程 1, B->C 车程2 , C->D 车程 3 , 所以是 sPoint 1, ePoint 3.

多一个例子,  B->C , 车程2 , 所以是 sPoint 是 2, ePoint 是 2


回复

使用道具 举报

13

主题

0

好友

8388

积分

金鼎名嘴

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

10#
发表于 2010-7-21 05:57 PM |只看该作者
本帖最后由 ~Kai 于 2010-7-21 05:59 PM 编辑

回复 9# 宅男-兜着走
  1. for (i = startPoint - 1; i < endPoint; i++)
  2.         {
  3.                 total += distantPrice[i];
  4.         }
复制代码
车站A车站B就是startPoint = 1,endPoint = 2...

我的code是这样
  1. scanf("%d", &start);
  2. scanf("%d", &end);

  3. if (start > end)
  4.         {
  5.                 temp = start;
  6.                 start = end;
  7.                 end = temp;
  8.         }
  9.         for (i = start - 1; i < end; i++)
  10.         {
  11.                 ticket += price[i];
  12.         }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-11-29 07:24 AM , Processed in 0.103974 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部