Untitled
unknown
plain_text
2 years ago
3.2 kB
10
Indexable
#include <iostream> #include<string> #include<fstream> #include<vector> using namespace std; int datecount(string birthday,string date); int main() { string file;string date;string data;int day[100];int counter=0;int step=1;int item;bool use[100]={0}; // the classmates information struct info { string name; int ID; string birthday; }; struct info inform[101]; ifstream infile; do { cout << "Please enter the input file name: "; getline(cin,file); infile.open(file,ios::in); if(!infile) { cout << "File could not be opened." << endl; } else { break; } }while(1); cout << "What's the date today? (mm/dd) " ; getline(cin,date); cout<<endl; while(getline(infile,data))//read file { if(data.length()>2&&data.length()<20&&step==1) { inform[counter].name=data; step=2; } else if(data.length()>2&&data.length()<30&&step==2)// bug { inform[counter].ID = stoi(data); step=3; } else if(data.length()>2&&data.length()<30&&step==3) { inform[counter].birthday=data; step=1; counter++; } } for(int x=0;x<counter;x++)//count day { day[x]=datecount(inform[x].birthday,date); } cout << "Whose birthday is upcoming and the closest to today?" << endl; for(int x=0;x<counter;x++)// find minimum day { for(int i=x+1;i<counter;i++) { if(day[x]>day[i]) { item=day[i];inform[100]=inform[i]; day[i]=day[x];inform[i]=inform[x]; day[x]=item;inform[x]=inform[100]; } } } for(int a=0;a<counter;a++)//cout << inform[a].name << "\n" << inform[a].ID <<"\n"<< inform[a].birthday<<endl; { if(a==0) { use[a]=1;//ID:inform[a].ID } else if(day[a]==day[0]) { use[a]=1; } } for(int x=0;x<counter;x++)// find minimum id { for(int i=x+1;i<counter;i++) { if(use[x]==1&&use[i]==1&&inform[x].ID>inform[i].ID) { inform[100]=inform[i]; inform[i]=inform[x]; inform[x]=inform[100]; } } } for(int a=0;a<counter;a++)// { if(use[a]==1) { cout << inform[a].name << "\n" << inform[a].ID <<"\n"<< inform[a].birthday<<endl; cout<<endl; } } return 0; } int datecount(string birthday,string date)// 06/14 { int bmon=stoi(birthday.substr(5,2)); int bday=stoi(birthday.substr(8,2)); int dmon=stoi(date.substr(0,2)); int dday=stoi(date.substr(3,2)); int distance = (bmon-dmon)*30+(bday-dday); if(distance<0) { return (12-dmon)*30+30-dday+bmon*30+bday; } return distance; }
Editor is loading...
Leave a Comment