#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <ctime>
void print_menu( ) ;
int get_selection( ) ;
std:: string get_Name( ) ;
float get_GPA( ) ;
int get_Year( ) ;
void input_new_student( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int ramapo_id[ ] ) ;
void print_all( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size, int ramapo_id[ ] ) ;
void print_by_year( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size) ;
void print_statistics( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size, float sum) ;
using namespace std;
int main( )
{
std:: string student_names[ 100 ] ;
float student_GPA[ 100 ] ;
int student_start_year[ 100 ] ;
int ramapo_id[ 100 ] ;
int userChoice;
int index = 0 ;
int size = 0 ;
float sum = 0.0 ;
do
{
print_menu( ) ;
userChoice = get_selection( ) ;
if ( userChoice == 1 )
{
input_new_student( student_names, student_GPA, student_start_year, index, ramapo_id) ;
index++ ;
}
if ( userChoice == 2 )
{
print_all( student_names, student_GPA, student_start_year, index, size, ramapo_id) ;
}
if ( userChoice == 3 )
{
print_by_year( student_names, student_GPA, student_start_year, index, size) ;
}
if ( userChoice == 4 )
{
print_statistics( student_names, student_GPA, student_start_year, index, size, sum) ;
}
if ( userChoice == 5 )
{
return 0 ;
}
} while ( false ) ;
return 0 ;
}
void print_menu( )
{
cout << "Please pick from the following menu " << endl;
cout << "1. Add a new student " << endl;
cout << "2. Print all students " << endl;
cout << "3. Print students by year " << endl;
cout << "4. Print student statistics " << endl;
cout << "5. Quit" << endl;
}
int get_selection( )
{
int userChoice;
cin >> userChoice;
if ( userChoice > 4 || userChoice < 1 )
{
cout << "Error: Invalid input " << userChoice << ", please try again: " ;
}
return userChoice;
}
string get_Name( )
{
std:: string student_name;
cout << "Please enter the student's name: " ;
cin >> student_name;
return student_name;
}
float get_GPA( )
{
float student_GPA;
cout << "Please enter the GPA: " ;
cin >> student_GPA;
return student_GPA;
}
int get_Year( )
{
int student_year;
cout << "Please enter the start Year: " ;
cin >> student_year;
return student_year;
}
void input_new_student( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int ramapo_id[ ] )
{
//information generation
srand ( ( unsigned ) time ( 0 ) ) ;
int random_integer = rand ( ) ;
ramapo_id[ index] = random_integer;
//information acquisition
student_names[ index] = get_Name( ) ;
student_GPA[ index] = get_GPA( ) ;
student_start_year[ index] = get_Year( ) ;
cout << "Student added suuccessfully" ;
}
void print_all( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size, int ramapo_id[ ] )
{
for ( int i = 0 ; i < size; i++ ) {
cout << student_names[ i] << " - " << ramapo_id[ i] << endl;
}
}
void print_by_year( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size)
{
int student_year_identifier;
cout << "Which year would you like to display?: " ;
cin >> student_year_identifier;
for ( int i = 0 ; i < size; i++ )
{
if ( student_year_identifier == student_start_year[ i] )
{
cout << "There were " << index << "students in that year" << endl;
}
else {
cout << "There were no students in that year" << endl;
}
}
}
void print_statistics( std:: string student_names[ ] , float student_GPA[ ] , int student_start_year[ ] , int index, int size, float sum)
{
cout << "Total: " << index << endl;
float avg = 0.0 ;
for ( int i = 0 ; i < size; ++ i)
{
sum + = student_GPA[ i] ;
}
avg = ( ( float ) sum) / size;
cout << "GPA: " << avg << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjdGltZT4KCnZvaWQgcHJpbnRfbWVudSgpOwppbnQgZ2V0X3NlbGVjdGlvbigpOwpzdGQ6OnN0cmluZyBnZXRfTmFtZSgpOwpmbG9hdCBnZXRfR1BBKCk7CmludCBnZXRfWWVhcigpOwp2b2lkIGlucHV0X25ld19zdHVkZW50KHN0ZDo6c3RyaW5nIHN0dWRlbnRfbmFtZXNbXSwgZmxvYXQgc3R1ZGVudF9HUEFbXSwgaW50IHN0dWRlbnRfc3RhcnRfeWVhcltdLCBpbnQgaW5kZXgsIGludCByYW1hcG9faWRbXSk7CnZvaWQgcHJpbnRfYWxsKHN0ZDo6c3RyaW5nIHN0dWRlbnRfbmFtZXNbXSwgZmxvYXQgc3R1ZGVudF9HUEFbXSwgaW50IHN0dWRlbnRfc3RhcnRfeWVhcltdLCBpbnQgaW5kZXgsIGludCBzaXplLCBpbnQgcmFtYXBvX2lkW10pOwp2b2lkIHByaW50X2J5X3llYXIoc3RkOjpzdHJpbmcgc3R1ZGVudF9uYW1lc1tdLCBmbG9hdCBzdHVkZW50X0dQQVtdLCBpbnQgc3R1ZGVudF9zdGFydF95ZWFyW10sIGludCBpbmRleCwgaW50IHNpemUpOwp2b2lkIHByaW50X3N0YXRpc3RpY3Moc3RkOjpzdHJpbmcgc3R1ZGVudF9uYW1lc1tdLCBmbG9hdCBzdHVkZW50X0dQQVtdLCBpbnQgc3R1ZGVudF9zdGFydF95ZWFyW10sIGludCBpbmRleCwgaW50IHNpemUsIGZsb2F0IHN1bSk7CgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgc3RkOjpzdHJpbmcgc3R1ZGVudF9uYW1lc1sxMDBdOwogICAgZmxvYXQgc3R1ZGVudF9HUEFbMTAwXTsKICAgIGludCBzdHVkZW50X3N0YXJ0X3llYXJbMTAwXTsKICAgIGludCByYW1hcG9faWRbMTAwXTsKICAgIGludCB1c2VyQ2hvaWNlOwogICAgaW50IGluZGV4ID0gMDsKICAgIGludCBzaXplID0gMDsKICAgIGZsb2F0IHN1bSA9IDAuMDsKCiAgICBkbwogICAgewogICAgICAgIHByaW50X21lbnUoKTsKICAgICAgICB1c2VyQ2hvaWNlID0gZ2V0X3NlbGVjdGlvbigpOwogICAgICAgIGlmICh1c2VyQ2hvaWNlID09IDEpCiAgICAgICAgewogICAgICAgICAgICBpbnB1dF9uZXdfc3R1ZGVudChzdHVkZW50X25hbWVzLCBzdHVkZW50X0dQQSwgc3R1ZGVudF9zdGFydF95ZWFyLCBpbmRleCwgcmFtYXBvX2lkKTsKICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICB9CiAgICAgICAgaWYgKHVzZXJDaG9pY2UgPT0gMikKICAgICAgICB7CiAgICAgICAgICAgIHByaW50X2FsbChzdHVkZW50X25hbWVzLCBzdHVkZW50X0dQQSwgc3R1ZGVudF9zdGFydF95ZWFyLCBpbmRleCwgc2l6ZSwgcmFtYXBvX2lkKTsKICAgICAgICB9CiAgICAgICAgaWYgKHVzZXJDaG9pY2UgPT0gMykKICAgICAgICB7CiAgICAgICAgICAgIHByaW50X2J5X3llYXIoc3R1ZGVudF9uYW1lcywgc3R1ZGVudF9HUEEsIHN0dWRlbnRfc3RhcnRfeWVhciwgaW5kZXgsIHNpemUpOwogICAgICAgIH0KICAgICAgICBpZiAodXNlckNob2ljZSA9PSA0KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRfc3RhdGlzdGljcyhzdHVkZW50X25hbWVzLCBzdHVkZW50X0dQQSwgc3R1ZGVudF9zdGFydF95ZWFyLCBpbmRleCwgc2l6ZSwgc3VtKTsKICAgICAgICB9CiAgICAgICAgaWYgKHVzZXJDaG9pY2UgPT0gNSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0gd2hpbGUgKGZhbHNlKTsKICAgIHJldHVybiAwOwp9CnZvaWQgcHJpbnRfbWVudSgpCnsKICAgIGNvdXQgPDwgIlBsZWFzZSBwaWNrIGZyb20gdGhlIGZvbGxvd2luZyBtZW51ICIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIjEuIEFkZCBhIG5ldyBzdHVkZW50ICIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIjIuIFByaW50IGFsbCBzdHVkZW50cyAiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICIzLiBQcmludCBzdHVkZW50cyBieSB5ZWFyICIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIjQuIFByaW50IHN0dWRlbnQgc3RhdGlzdGljcyAiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICI1LiBRdWl0IiA8PCBlbmRsOwp9CmludCBnZXRfc2VsZWN0aW9uKCkKewogICAgaW50IHVzZXJDaG9pY2U7CiAgICBjaW4gPj4gdXNlckNob2ljZTsKICAgIAogICAgaWYgKHVzZXJDaG9pY2UgPiA0IHx8IHVzZXJDaG9pY2UgPCAxKQogICAgewogICAgICAgIGNvdXQgPDwgIkVycm9yOiBJbnZhbGlkIGlucHV0ICIgPDwgdXNlckNob2ljZSA8PCAgIiwgcGxlYXNlIHRyeSBhZ2FpbjogIjsKICAgIH0KICAgIHJldHVybiB1c2VyQ2hvaWNlOwp9CnN0cmluZyBnZXRfTmFtZSgpCnsKICAgIHN0ZDo6c3RyaW5nIHN0dWRlbnRfbmFtZTsKCiAgICBjb3V0IDw8ICJQbGVhc2UgZW50ZXIgdGhlIHN0dWRlbnQncyBuYW1lOiAiOwogICAgY2luID4+IHN0dWRlbnRfbmFtZTsKCiAgICByZXR1cm4gc3R1ZGVudF9uYW1lOwp9CmZsb2F0IGdldF9HUEEoKQp7CiAgICBmbG9hdCBzdHVkZW50X0dQQTsKCiAgICBjb3V0IDw8ICJQbGVhc2UgZW50ZXIgdGhlIEdQQTogIjsKICAgIGNpbiA+PiBzdHVkZW50X0dQQTsKCiAgICByZXR1cm4gc3R1ZGVudF9HUEE7Cn0KaW50IGdldF9ZZWFyKCkKewogICAgaW50IHN0dWRlbnRfeWVhcjsKCiAgICBjb3V0IDw8ICJQbGVhc2UgZW50ZXIgdGhlIHN0YXJ0IFllYXI6ICI7CiAgICBjaW4gPj4gc3R1ZGVudF95ZWFyOwoKICAgIHJldHVybiBzdHVkZW50X3llYXI7Cn0Kdm9pZCBpbnB1dF9uZXdfc3R1ZGVudChzdGQ6OnN0cmluZyBzdHVkZW50X25hbWVzW10sIGZsb2F0IHN0dWRlbnRfR1BBW10sIGludCBzdHVkZW50X3N0YXJ0X3llYXJbXSwgaW50IGluZGV4LCBpbnQgcmFtYXBvX2lkW10pCnsKICAgIC8vaW5mb3JtYXRpb24gZ2VuZXJhdGlvbgogICAgc3JhbmQoKHVuc2lnbmVkKXRpbWUoMCkpOwogICAgaW50IHJhbmRvbV9pbnRlZ2VyID0gcmFuZCgpOwogICAgcmFtYXBvX2lkW2luZGV4XSA9IHJhbmRvbV9pbnRlZ2VyOwoKICAgIC8vaW5mb3JtYXRpb24gYWNxdWlzaXRpb24KICAgIHN0dWRlbnRfbmFtZXNbaW5kZXhdID0gZ2V0X05hbWUoKTsKICAgIHN0dWRlbnRfR1BBW2luZGV4XSA9IGdldF9HUEEoKTsKICAgIHN0dWRlbnRfc3RhcnRfeWVhcltpbmRleF0gPSBnZXRfWWVhcigpOwogICAgCiAgICBjb3V0IDw8ICJTdHVkZW50IGFkZGVkIHN1dWNjZXNzZnVsbHkiOwp9CnZvaWQgcHJpbnRfYWxsKHN0ZDo6c3RyaW5nIHN0dWRlbnRfbmFtZXNbXSwgZmxvYXQgc3R1ZGVudF9HUEFbXSwgaW50IHN0dWRlbnRfc3RhcnRfeWVhcltdLCBpbnQgaW5kZXgsIGludCBzaXplLCBpbnQgcmFtYXBvX2lkW10pCnsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICBjb3V0IDw8IHN0dWRlbnRfbmFtZXNbaV0gPDwgIiAtICIgPDwgcmFtYXBvX2lkW2ldIDw8IGVuZGw7CiAgICB9Cn0Kdm9pZCBwcmludF9ieV95ZWFyKHN0ZDo6c3RyaW5nIHN0dWRlbnRfbmFtZXNbXSwgZmxvYXQgc3R1ZGVudF9HUEFbXSwgaW50IHN0dWRlbnRfc3RhcnRfeWVhcltdLCBpbnQgaW5kZXgsIGludCBzaXplKQp7CiAgICBpbnQgc3R1ZGVudF95ZWFyX2lkZW50aWZpZXI7CiAgICBjb3V0IDw8ICJXaGljaCB5ZWFyIHdvdWxkIHlvdSBsaWtlIHRvIGRpc3BsYXk/OiAiOwogICAgY2luID4+IHN0dWRlbnRfeWVhcl9pZGVudGlmaWVyOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICB7CiAgICAgICAgaWYgKHN0dWRlbnRfeWVhcl9pZGVudGlmaWVyID09IHN0dWRlbnRfc3RhcnRfeWVhcltpXSkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgIlRoZXJlIHdlcmUgIiA8PCBpbmRleCA8PCAic3R1ZGVudHMgaW4gdGhhdCB5ZWFyIiA8PCBlbmRsOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY291dCA8PCAiVGhlcmUgd2VyZSBubyBzdHVkZW50cyBpbiB0aGF0IHllYXIiIDw8IGVuZGw7CiAgICAgICAgfQogICAgfQp9CnZvaWQgcHJpbnRfc3RhdGlzdGljcyhzdGQ6OnN0cmluZyBzdHVkZW50X25hbWVzW10sIGZsb2F0IHN0dWRlbnRfR1BBW10sIGludCBzdHVkZW50X3N0YXJ0X3llYXJbXSwgaW50IGluZGV4LCBpbnQgc2l6ZSwgZmxvYXQgc3VtKQp7CiAgICBjb3V0IDw8ICJUb3RhbDogIiA8PCBpbmRleCA8PCBlbmRsOwoKICAgIGZsb2F0IGF2ZyA9IDAuMDsKICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKICB7CiAgICAgIHN1bSArPSBzdHVkZW50X0dQQVtpXTsKICB9CiAgYXZnID0gKChmbG9hdClzdW0pL3NpemU7CiAgICBjb3V0IDw8ICJHUEE6ICIgPDwgYXZnIDw8IGVuZGw7Cn0=