107 lines
2.4 KiB
C
Executable File
107 lines
2.4 KiB
C
Executable File
/*
|
|
In this task, you should implement a basketball score
|
|
logger using malloc()/calloc()/realloc() and free():
|
|
|
|
- Declare struct Player
|
|
- integer jersey_number_
|
|
- integer points_
|
|
- print: "Number of players on the team: "
|
|
- user input: number of players as int
|
|
- Allocate memory on heap
|
|
- all players of a team can be stored
|
|
- check if memory could be allocated
|
|
after each malloc()/calloc()/realloc()
|
|
- If mem-alloc NOK:
|
|
"Memory allocation failed\n"
|
|
return 1
|
|
- print: "Jersey number and points for player x: "
|
|
- user input: jersey number & points for each player
|
|
- first = jersey number
|
|
- second = points
|
|
- values separated by space (or any whitespace)
|
|
- show team scoring summary
|
|
- print list of athletes and their points
|
|
- free allocated memory using free().
|
|
|
|
Example:
|
|
|
|
Welcome to the Basketball Score Logger!
|
|
|
|
Number of players on the team: 6
|
|
Jersey number and points for player 1: 30 37
|
|
Jersey number and points for player 2: 23 29
|
|
Jersey number and points for player 3: 35 7
|
|
Jersey number and points for player 4: 1 20
|
|
Jersey number and points for player 5: 19 41
|
|
Jersey number and points for player 6: 34 12
|
|
|
|
Team Scoring Summary:
|
|
#30: 37 points
|
|
#23: 29 points
|
|
#35: 7 points
|
|
#1: 20 points
|
|
#19: 41 points
|
|
#34: 12 points
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#define fire free
|
|
|
|
typedef struct _Player_{
|
|
int jersey_number_;
|
|
int points_;
|
|
} Player;
|
|
|
|
Player* initializeTeam(int team_size)
|
|
{
|
|
Player* new_team = calloc(team_size, sizeof(Player));
|
|
if ( new_team == NULL ) return NULL;
|
|
|
|
return new_team;
|
|
}
|
|
|
|
void getPlayerStats(Player* team, int team_size)
|
|
{
|
|
for ( int player = 0; player < team_size; player++ )
|
|
{
|
|
printf("Jersey number and points for player %d: ", player + 1);
|
|
scanf("%d %d", &(team + player)->jersey_number_, &(team + player)->points_);
|
|
}
|
|
}
|
|
|
|
void printPlayerStats(Player* team, int team_size)
|
|
{
|
|
printf("\nTeam Scoring Summary:\n");
|
|
|
|
for ( int player = 0; player < team_size; player++ )
|
|
{
|
|
printf("#%d: %d points\n", (team + player)->jersey_number_, (team + player)->points_);
|
|
}
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
printf("Welcome to the Basketball Score Logger!\n\n");
|
|
|
|
printf("Number of players on the team: ");
|
|
int team_size = 0;
|
|
scanf(" %d", &team_size);
|
|
|
|
Player* team = initializeTeam(team_size);
|
|
if ( team == NULL )
|
|
{
|
|
printf("Memory allocation failed\n");
|
|
return 1;
|
|
}
|
|
|
|
getPlayerStats(team, team_size);
|
|
|
|
printPlayerStats(team, team_size);
|
|
|
|
fire(team);
|
|
|
|
return 0;
|
|
}
|