#include <iostream>
#include <string>
enum _MLINE
{
ML_FILE = 5,
ML_TEN = 10,
ML_FIFTEEN = 15,
ML_TWENTY = 20,
ML_THIRTY = 30
};
int test1(std::string &r, double d, _MLINE mline);
int test2(std::string &mytime, _MLINE mline);
// 给一个时间 + 分钟数,计算结束时间
int test3(std::string &beginTime, int minutes);
int main(int argc, char *argv[])
{
/*std::string r;
test1(r, 4.0, ML_FILE);
test1(r, 5.1, ML_TEN);
test1(r, 5.2, ML_FIFTEEN);
test1(r, 5.3, ML_TWENTY);
test1(r, 5.4, ML_THIRTY);
std::cout << "-------------" << std::endl;
test1(r, 4.5, ML_FILE);
test1(r, 5.6, ML_TEN);
test1(r, 5.7, ML_FIFTEEN);
test1(r, 5.8, ML_TWENTY);
test1(r, 5.9, ML_THIRTY);*/
/*
std::string mytime = "5:20";
test2(mytime, ML_FILE);
test2(mytime, ML_TEN);
test2(mytime, ML_FIFTEEN);
test2(mytime, ML_TWENTY);
test2(mytime, ML_THIRTY);
std::cout << "--------------" << std::endl;
mytime = "5:25";
test2(mytime, ML_FILE);
test2(mytime, ML_TEN);
test2(mytime, ML_FIFTEEN);
test2(mytime, ML_TWENTY);
test2(mytime, ML_THIRTY);
*/
std::string beginTime = "5:20";
test3(beginTime, 150);
return 0;
}
int test3(std::string &beginTime, int minutes)
{
std::string::size_type pos = beginTime.find(":");
if (std::string::npos == pos)
{
return -1;
}
int h = atoi(beginTime.substr(0, pos).c_str());
int m = atoi(beginTime.substr(pos+1).c_str());
m += minutes;
h += m/60;
m = m%60;
std::cout << beginTime << ", " << minutes << "----" << h << ":" << m << std::endl;
return 0;
}
int test1(std::string &r, double d, _MLINE mline)
{
int h = int(d);
int m = int(d * 60) % 60;
m = (m/mline)*mline;
std::cout << d << "---" << h << ":" << m << std::endl;
return 0;
}
int test2(std::string &mytime, _MLINE mline)
{
int topGutterHeight = 50;
int hourHeight = (60/mline) * 20;
std::string::size_type pos = mytime.find(":");
if (std::string::npos == pos)
{
return -1;
}
int h = atoi(mytime.substr(0, pos).c_str());
int m = atoi(mytime.substr(pos+1).c_str());
int y = topGutterHeight + hourHeight*h + (m/mline)*20;
std::cout << mytime << "----" << "y=" << y << std::endl;
return 0;
}