Can someone make this program in vector form #include <iostream> #include <strin
ID: 3845152 • Letter: C
Question
Can someone make this program in vector form
#include <iostream>
#include <string>
using namespace std;
int Menu();
void getName(string names[], int &count);
int removeName(string names[], int count, string key);
void displayName(string names[], int count);
int findName(string names[], int count, string key);
void sortName(string names[], int count);
int main()
{
string names[100];
int count = 0;
int option = Menu();
while (option != 0)
{
switch (option)
{
case 1:
{
getName(names, count);
}
break;
case 2:
{
string name;
cout << "Enter name to remove: ";
getline(cin, name);
int c = removeName(names, count, name);
if (c == -1)
{
cout << "ERROR: Name not found" << endl << endl;
}
else
{
count = c;
}
}
break;
case 3:
{
displayName(names, count);
}
break;
case 4:
{
string name;
cout << "Enter name to find: ";
getline(cin, name);
int index = findName(names, count, name);
if (index == -1)
{
cout << "ERROR: Name not found in the array" << endl << endl;
}
else
{
cout << "Name found at index " << index << " in the array." << endl << endl;
}
}
break;
case 5:
{
sortName(names, count);
}
break;
case 0:
{
cout << "The program is exited.Thank you" << endl;
return 0;
}
break;
}
option = Menu();
}
system("pause");
return 0;
}
void getName(string names[], int &count)
{
string name;
cout << "Enter name: ";
getline(cin, name);
names[count] = name;
count++;
}
int Menu()
{
int option;
cout << " 1. Add a name (getName)" << endl;
cout << "2. Remove a name" << endl;
cout << "3. Display names " << endl;
cout << "4. Search a name" << endl;
cout << "5. Sort names" << endl;
cout << "0. Quit" << endl;
cout << "Enter a option: ";
cin >> option;
while (option < 0 || option > 5)
{
cout << "ERROR: Invalid option entered. Try again: ";
cin >> option;
}
cin.ignore();
return option;
}
void sortName(string names[], int count)
{
for (int i = 0; i<count; i++)
{
for (int j = i + 1; j<count; j++)
{
if (names[i] > names[j])
{
string temp = names[i];
names[i] = names[j];
names[j] = temp;
}
}
}
for (int i = 0; i < count; i++)
{
cout << names[i] << endl;
}
}
int findName(string names[], int count, string key)
{
for (int i = 0; i<count; i++)
{
if (names[i] == key)
return i;
}
return -1;
}
int removeName(string names[], int count, string key)
{
int found = findName(names, count, key);
if (found == -1)
return found;
for (int i = found; i<count - 1; i++)
{
names[i] = names[i + 1];
}
count = count - 1;
return count;
}
void displayName(string names[], int count)
{
if (count == 0)
{
cout << "No names to display" << endl;
return;
}
for (int i = 0; i<count; i++)
{
cout << names[i] << endl;
}
}
Explanation / Answer
// C++ code
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int Menu();
void getName(std::vector<string> &names, int &count);
int removeName(std::vector<string> &names, int count, string key);
void displayName(std::vector<string> &names, int count);
int findName(std::vector<string> &names, int count, string key);
void sortName(std::vector<string> &names, int count);
int main()
{
std::vector<string> names;
int count = 0;
int option = Menu();
while (option != 0)
{
switch (option)
{
case 1:
{
getName(names, count);
}
break;
case 2:
{
string name;
cout << "Enter name to remove: ";
getline(cin, name);
int c = removeName(names, count, name);
if (c == -1)
{
cout << "ERROR: Name not found" << endl << endl;
}
else
{
count = c;
}
}
break;
case 3:
{
displayName(names, count);
}
break;
case 4:
{
string name;
cout << "Enter name to find: ";
getline(cin, name);
int index = findName(names, count, name);
if (index == -1)
{
cout << "ERROR: Name not found in the array" << endl << endl;
}
else
{
cout << "Name found at index " << index << " in the array." << endl << endl;
}
}
break;
case 5:
{
sortName(names, count);
}
break;
case 0:
{
cout << "The program is exited.Thank you" << endl;
return 0;
}
break;
}
option = Menu();
}
return 0;
}
void getName(std::vector<string> &names, int &count)
{
string name;
cout << "Enter name: ";
getline(cin, name);
names.push_back(name);
count++;
}
int Menu()
{
int option;
cout << " 1. Add a name (getName)" << endl;
cout << "2. Remove a name" << endl;
cout << "3. Display names " << endl;
cout << "4. Search a name" << endl;
cout << "5. Sort names" << endl;
cout << "0. Quit" << endl;
cout << "Enter a option: ";
cin >> option;
while (option < 0 || option > 5)
{
cout << "ERROR: Invalid option entered. Try again: ";
cin >> option;
}
cin.ignore();
return option;
}
void sortName(std::vector<string> &names, int count)
{
for (int i = 0; i<count; i++)
{
for (int j = i + 1; j<count; j++)
{
if (names[i] > names[j])
{
string temp = names[i];
names[i] = names[j];
names[j] = temp;
}
}
}
for (int i = 0; i < count; i++)
{
cout << names[i] << endl;
}
}
int findName(std::vector<string> &names, int count, string key)
{
for (int i = 0; i<count; i++)
{
if (names[i] == key)
return i;
}
return -1;
}
int removeName(std::vector<string> &names, int count, string key)
{
int found = findName(names, count, key);
if (found == -1)
return found;
for (int i = found; i<count - 1; i++)
{
names[i] = names[i + 1];
}
count = count - 1;
return count;
}
void displayName(std::vector<string> &names, int count)
{
if (count == 0)
{
cout << "No names to display" << endl;
return;
}
for (int i = 0; i<count; i++)
{
cout << names[i] << endl;
}
}
/*
output:
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 1
Enter name: jane
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 1
Enter name: akash
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 1
Enter name: emma
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 3
jane
akash
emma
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 4
Enter name to find: jane
Name found at index 0 in the array.
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 5
akash
emma
jane
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 2
Enter name to remove: jane
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 3
akash
emma
1. Add a name (getName)
2. Remove a name
3. Display names
4. Search a name
5. Sort names
0. Quit
Enter a option: 0
*/