Untitled

 avatar
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