你们有没有会的啊,求解!!!!!!!

XiaoErLeeIsGod 2012-09-05 03:07:52
如下
品种 日期 成交 持仓
A 9.2 10 21
B 9.2 12 21
C 9.2 33 32
S 9.3 22 21
F 9.3 11 11
怎样求出每天成交乘以持仓最大的那条记录,用C/C++写
输出为
品种 日期 成交 持仓
C 9.2 33 32
S 9.3 22 21

怎么写,怎么写
...全文
101 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2012-09-05
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
#include <map>
#include <cassert>
#include <sstream>
class Record
{
public:
Record() : value_(0.0)
{}
Record(std::string const& rec) : record_(rec)
{
std::istringstream iss(rec);
//A 9.2 10 21
std::string cat;
double vol, stock;
std::getline(iss, cat, ' ');
std::getline(iss, date_, ' ');
iss >> vol >> stock;
assert(iss);
value_ = vol * stock;
}
double value() const
{
return value_;
}
std::string toString() const
{
return record_;
}
std::string date() const
{
return date_;
}
private:
std::string record_;
double value_;
std::string date_;
};

int main()
{
std::string line,title;
std::getline(std::cin, title);
std::map<std::string, Record> maxRecords; //date->record
while(std::getline(std::cin, line))
{
Record r(line);
std::string date = r.date();
if(maxRecords[date].value() < r.value())
{
maxRecords[date] = r;
}
}
std::cout << title << std::endl;
for(std::map<std::string, Record>::iterator it = maxRecords.begin(); it != maxRecords.end(); ++it)
{
std::cout << it->second.toString() << std::endl;
}
return 0;
}


编译成main.exe后, 运行 main.exe < records.txt。 你记录保存在record.txt
Corner 2012-09-05
  • 打赏
  • 举报
回复

typedef struct
{
#define DATE_LEN 10
char type; //品种
char date[DATE_LEN];//日期,日期长度限制为9个字节
int bargain_num; //成交
int position; //持仓
}Commodities;

int GetMaxCommodity(Commodities* commodities, int num)
{
//assert(commodities != NULL)
int index = -1;
int i;
int max_num = -1;
int tmp_num = 0;
for(i = 0; i < num; i++)
{
tmp_num = (commodities + i)->bargain_num * (commodities + i)->position;
if(max_num < tmp_num)
{
index = i;
max_num = tmp_num;
}
}
return index;
}

void test()
{
#define NUM 5
Commodities commodities[NUM] = {
{'A', "9.2", 10, 21},
{'B', "9.2", 12, 21},
{'C', "9.2", 33, 32},
{'S', "9.3", 22, 21},
{'F', "9.3", 11, 11},
};
int index = GetMaxCommodity(commodities, NUM);
if(index != -1)
{
printf("%c %s %d %d", commodities[index].type, commodities[index].date, commodities[index].bargain_num, commodities[index].position);
}
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧