Ask C/C++ Expert


Home >> C/C++

Write a C program "team.c" that maintains information for a soccer team. The program will allow you to add and delete players from your team, to search your team for players by name or by value they are worth, and to print out part or all of the team.

The data in your team will be stored in memory with the use of a linked list, with list nodes representing players. Each node will contain members for storing a player's family name (char *) and first name (char *), their position (char) and their value (int). There are four possible positions, each of which is identified by the first character in the words (G)oalkeeper, (D)efender, (M)idfielder and (S)triker. Your linked list must be kept in a special order, with all the goalkeepers first, then the defenders, then the midfielders, and finally the strikers. If there is more than one player in the same position, then the players should be kept in order of their insertion (e.g., the last defender in the team, should be the defender most recently inserted into the list; the first striker in the team should be the striker that was inserted first into the list, and so on). You may assume that no two players that assume the same position in your team have the same family name.

Your program should be menu driven, with the user being offered a choice of the six commands described below:
Insert a new player into the team. The program should prompt the user for a new family name and first name, a position and a value. This information should be placed in a new node that has been created using the malloc function. And then the node should be inserted at the appropriate position in the linked list that stores the team data. Don't forget that the team must be stored in a special order, by considering the player's position first, and then (if needed) the order of insertion. If a node with the given family name is already in the team, an error message should be produced and the new node should not be inserted into the linked list.

Delete a player from the team. The program should prompt the user for the family name of the player to be deleted and then delete the node containing that family name from the linked list that stores the team. If no player with the given family name is found in the team, an error message should be produced.

Search for a player using an input family name. The program should print the family name, first name, position and value of the player, with each piece of information on a separate line. If no player with the given family name is found in the team, an error message should be produced.

Search for players in the team that are worth less than or equal to an input value. The program should print the family name, first name, position and value of any player that is worth less than or equal to an input value, with each piece of player information on a separate line. A blank line should be printed between each player (if more than one is found). If no player in the team is worth less than or equal to the given value, an error message should be produced.
Print the team, following a special order. Print the family name, first name, position and value of each player, with each piece of information on a separate line. A blank line should be printed between each player. The special order assumes that the goalkeepers appear first, then the defenders, then the midfielders, and finally the strikers. If there are more than one players of the same position, then they should be printed in order of their insertion.
Quit the program. When the program is given the quit command, it should delete all nodes in the linked list by using calls to the free function. It should then try to print the linked list.

To assist you in the production of your program, we will give you a file that contains a skeleton of a complete program. To copy the skeleton program in your home directory executes the command:
cp /tmp/cscb09/a3/team.c ~
The skeleton program includes all of the C statements required to implement the menu driven parts of the program. It also includes a few helpful functions for reading data and printing messages. All you need to do is implement the instructions for working with the linked list that stores the team.

It is recommended that you take the following steps:
Read the whole skeleton program carefully. Take note of the provided functions for reading strings, printing information about players, and for printing error messages. Use of these functions will make it easier for you to satisfy the tester and marker programs.

Figure out how to express the required player information in a node. Add a struct definition for a linked list node to the program.

Add the function for inserting a node into the linked list. Your function will need to read the family name, first name, position and value for the player. Test your program by trying to insert nodes into the linked list. Try to insert nodes with both new and duplicate family names, and with different positions.

Add a function for printing the linked list. Test your program by inserting entries into the linked list and then printing them out. Are the entries in the correct order?

Add a function that searches the linked list for a player with the given family name and then either prints the appropriate entry or, if a player with the given family name is not found, prints an error message.

Add a function that searches the linked list for players that are worth less than or equal to a given value and then either prints the appropriate entries or, if a node is not found, prints an error message.

Add the statements that need to be executed when the Quit command is entered. These statements should delete the linked list by using calls to the free function. To check your work, print the linked list after all of the elements have been deleted.

Add a function for deleting a player. It will need to search the linked list for a given family name, delete the appropriate node from the linked list and then use the free function to release the memory used to store the node. If the given family name is not found in the team, print an error message.

It is recommended that you complete and test each step before moving on to the next one. This way, if your program no longer works, you will know which statements are causing the error.

C/C++, Programming

  • Category:- C/C++
  • Reference No.:- M9529559

Have any Question?


Related Questions in C/C++

Question 1find the minimum and maximum of a list of numbers

Question: 1. Find the Minimum and Maximum of a List of Numbers: 10 points File: find_min_max.cpp Write a program that reads some number of integers from the user and finds the minimum and maximum numbers in this list. Th ...

Software development fundamentals assignment 1 -details amp

Software Development Fundamentals Assignment 1 - Details & Problems - In this assignment, you are required to answer the short questions, identify error in the code, give output of the code and develop three C# Console P ...

What are the legal requirements with which websites must

What are the legal requirements with which websites must comply in order to meet the needs of persons with disabilities? Why is maximizing accessibility important to everyone?

There are several ways to calculate the pulse width of a

There are several ways to calculate the pulse width of a digital input signal. One method is to directly read the input pin and another method (more efficient) is to use a timer and pin change interrupt. Function startTi ...

Assignment word matchingwhats a six-letter word that has an

Assignment: Word Matching What's a six-letter word that has an e as its first, third, and fifth letter? Can you find an anagram of pine grave. Or how about a word that starts and ends with ant (other than ant itself, of ...

1 implement the binary search tree bst in c using the node

1. Implement the Binary Search Tree (BST) in C++, using the Node class template provided below. Please read the provided helper methods in class BST, especially for deleteValue(), make sure you get a fully understanding ...

Assign ment - genetic algorithmin this assignment you will

ASSIGN MENT - GENETIC ALGORITHM In this assignment, you will use your C programming skills to build a simple Genetic Algorithm. DESCRIPTION OF THE PROGRAM - CORE REQUIREMENTS - REQ1: Command-line arguments The user of yo ...

Project - space race part a console Project - Space Race Part A: Console Implementation

Project - Space Race Part A: Console Implementation INTRODUCTION This assignment aims to give you a real problem-solving experience, similar to what you might encounter in the workplace. You have been hired to complete a ...

Why do researcher drop the ewaste and where does it end

Why do researcher drop the ewaste and where does it end up?

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As