Hello. I am having some difficulty trying to search this particular vector. The code is below and how you are to search the vector is reltivly.. >find <anything >
and whatever is keyed in it will bring up to the screen..
for instance
add name1 @address1 #number1
add name2 @address2 #number2
add name3 @address3 #number3
add name4 @address4 #number4
and then >find name.. it should bring up all the names
if you can help me out i would gladly appreciate it.
thanks
karen
[email protected]
/*
This program will take in a list of names using a struct.
It will create these namesinto a database of vectors.
The functions that can be used in this program are
add, print delete and find. Each of these functions
will perform their task such as:'>add name @address #number',
'>add nmae @address', '>add name #number',
'>add name #number,@address'. The find function
can be used such as: find<name, or, address, or phone>.
The Delete function can be used such as del<entry_number>.
and the print function can be used such as;
'print', and the screen will display all names
addresses and numbers that were in the function.
The exit function will just exit the program.*/
*/
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include<iomanip>
using namespace std;
struct person
{
string name;
string address;
string number;
};
//This is the add function where all the names addresses and phones are taken in
void addfunc(string s, vector<person>& address1, int add)
{
person temp;
int addrindex, phoneindex;
addrindex = s.find('@');
phoneindex = s.find('#');
if(addrindex!=-1 || phoneindex!=-1)
{
//add name @address #number
if(addrindex<phoneindex)
{
//finds the position of add and takes in everything after that to a string
temp.name=s.substr(add+3, addrindex-(add+3));
temp.address=s.substr(addrindex+1, phoneindex-(addrindex+1));
temp.number=s.substr(phoneindex+1, s.length()-(phoneindex+1));
}
//add name #number @address
if (addrindex>phoneindex)
{
temp.name=s.substr(add+3, phoneindex-(add+3));
temp.address=s.substr(addrindex+1, s.length()-(addrindex+1));
temp.number=s.substr(phoneindex+1, addrindex-(phoneindex+1));
}
}
//add name #number
if(addrindex==-1)
{
temp.name=s.substr(add+3, phoneindex-(add+3));
temp.address=" ";
temp.number=s.substr(phoneindex+1, s.length()-(phoneindex+1)); //phone index is the pound sign
}
//add name @address
if(phoneindex==-1)
{
temp.name=s.substr(add+3,addrindex-(add+3));
temp.number=" ";
temp.address=s.substr(addrindex+1, s.length()-(addrindex+1));
}
// stores the vectors here
address1.push_back(temp);
}
//This is the print function.
//It will display all the names addresses and phones of the persons entered
void print1(const vector<person>& address1)
{
for (int i= 0; i < address1.size(); i++)
{
// cout << i+1 << " " << cout.width(10) << address1[i].name<< cout.width(20) <<" " << address1[i].address << cout.width(30)<<" " << address1[i].number << endl;
// cout.setf(ios::left);
cout<< i+1 <<") ";
cout<<address1[i].name;
cout.width(20);
cout<<address1[i].address;
cout.width(17);
cout<<address1[i].number;
cout<<endl;
//cout<<i+1 <<" "<< address1[i].name<<cout.width(10) <<address1[i].address<<cout.width(10)<<address1[i].number<< cout.width(10)<<endl;
}
}
//this function will delete a specific line number in the vector
void delfunc(int i, vector<person>& address1, int del,string s)
{
string del_string;
//takes the interger del and adds three to it to get the position.
//Then it takes the length of the rest of the sting and
//subtracts the position of del to get what the actual string is.
del_string=s.substr(del+3, s.length()-(del+3));
//Here it converts the string into an integer to get
//the number of what the user wants deleted
i = atoi(del_string.c_str());
if ((i<1) || (i>address1.size()))
{
cout<< "Please re-enter in another selection "
"becuase you entered in an invalid number \n"
"Try something like del 2 "
"If that doesn't work and you get the same message \n"
"You are an idiot and don't deserve to be living \n"
"Re-read the specifations for this entry \n";
}
else if ((i>=1) || (i<=address1.size()))
{
for (int j = i-1; j < address1.size() - 1; j++)
{
address1[j].name = address1[j+1].name;
address1[j].address = address1[j+1].address;
address1[j].number = address1[j+1].number;
}
address1.pop_back();
}
}
void findf(vector<person>& address1, int fin,string s)
{
string find_string;
find_string=s.substr(fin+4, s.length()-(fin+4));
int check;
for (int i = 0; i < address1.size(); i++)
{
check = address1[i].name.find(find_string);
if (check != string::npos)
{
//print current person
cout<<address1[i].name<<endl;
cout<<address1[i].address<<endl;
cout<<address1[i].number<<endl;
break;
}
}
}
//This function exists the entire program and gives a corcy message
void func_exit(int ex)
{
cout<<"You have just exited out of the "
"program in which you just were working on\n"
"If you did no which to do this then you must\n"
"Re-build the entire code other wise "
"have a nice day.\n"
"If you build it, they will come. "
"But if you spin it, they will dance.\n\n";
exit(-1);
}
void func_menu(int menu)
{
string input = "no";
while(input!= "yes")
{
cout<<"You have chosen to use the menu\n ";
cout<<"are you sure you want to choose the menu? "<<endl;
cout<<"please enter yes or no ";
cin>>input;
if(input!= "yes")
{
cout<<"please re-enter your choice ";
cout<<"please enter yes or no \n";
cin>>input;
cout<<"Make a 'yes' choice god-damnit\n";
}
}
cout<<"\t use 'add' to add to the address book,\n"
"\t use 'del to delete a name,\n"
"\t use 'find' to find a name in the phone book\n"
"\t use 'menu' to get the menu \n"
"\t use 'exit' to exit the program\n"
"\t thank you for playing\n\n";
}
//The main function where all the other functions are called
void main()
{
cout<<"Welcome to AddressBook v(1.003)\n"
"We welcome any suggestions to help improve\n"
"our course to develop better work for you\n\n"
"The menu options are as follows: \n\n"
"\t use 'add' to add to the address book,\n"
"\t use 'del to delete a name,\n"
"\t use 'find' to find a name in the phone book\n"
"\t use 'menu'to get the menu \n"
"\t use 'exit' to exit the program\n"
"\n\t\t\tIf you have any questions or comments \n"
"\t\t\tplease send your regards to [email protected]\n"
"\t\t\tPlease come visit us soon at http://www.something.com \n"
"\t\t\tsince you know how much we care \n";
char a[80];
string input;
string del_string;
vector<person> addressbook;
int add=0, print=0, del=0,fin=0,ex=0,i=0,menu=0;
//prints the menu of the address book
while (1)
{
cout<<" >";
cin.getline(a,80);
string s=a;
add=s.find("add");
print = s.find("print");
del=s.find("del");
fin=s.find("find");
menu=s.find("menu");
ex=s.find("exit");
if(add > -1)
addfunc(s, addressbook, add);
else if (print > -1)
print1(addressbook);
else if (del >-1)
delfunc(i,addressbook,del,s);
else if (fin>-1)
findf(addressbook,fin,s);
else if(menu>-1)
func_menu(menu);
else if (ex>-1)
func_exit(ex);
}
}