Untitled

 avatar
unknown
plain_text
2 years ago
2.7 kB
8
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;string change;
    // 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;
    getline(infile,data);
    while(getline(infile,data))
    {
        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++)
    {
        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
    {
        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++)
    {
        if(a==0)
        {
            cout << inform[a].name << "\n" << inform[a].ID <<"\n"<< inform[a].birthday<<endl;

        }
        else if(day[a]==day[0])
        {
            cout<<endl;
            cout<<inform[a].name<<"\n"<<inform[a].ID<<"\n"<<inform[a].birthday<<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