#include <iostream>
#include <string>
#include <sstream>

bool readAndDisplayRecord(std::istream& is)
{
    std::cout << "Name: ";

    float grade;
    while (!(is >> grade))      // A name is not a number.
    {
        is.clear(); // clear the stream's error state.
        std::string name;
        if (!(is >> name))
            return false;

        std::cout << name << ' ';
    }

    std::cout << "\nGrades:\n\t" << grade << '\n';
    for (unsigned i = 0; i < 2; ++i)
    {
        if (!(is >> grade))
            return false;

        std::cout << '\t' << grade << '\n';
    }

    return true;
}

int main()
{
    std::istringstream input_stream(
        std::string(
            "Achmed Abdul Jonah Josh Tonn 75.5 80.0 99.9\n"
            "John Smith 80.0 90.9 100\n"
            "Samantha F Jones 70.0 79.0 75.0\n"
        )
    );


    while (readAndDisplayRecord(input_stream))
        std::cout << '\n' ;
}