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

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 7 Years Ago by Dave Sinkula: n/a

This article has been dead for over six months. Start a new discussion instead.