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

Which debugger are you using?

team temp[1];

This has only one element: temp[0] .

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

Which debugger are you using?

im using devc++

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.