1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
typedef std::vector<std::pair<std::string,float>> DATA;
bool readFile ( std::string fileName, DATA & data );
bool isItem ( const DATA & data, std::string item );
float getPrice ( const DATA & data, std::string item );
int main ( )
{
DATA data;
std::string item;
if ( !readFile ( "invoice.txt", data ) )
{
std::cout << "The file could not be opened.\n";
return 0;
}
do {
std::cout << "Please input the item's name. Input 'Stop' to stop the program.\nItem Name: ";
std::cin >> item;
if ( item != "Stop" )
{
if ( isItem ( data, item ) )
std::cout << "\nThe price of a " << item << " is $"
<< getPrice ( data, item ) << "\n\n";
else std::cout << "\nThat is not an item.\n\n";
}
} while ( item != "Stop" );
std::cout << "\nThank you for your order.\n";
}
bool readFile ( std::string fileName, DATA & data )
{
std::ifstream fin ( fileName );
if ( !fin ) return false;
std::string item;
float price;
while ( fin.peek ( ) != EOF )
{
getline ( fin, item, '#' );
fin >> price;
fin.ignore ( );
data.push_back ( make_pair ( item, price ) );
}
return true;
}
bool isItem ( const DATA & data, std::string item )
{
size_t items = data.size ( );
for ( size_t i = 0; i < items; ++i )
if ( data[i].first == item )
return true;
return false;
}
float getPrice ( const DATA & data, std::string item )
{
size_t items = data.size ( );
for ( size_t i = 0; i < items; ++i )
if ( data[i].first == item )
return data[i].second;
}
|