/******************************************************************************************
ex7.cpp
    extended OOP object in a "traditional" array, input from a file and find the youngest
******************************************************************************************/
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

// class definition
class name {
    public:
        string first;
        string last;
        int age;
};

// prototypes
void readFile(string filename, name array[], int size);
int indexOfYoungest(name array[], int size);

// MAIN!
void main() {
    int i;
    const int maxsize=6;
    name family[maxsize];

    string filename;
    cout << "Enter the file to read: ";
    cin >> filename;
    readFile(filename, family, maxsize);

    int youngest = indexOfYoungest(family, maxsize);
    cout << "The youngest is " << family[youngest].first << ", who is " <<
            family[youngest].age << " years old.";
    return;        
}

//------- fill each person in the list from a file ------
void readFile(string filename, name array[], int size) {
    ifstream fin(filename.c_str);

    for (i=0; i < size; i++) {
        fin >> family[i].first >> family[i].last >> family[i].age;
    }
    return;
}

//------- Find the youngest person in the list ------
int indexOfYoungest(name array[], int size) {
    int youngestAge = array[0].age;
    int youngestPos = 0;

    for (int i = 1; i < size; i++)
        if (array[i].age < youngestAge) {
            youngestAge = array[i].age;
            youngestPos = i;
        }
    return youngestPos;
}