0

hi everyone, i have a program code here, its working, but as soon as im trying to add results debugger breaks after adding score, can anyone help me to fix this problem. Program is working ok. heres the code:

#include <stdio.h>
#include <string.h>

void addTeam(char[50], int);
void calculateResult(int, int, int, int);

char newTeam[50];
int menuChoice = 0;
int numOfTeams = 0;
int team1, team2, team1Score, team2Score;

typedef struct
{
	char name[50];
	int points, goalsFor, goalsAgainst, played, won, lost, drawn;
} team;

team teams[12];

void sortTable(team[]);
  
int main(void)
{
	int i;
    while (menuChoice != 4)
	{
		printf("Football League\n\n");
		printf("1. Add team\n");
		printf("2. Display league table\n");
		printf("3. Add result\n");
		printf("4. Quit\n");
		scanf("%d", &menuChoice);	

		if (menuChoice == 1)
		{
			if (numOfTeams == 11)
				printf("Error: Maximum amount of teams has been entered");
			else
			{
				printf("Add new team\n");
				fgets(newTeam, sizeof(newTeam), stdin);
				newTeam[strlen(newTeam)-1] = '\0';
				fgets(newTeam, sizeof(newTeam), stdin);
				newTeam[strlen(newTeam)-1] = '\0';
				addTeam(newTeam, numOfTeams);
				numOfTeams++;
				printf("\nNew team added\n");
			}
		}		
		else if (menuChoice == 2)
		{
			printf("\t\tP\tW\tD\tL\tF\tA\tT\n\n\n");
			for ( i = 0; i < 12; i++)
			{
				printf("%s\t\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", 
				teams[i].name, teams[i].played, teams[i].won,teams[i].drawn, 
				teams[i].lost, teams[i].goalsFor, teams[i].goalsAgainst, 
teams[i].points);
			}
		}
		else if (menuChoice == 3)
		{
			printf("Enter first team playing:\n");
			scanf("%d", &team1);
			printf("Enter second team playing:\n");
			scanf("%d", &team2);
			printf("Enter first teams score:\n");
			scanf("%d", &team1Score);
			printf("Enter second teams score:\n");
			scanf("%d", &team2Score);
			calculateResult(team1, team2, team1Score, team2Score);
		}

	}
return 0;
}
 
void addTeam(char *teamName, int i)
{
	strcpy(teams[i].name, teamName);
	teams[i].points = 0;
	teams[i].goalsFor = 0;
	teams[i].goalsAgainst = 0;
	teams[i].played = 0;
	teams[i].won = 0;
	teams[i].lost = 0;
	teams[i].drawn = 0;
}

void calculateResult(int t1, int t2, int t1R, int t2R)
{
	if (t1R > t2R)
	{
		teams[(t1-1)].points+=3;
		teams[(t1-1)].won++;
		teams[(t2-1)].lost++;	
	}
	else if (t2R > t1R)
	{
		teams[(t2-1)].points+=3;
		teams[(t2-1)].won++;
		teams[(t1-1)].lost++;
	}
	else
	{
		teams[(t2-1)].points++;
		teams[(t1-1)].points++;
		teams[(t1-1)].drawn++;
		teams[(t2-1)].drawn++;
	}
	teams[(t1-1)].goalsFor+=t1R;
	teams[(t2-1)].goalsFor+=t2R;
	teams[(t1-1)].goalsAgainst+=t2R;
	teams[(t2-1)].goalsAgainst+=t1R;
	teams[(t1-1)].played++;
	teams[(t2-1)].played++;

	sortTable(teams);
}

void sortTable(team teams1[])
{
	team temp[1];
	int i, j;
	for ( i = 0; i < 12; i++)
	{
		for ( j = 11; j >=0; j--)
		{
			if (teams1[j].points > teams1[(j-1)].points)
			{ 	
				temp[1] = teams1[(j-1)];
				teams1[(j-1)] = teams1[j];
				teams1[j] = temp[1];
			}	
		} 
	}
}

thanks

3
Contributors
3
Replies
4
Views
7 Years
Discussion Span
Last Post by dinamit875
0
team temp[1];

This has only one element: temp[0] .

temp[1] = teams1[(j-1)];
teams1[(j-1)] = teams1[j];
teams1[j] = temp[1];

Edited by Dave Sinkula: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.