Structures Program Help

Write a program that will search soccer players data to check whether a name supplied by the user is on that list. For doing the search, the user may provide either the player’s full last name or one or more starting letters of the last name. If a matching last name is found, the program will display the player’s full name and date of birth. Otherwise, it will display “Not found”.

Requirements specification:
At the start, the program will ask the user to enter information about 10 soccer players constituting soccer player data. Each soccer player data will consist of the following fields:
Last name
First name
Birth month
Birth day
Birth year


The user will be asked to enter each soccer player data on a separate line with the field values separated by a space.

Once the data is entered, the program will display a menu of choices as below:
Chose an option:

(1 – input data, 2 – display original data, 3 – sort data , 4 – display sorted data 5 – search by last name 6 – exit the program )

If the user chooses option 1, the program will ask the user for a data and populate the array of structures that will hold the data for each of the soccer players.

If the user chooses option 2, the program will display data in the order provided by the user (original data).

If use chooses option 3, the program will sort data by last name.

If user chooses number 4 the program will display the data sorted by last name.

If the user chooses option 5, the program will ask the user to enter one or more starting letters of the soccer player’s last name. It will then search the soccer player data for the matching last name. If a match is found, it will display the first player found with the matching pattern. If a match is not found, the program will display “Not found”. If the user enters two forward slashes (//) for the last name, it will no longer search for the name. Instead it will display the main option menu.

If the user chooses option 6, the program will display “Thank you for using this program” and will end.

----------------------------------------------------

i need help on why my program isint executing correctly. Here is what i've so far . . . .

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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128


#include <iostream>
#include <string>
 using namespace std;

struct data
 {
 string lname;
 string fname;
 int birthmonth;
 int birthday;
 int birthyear;
 };

//function prototype
 void getData(data &, int );
 void showData(const data &, int);
 int searchByLastName(const data &, string);

int main()
 {
 const int NUM_PLAYER = 10;
 data player[NUM_PLAYER];
 data p2[NUM_PLAYER];

int i;

cout << "Enter the 10 soccer players data:" << endl << endl;

for (i = 0; i < NUM_PLAYER; i++)
 {
 getData(player[i], i);
 }

int choice;

while(choice != 6)
 {
 cout << "Enter 1 to input data, 2 to display original data, 3 to sort data \n";
 cout << "4 to display sorted data, 5 to search by last name, 6 to exit the program: ";
 cin >> choice;
 cin.ignore();
 cout << endl;

if (choice == 1)
 {
 for (i = 0; i < NUM_PLAYER; i++)
 {
 getData(player[i], i);
 }
 }

else if (choice == 2)
 {
 for (i = 0; i < NUM_PLAYER; i++)
 {
 showData(player[i], i);
 }
 }

else if (choice == 3)
 {
 for (i = 0; i < NUM_PLAYER; i++)
 {
 p2[i].lname = player[i].lname;
 }
 }


else if (choice == 5)
 {
 string look;
 cout << "Enter part of last name to search: ";
 cin >> look;

for (i = 0; i < NUM_PLAYER; i++)
 {
 int getNames = player[i].lname.find(look, 0);
 if (getNames > 0)
 {
 cout << player[i].lname << endl;
 }
 }
 }

cout << endl;
 }

}

void getData(data &p, int j)
 {
 cout << "Last name for player " << (j + 1) << ": ";
 getline(cin, p.lname);

cout << "First name for player " << (j + 1) << ": ";
 getline(cin, p.fname);

cout << "birth month (2 digit format) for player " << (j + 1) << ": ";
 cin >> p.birthmonth;
 cin.ignore();

cout << "birth day (2 digit format) for player " << (j + 1) << ": ";
 cin >> p.birthday;
 cin.ignore();

cout << "birth year (4 digit format) for player " << (j + 1) << ": ";
 cin >> p.birthyear;
 cin.ignore();

cout << endl;
 }

void showData(const data &p, int j)
 {
 cout << "Player " << (j + 1) << " data:" << endl;
 cout << p.lname << endl;
 cout << p.fname << endl;
 cout << p.birthmonth << endl;
 cout << p.birthday << endl;
 cout << p.birthyear << endl;
 cout << endl;
 }



Is it the search by last name piece that is not working?
Last edited on
You may want to try something similair to this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else if (choice == 5)
        {
            string input;
            cout << "Enter part of last name to search: ";
            cin >> input;
            char* look = new char[sizeof(input)];
            strncpy(look, input.c_str(), sizeof(input));
            for (i = 0; i < NUM_PLAYER; i++)
            {
                char* last_names = new char[sizeof(player[i].lname)];
                int c = 0;
                while(last_names[c] == input[c])
                {
                    ++c;
                    cout << player[i].lname << endl;
                }
the problem is when the user inputs what they want to do.
Last edited on
Topic archived. No new replies allowed.