Untitled
unknown
plain_text
2 years ago
3.2 kB
14
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