// C++ Libs
#include <string>
#include <iostream>
#include <vector>
// C Libs
#include <time.h>
#include <stdlib.h>
using namespace std;
class Year {
protected:
vector<string> _options;
unsigned int _genRandom(){
return (unsigned int) (rand() % this->_options.size());
}
string _day(struct tm *day, vector<unsigned int> *lastOnes){
// generate date
char buffer [11];
sprintf(buffer, "%04d-%02d-%02d", day->tm_year+1900, day->tm_mon+1, day->tm_mday);
string date = buffer;
// check for weekends
if(day->tm_wday == 0 || day->tm_wday == 6){
return (date + ": Weekend\n");
}
// generate random number
unsigned int choosen;
bool inLastOnes = false;
do{
choosen = _genRandom();
inLastOnes = false;
for(vector<unsigned int>::iterator i=lastOnes->begin(); i<lastOnes->end();++i){
if(*i == choosen){ inLastOnes = true; }
}
} while(inLastOnes);
lastOnes->push_back(choosen);
if(lastOnes->size() > 3){ lastOnes->erase(lastOnes->begin()); }
// return result
return (date + ": " + this->_options[choosen] + "\n");
}
public:
vector<string> generate(unsigned int year){
struct tm tmYear;
struct tm *tmDay;
time_t tYear;
vector<string> lines;
vector<unsigned int> lastOnes;
tmYear.tm_year = year-1900;
tmYear.tm_mon = 0;
tmYear.tm_mday = 1;
tmYear.tm_hour = 0;
tmYear.tm_min = 0;
tmYear.tm_sec = 1;
tYear = mktime(&tmYear);
tmDay = localtime(&tYear);
do{
lines.push_back(_day(tmDay, &lastOnes));
tYear += 60*60*24;
tmDay = localtime(&tYear);
} while(tmDay->tm_year == tmYear.tm_year);
return lines;
}
Year(){
string locations[15] = {
"Döner",
"Pizza",
"Subway",
"Asia",
"AsiaBox",
"Franzose",
"Kantine",
"Vapiano",
"Kalmuck",
"LEOS",
"SchnitzelCulture",
"Sushi",
"Omar",
"Burgerking",
"Bagels"
};
for(unsigned int i=0;i<15;++i){
this->_options.push_back(locations[i]);
}
}
};
int main(){
Year mealYear;
for(unsigned int y=2011;y<2015;++y){
vector<string> lines = mealYear.generate(y);
for(vector<string>::iterator i=lines.begin(); i<lines.end();i++){
cout << *i;
}
}
return 0;
}