// Wyatt Carey CS1A Practicum Practice
//******************************************************************************
// Baseball Player Statistics
//******************************************************************************
//
//
//
//
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
// Create strcuture.
struct PlayerInfo
{
string name;
int homeRuns;
int hits;
} ;
// Function prototypes.
void showInfo( PlayerInfo [ ] , const int ) ;
void showMenu ( ) ;
int searchPlayers( PlayerInfo [ ] , string, const int ) ;
void changeInfo( PlayerInfo stats [ ] , int pos) ;
int main( )
{
const int NUM_PLAYERS = 10 ;
PlayerInfo stats[ NUM_PLAYERS] = { { "Mike T" , 2 , 5 } ,
{ "Josh G" , 4 , 5 } ,
{ "Luke A" , 5 , 6 } ,
{ "Ian M" , 4 , 4 } ,
{ "Jared G" , 3 , 5 } ,
{ "Blake A" , 12 , 45 } ,
{ "Liam F" , 23 , 43 } ,
{ "Adam A" , 22 , 34 } ,
{ "Kian D" , 32 , 43 } ,
{ "Yoiurel A" , 23 , 34 } } ;
int choice; // Input : Holds menu choice.
string search; // Input : Name of players to search within array.
int pos; // Output : Position of player found in the array,
// set to -1 if player is not found or user
// quit.
// Display initial array.
showInfo( stats, NUM_PLAYERS) ;
// Display menu.
showMenu( ) ;
do
{
// Input : Get Menu Choice.
cin >> choice;
cout << endl << endl;
cin .ignore ( ) ;
if ( choice = 1 )
{
cout << "Enter the player's name: \n " ;
getline( cin , search) ;
cout << endl;
searchPlayers( stats, search, NUM_PLAYERS) ;
}
cout << endl;
// Output : Display Updated Data.
if ( pos ! = - 1 ) // Won't display data if player doesn't exist
{
changeInfo( stats, pos) ;
cout << "Update player info: \n \n " ;
showInfo( stats, NUM_PLAYERS) ;
}
// Input : Prompt the choice if the user did not already quit.
if ( choice ! = 0 )
{
showMenu( ) ;
cin >> choice;
}
} while ( choice ! = 0 ) ;
cout << "\n \n Exiting program..." ;
return 0 ;
}
// This function displays the info sheet of the players.
void showInfo ( PlayerInfo stats[ ] , const int NUM_PLAYERS)
{
int index;
cout << "Player Stats" << endl;
cout << "____________________________________________" << endl;
cout << left << setw( 8 ) << "Name" << setw( 18 ) << "Home Runs" << setw( 18 )
<< "Hits" << endl;
for ( index = 0 ; index < NUM_PLAYERS; index++ )
{
cout << setw( 18 ) << stats[ index] .name
<< setw( 18 ) << stats[ index] .homeRuns
<< setw( 18 ) << stats[ index] .hits << endl;
}
cout << endl;
}
// This simple function shows a menu of choices to adjust a player's data or
// quit.
void showMenu ( )
{
cout << "What option are you choosing?\n " ;
cout << "1. Change Player Data" << endl;
cout << "0. Quit" << endl << endl << "Enter your choice: \n " ;
}
// This function uses an input name to search for a player
int searchPlayers( PlayerInfo stats [ ] , string search, const int NUM_PLAYERS)
{
int index; // Index for the loop.
int pos; // Position of the player array for given player's name.
bool found; // flag indicating the correct player was found.
do
{
for ( index = 0 , pos = - 1 , found = false ; index < NUM_PLAYERS && ! found;
index++ )
{
/* If the player's name is found within the strings in the array, a
value is returned indicating where. If it is not, it returns a
very large number. As long as the number is less than 100, that
value indicates a legitimate position was found*/
if ( stats[ index] .name .find ( search, 0 ) < 100 )
{
found = true ;
pos = index;
}
}
if ( pos == - 1 )
{
cout << "Sorry, that player doesn't exist.\n "
<< "Enter another name to try again, or enter 0 to quit: \n " ;
getline( cin , search) ;
cout << endl;
}
} while ( search ! = "0" && found == false ) ;
return pos;
}
// This function adjusts the data stored for each player.
void changeInfo ( PlayerInfo stats [ ] , int pos)
{
int choice; // Input : Determines which data to change.
cout << "Which stats you wish to updata?" << endl;
cout << "1. Home Runs" << endl;
cout << "2. Hits\n \n " ;
cout << "Enter your choice: \n " ;
cin >> choice;
cout << endl << endl;
switch ( choice)
{
case 1 :
cout << "Enter the new number of home runs: \n " ;
cin >> stats[ pos] .homeRuns ;
cout << endl << endl;
break ;
case 2 :
cout << "Enter the new number of hits: \n " ;
cin >> stats[ pos] .hits ;
cout << endl << endl;
break ;
}
}
Ly8gV3lhdHQgQ2FyZXkJCQkJCSAgIENTMUEJCQkJCQkgIFByYWN0aWN1bSBQcmFjdGljZQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBCYXNlYmFsbCBQbGF5ZXIgU3RhdGlzdGljcwovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLwovLwovLwovLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gQ3JlYXRlIHN0cmN1dHVyZS4Kc3RydWN0IFBsYXllckluZm8KewoJc3RyaW5nIG5hbWU7CglpbnQgaG9tZVJ1bnM7CglpbnQgaGl0czsKfTsKCi8vIEZ1bmN0aW9uIHByb3RvdHlwZXMuCnZvaWQgc2hvd0luZm8oUGxheWVySW5mbyBbXSwgY29uc3QgaW50KTsKdm9pZCBzaG93TWVudSAoKTsKaW50IHNlYXJjaFBsYXllcnMoUGxheWVySW5mbyBbXSwgc3RyaW5nLCBjb25zdCBpbnQpOwp2b2lkIGNoYW5nZUluZm8oUGxheWVySW5mbyBzdGF0cyBbXSwgaW50IHBvcyk7CgppbnQgbWFpbigpCnsKCWNvbnN0IGludCBOVU1fUExBWUVSUyA9IDEwOwoJUGxheWVySW5mbyBzdGF0c1tOVU1fUExBWUVSU10gPSB7eyJNaWtlIFQiLCAyLCA1fSwKCQkJCQkJCQkJIHsiSm9zaCBHIiwgNCwgNX0sCgkJCQkJCQkJCSB7Ikx1a2UgQSIsIDUsIDZ9LAoJCQkJCQkJCQkgeyJJYW4gTSIsIDQsIDR9LAoJCQkJCQkJCQkgeyJKYXJlZCBHIiwgMywgNX0sCgkJCQkJCQkJCSB7IkJsYWtlIEEiLCAxMiwgNDV9LAoJCQkJCQkJCQkgeyJMaWFtIEYiLCAyMywgNDN9LAoJCQkJCQkJCQkgeyJBZGFtIEEiLCAyMiwgMzR9LAoJCQkJCQkJCQkgeyJLaWFuIEQiLCAzMiwgNDN9LAoJCQkJCQkJCQkgeyJZb2l1cmVsIEEiLCAyMywgMzR9fTsKCWludCBjaG9pY2U7CQkJCS8vIElucHV0IDogSG9sZHMgbWVudSBjaG9pY2UuCglzdHJpbmcgc2VhcmNoOwkJCS8vIElucHV0IDogTmFtZSBvZiBwbGF5ZXJzIHRvIHNlYXJjaCB3aXRoaW4gYXJyYXkuCglpbnQgcG9zOwkJCQkvLyBPdXRwdXQgOiBQb3NpdGlvbiBvZiBwbGF5ZXIgZm91bmQgaW4gdGhlIGFycmF5LAoJCQkJCQkJLy8JCQlzZXQgdG8gLTEgaWYgcGxheWVyIGlzIG5vdCBmb3VuZCBvciB1c2VyCgkJCQkJCQkvLwkJCXF1aXQuCgkvLyBEaXNwbGF5IGluaXRpYWwgYXJyYXkuCglzaG93SW5mbyhzdGF0cywgTlVNX1BMQVlFUlMpOwoJCgkvLyBEaXNwbGF5IG1lbnUuCglzaG93TWVudSgpOwoJCglkbwoJewoJCS8vIElucHV0IDogR2V0IE1lbnUgQ2hvaWNlLgoJCWNpbiA+PiBjaG9pY2U7CgkJY291dCA8PCBlbmRsIDw8IGVuZGw7CgkJY2luLmlnbm9yZSgpOwoJCWlmIChjaG9pY2UgPSAxKQoJCXsKCQkJY291dCA8PCAiRW50ZXIgdGhlIHBsYXllcidzIG5hbWU6IFxuIjsKCQkJZ2V0bGluZShjaW4sIHNlYXJjaCk7CgkJCWNvdXQgPDwgZW5kbDsKCQkJc2VhcmNoUGxheWVycyhzdGF0cywgc2VhcmNoLCBOVU1fUExBWUVSUyk7CgkJfQoJCQoJCWNvdXQgPDwgZW5kbDsKCQkKCQkvLyBPdXRwdXQgOiBEaXNwbGF5IFVwZGF0ZWQgRGF0YS4KCQlpZiAocG9zICE9IC0xKQkJLy8gV29uJ3QgZGlzcGxheSBkYXRhIGlmIHBsYXllciBkb2Vzbid0IGV4aXN0CgkJewoJCQljaGFuZ2VJbmZvKHN0YXRzLCBwb3MpOwoJCQljb3V0IDw8ICJVcGRhdGUgcGxheWVyIGluZm86IFxuXG4iOwoJCQlzaG93SW5mbyhzdGF0cywgTlVNX1BMQVlFUlMpOwoJCX0KCQkKCQkvLyBJbnB1dCA6IFByb21wdCB0aGUgY2hvaWNlIGlmIHRoZSB1c2VyIGRpZCBub3QgYWxyZWFkeSBxdWl0LgoJCWlmIChjaG9pY2UgIT0gMCkKCQl7CgkJCXNob3dNZW51KCk7CgkJCWNpbiA+PiBjaG9pY2U7CgkJfQoJfSB3aGlsZShjaG9pY2UgIT0gMCk7CgkgIGNvdXQgPDwgIlxuXG5FeGl0aW5nIHByb2dyYW0uLi4iOwoJICByZXR1cm4gMDsKfQoKLy8gVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgaW5mbyBzaGVldCBvZiB0aGUgcGxheWVycy4Kdm9pZCBzaG93SW5mbyAoUGxheWVySW5mbyBzdGF0c1tdLCBjb25zdCBpbnQgTlVNX1BMQVlFUlMpCnsKCWludCBpbmRleDsKCQoJY291dCA8PCAiUGxheWVyIFN0YXRzIiA8PCBlbmRsOwoJY291dCA8PCAiX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iIDw8IGVuZGw7Cgljb3V0IDw8IGxlZnQgPDwgc2V0dyg4KSA8PCAiTmFtZSIgPDwgc2V0dygxOCkgPDwgIkhvbWUgUnVucyIgPDwgc2V0dygxOCkKCQkgPDwgIkhpdHMiIDw8IGVuZGw7Cglmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBOVU1fUExBWUVSUzsgaW5kZXgrKykKCXsKCQljb3V0IDw8IHNldHcoMTgpIDw8IHN0YXRzW2luZGV4XS5uYW1lCgkJCSA8PCBzZXR3KDE4KSA8PCBzdGF0c1tpbmRleF0uaG9tZVJ1bnMKCQkJIDw8IHNldHcoMTgpIDw8IHN0YXRzW2luZGV4XS5oaXRzIDw8IGVuZGw7Cgl9Cgljb3V0IDw8IGVuZGw7CgkKfQoKLy8gVGhpcyBzaW1wbGUgZnVuY3Rpb24gc2hvd3MgYSBtZW51IG9mIGNob2ljZXMgdG8gYWRqdXN0IGEgcGxheWVyJ3MgZGF0YSBvciAKLy8gcXVpdC4Kdm9pZCBzaG93TWVudSAoKQp7Cgljb3V0IDw8ICJXaGF0IG9wdGlvbiBhcmUgeW91IGNob29zaW5nP1xuIjsKCWNvdXQgPDwgIjEuIENoYW5nZSBQbGF5ZXIgRGF0YSIgPDwgZW5kbDsKCWNvdXQgPDwgIjAuIFF1aXQiIDw8IGVuZGwgPDwgZW5kbCA8PCAiRW50ZXIgeW91ciBjaG9pY2U6IFxuIjsKCQp9CgovLyBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gaW5wdXQgbmFtZSB0byBzZWFyY2ggZm9yIGEgcGxheWVyCmludCBzZWFyY2hQbGF5ZXJzKFBsYXllckluZm8gc3RhdHMgW10sIHN0cmluZyBzZWFyY2gsIGNvbnN0IGludCBOVU1fUExBWUVSUykKewoJaW50IGluZGV4OwkJLy8gSW5kZXggZm9yIHRoZSBsb29wLgoJaW50IHBvczsJCS8vIFBvc2l0aW9uIG9mIHRoZSBwbGF5ZXIgYXJyYXkgZm9yIGdpdmVuIHBsYXllcidzIG5hbWUuCglib29sIGZvdW5kOwkJLy8gZmxhZyBpbmRpY2F0aW5nIHRoZSBjb3JyZWN0IHBsYXllciB3YXMgZm91bmQuCgkKCWRvCgl7CgkJZm9yIChpbmRleCA9IDAsIHBvcyA9IC0xLCBmb3VuZCA9IGZhbHNlOyBpbmRleCA8IE5VTV9QTEFZRVJTICYmICFmb3VuZDsKCQlpbmRleCsrKSAKCQl7CgkJCS8qIElmIHRoZSBwbGF5ZXIncyBuYW1lIGlzIGZvdW5kIHdpdGhpbiB0aGUgc3RyaW5ncyBpbiB0aGUgYXJyYXksIGEgCgkJCSAgIHZhbHVlIGlzIHJldHVybmVkIGluZGljYXRpbmcgd2hlcmUuIElmIGl0IGlzIG5vdCwgaXQgcmV0dXJucyBhIAoJCQkgICB2ZXJ5IGxhcmdlIG51bWJlci4gQXMgbG9uZyBhcyB0aGUgbnVtYmVyIGlzIGxlc3MgdGhhbiAxMDAsIHRoYXQKCQkJICAgdmFsdWUgaW5kaWNhdGVzIGEgbGVnaXRpbWF0ZSBwb3NpdGlvbiB3YXMgZm91bmQqLwoJCQkgICBpZihzdGF0c1tpbmRleF0ubmFtZS5maW5kKHNlYXJjaCwgMCkgPCAxMDApCgkJCSAgIHsKCQkJICAgCWZvdW5kID0gdHJ1ZTsKCQkJICAgCXBvcyA9IGluZGV4OwoJCQkgICB9CgkJfQoJCWlmIChwb3MgPT0gLTEpCgkJewoJCQljb3V0IDw8ICJTb3JyeSwgdGhhdCBwbGF5ZXIgZG9lc24ndCBleGlzdC5cbiIKCQkJCSA8PCAiRW50ZXIgYW5vdGhlciBuYW1lIHRvIHRyeSBhZ2Fpbiwgb3IgZW50ZXIgMCB0byBxdWl0OiBcbiI7CgkJCWdldGxpbmUoY2luLCBzZWFyY2gpOwoJCQljb3V0IDw8IGVuZGw7CgkJfQoJfSB3aGlsZShzZWFyY2ggIT0gIjAiICYmIGZvdW5kID09IGZhbHNlKTsKCXJldHVybiBwb3M7Cn0KCi8vIFRoaXMgZnVuY3Rpb24gYWRqdXN0cyB0aGUgZGF0YSBzdG9yZWQgZm9yIGVhY2ggcGxheWVyLgp2b2lkIGNoYW5nZUluZm8gKFBsYXllckluZm8gc3RhdHMgW10sIGludCBwb3MpCnsKCWludCBjaG9pY2U7CQkvLyBJbnB1dCA6IERldGVybWluZXMgd2hpY2ggZGF0YSB0byBjaGFuZ2UuCgkKCWNvdXQgPDwgIldoaWNoIHN0YXRzIHlvdSB3aXNoIHRvIHVwZGF0YT8iIDw8IGVuZGw7Cgljb3V0IDw8ICIxLiBIb21lIFJ1bnMiIDw8IGVuZGw7Cgljb3V0IDw8ICIyLiBIaXRzXG5cbiI7Cgljb3V0IDw8ICJFbnRlciB5b3VyIGNob2ljZTogXG4iOwoJY2luID4+IGNob2ljZTsKCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwoJc3dpdGNoKGNob2ljZSkKCXsKCQljYXNlIDE6CgkJCWNvdXQgPDwgIkVudGVyIHRoZSBuZXcgbnVtYmVyIG9mIGhvbWUgcnVuczogXG4iOwoJCQljaW4gPj4gc3RhdHNbcG9zXS5ob21lUnVuczsKCQkJY291dCA8PCBlbmRsIDw8IGVuZGw7CgkJCQlicmVhazsKCQljYXNlIDI6CgkJCWNvdXQgPDwgIkVudGVyIHRoZSBuZXcgbnVtYmVyIG9mIGhpdHM6IFxuIjsKCQkJY2luID4+IHN0YXRzW3Bvc10uaGl0czsKCQkJY291dCA8PCBlbmRsIDw8IGVuZGw7CgkJCQlicmVhazsKCX0KfQ==