龙芯俱乐部开源社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2210|回复: 3

终于弄了个像点样的C++程序,得瑟一下。

[复制链接]

25

主题

215

帖子

8万

积分

论坛元老

Rank: 8Rank: 8

积分
86131
发表于 2019-9-1 10:06:24 | 显示全部楼层 |阅读模式
本帖最后由 xieyug2012 于 2019-9-1 10:51 编辑

最近有了点小收获,附加要求是 :
1,物品种类有限 ,还好不算少 ,<= 给定的 10种。
2,总金额有限,还好不算少 ,<=180RMB。

为了充分表现出老板对我们的无比关怀,编程如下:  (你懂的,¥不@&能#*浪#@费……每#……一**分@!钱)
第一版:
  1. // .cpp : Defines the entry point for the console application.
  2. //#include "stdafx.h"
  3. #include "iostream"
  4. #include "stdio.h"
  5. #include "time.h"
  6. using namespace std ;
复制代码

第二版:
  1. // cpp : Defines the entry point for the console application.

  2. //#include "stdafx.h"

  3. #include <iostream>

  4. #pragma warning(disable:4786)

  5. #include <string>

  6. #include <vector>

  7. #include <algorithm>

  8. #include "time.h"

  9. using namespace std ;

  10. double curtotal_d = 0 ;

  11. double total_d = 180 ;

  12. class XLB

  13. {

  14. public:

  15.     string name;  // 名称

  16.     double unitprice; //单价

  17.     int quantity;  // 当前数量=最大数量

  18.     int maxquant;  //最大数量

  19.     XLB() {};

  20.     XLB(double value , string   description)

  21.     {

  22.         maxquant = total_d/value ; //最大数量

  23.         name = description;  // 名称

  24.         quantity = maxquant ; // 当前数量=最大数量

  25.         unitprice=value ; //单价

  26.     }

  27.     //        virtual ~XLB();

  28.     ~XLB() {};

  29.     bool operator < (const XLB& X) const

  30.     {

  31.         if ( unitprice == X.unitprice)

  32.         {

  33.             if ( name == X.name)

  34.             {

  35.                 return false;

  36.             }

  37.             else

  38.             {

  39.                 return name > X.name;

  40.             }

  41.         }

  42.         else

  43.         {

  44.             return unitprice > X.unitprice;

  45.         }

  46.     }

  47. private:

  48. };

  49. vector <XLB> LBV ;

  50. // 输入名称数组

  51. string name1 [] = {"wupin1","wupin2","wupin3","wupin4","wupin5","ywupin6","wupin7","wupin8","wupin9","wupin0"};

  52. double danj  [] = {77.31, 49.9 , 4.8 ,49,16.52,16.44,15.27,13.21,5.12 ,4.83 }; //输入单价数组

  53. int totalnum = 10 ;//种类数量

  54. double difference = 0.05 ; // 价位差

  55. int  whilenum = 0 ;

  56. double totalprices(int tt) //价格总和

  57. {

  58.     double  total1 =0 ;

  59.     //cout <<whilenum++ <<"  , \n" ;

  60.     for(int t1  =0 ; t1 <= tt ; t1++)

  61.     {

  62.         {

  63.             total1 = LBV[t1].quantity * LBV[t1].unitprice + total1 ;

  64.         }

  65.     }

  66.     return total1;

  67. }

  68. int totalquantity() //数量总和

  69. {

  70.     int total1 = 0 ;

  71.     int i = 0 ;

  72.     for (i = 0 ; i<totalnum-1 ; i++ )

  73.     {

  74.         total1 = total1 +LBV[i].quantity;

  75.     }

  76.     return total1;

  77. }

  78. int main(int argc, char* argv[])

  79. {

  80.     cout<<"wupin1,wupin2,wupin3,wupin4,wupin5,ywupin6,wupin7,wupin8,wupin9,wupin0" \n" ;

  81. time_t endtime,starttime;//分析时间差

  82. starttime = time(NULL);

  83.     int i = 0 ;

  84.     for(i=0; i<totalnum; i++)

  85.     {

  86.         LBV.push_back(XLB(danj[i],name1[i]));

  87.     }

  88.     sort(LBV.begin(),LBV.end());

  89.     cout<<" 排序完成  \n";

  90.     i = 0 ; //商品序号

  91.     while ( ( i < totalnum ) && ( totalquantity() != 0 ) )

  92.     {

  93.         ///while 111

  94.         double totalp = totalprices(i);

  95.         char g ;

  96.         // cin >> g ; //暂停

  97.         if (totalp< total_d )//如果当前总价<180 ,

  98.         {

  99.             if( i == (totalnum -1)) //到达最后一个(最便宜的)

  100.             {

  101.                 if ( totalp >= (total_d - difference) )// 差额<5分钱?

  102.                 {

  103.                     cout<<whilenum++ <<",";

  104.                     for(int num = 0 ; num <totalnum ; num++ )

  105.                     {

  106.                         cout<<LBV[num].quantity<<",";

  107.                     }

  108.                     cout<< " totalp="<<totalp<<endl;

  109.                     // cin >> g ; //暂停

  110.                     ;

  111.                 }        //输出数量组合                        最后



  112.                 if(LBV[i].quantity >0 )

  113.                 {

  114.                     LBV[i].quantity -- ;     //数量减一

  115.                 }

  116.                 else if(LBV[i].quantity ==0 )

  117.                 {

  118.                     while(LBV[--i].quantity ==0 )

  119.                     {

  120.                         ;

  121.                         LBV[i+1].quantity = LBV[i+1].maxquant ;

  122.                     }

  123.                     if(LBV[i].quantity > 0 )

  124.                     {

  125.                         LBV[i].quantity -- ;

  126.                         LBV[i+1].quantity = LBV[i+1].maxquant ;

  127.                     }

  128.                 }

  129.             }//到达最后一个(最便宜的)

  130.             else

  131.             {

  132.                 i++; //下一个商品//k1

  133.             }

  134.         }//如果当前总价<180 ,

  135.         else

  136.         {

  137.             //如果当前总价>180 ,

  138.             if(LBV[i].quantity >0 )

  139.             {

  140.                 LBV[i].quantity -- ;     //数量减一

  141.             }

  142.             else if(LBV[i].quantity ==0 )

  143.             {

  144.                 LBV[i].quantity = LBV[i].maxquant ;

  145.                 while(LBV[--i].quantity ==0 )

  146.                 {

  147.                     ;

  148.                     LBV[i+1].quantity = LBV[i+1].maxquant ;

  149.                 }

  150.                 if(LBV[i].quantity > 0 )

  151.                 {

  152.                     LBV[i].quantity -- ;

  153.                     LBV[i+1].quantity = LBV[i+1].maxquant ;

  154.                 }

  155.             }

  156.         }  //如果当前总价>180 ,

  157.     }//while

  158. endtime = time(NULL);

  159.         printf("时间差 =%f \n",difftime(endtime,starttime));

  160.     printf("Hello World! \n This is the OPENLOONGSON Smart loong .\n");

  161.     return 0;

  162. }

复制代码

编译如下 :
编译.jpg
从虚拟机直接用鼠标拖曳复制到U盘.jpg
从虚拟机直接用鼠标拖曳复制到U盘.jpg
到开发板运行第一个程序
运行1.jpg

运行第二个程序

运行2.jpg

第二版程序用了VECTOR技术,虽然可以方便修改用于以后其他商品组合,但时间多了3倍。看来,AI不是那么好弄的。

56

主题

393

帖子

43万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
438313
发表于 2019-10-8 04:54:52 | 显示全部楼层
不错 你是不是可以在码云上开一个项目分享给大家呢?

25

主题

215

帖子

8万

积分

论坛元老

Rank: 8Rank: 8

积分
86131
 楼主| 发表于 2020-8-27 13:49:16 | 显示全部楼层
sn2015ol 发表于 2019-10-8 04:54
不错 你是不是可以在码云上开一个项目分享给大家呢?

还是不用了吧

25

主题

215

帖子

8万

积分

论坛元老

Rank: 8Rank: 8

积分
86131
 楼主| 发表于 2021-5-9 17:48:24 | 显示全部楼层
本帖最后由 xieyug2012 于 2021-5-9 17:49 编辑

最近闲逛网络,发现linux大佬对C++的使用有一些特别的情绪。我等小鸟还是知趣点吧。就算是不用C++的那些stl,参考那些C数据结构的书,用C语言也可以写出相似功能的代码。对于这些小打小闹来说,练习一下C数据结构,也是个不错的选择。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源社区  

GMT+8, 2021-10-16 04:28 , Processed in 0.486538 second(s), 41 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表