65,210
社区成员
发帖
与我相关
我的任务
分享#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;
}
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);
}
}