Can someone help me with this exercise?

Asked

Viewed 49 times

0

EXERCISE:

Write a function that returns the number of the team that is in the lead. Leadership is determined by the team that has the most points won. If one or more teams have the same number of points, and used the following tiebreaker criterion: number of wins and goals balance in this order. If, even so, two or more teams have tied, you must return the number of one of the leading teams. The function must receive as parameters the number of teams, n, and the table with the results, tab, and must obey the next prototype:

int lider(int n, int tab[][6]);

#include <stdio.h>

int melhorsaldo(int n, int tab[][6]) {
    int l, i=0;
    for (l=1;l<n;l++) {
        if ((tab[l][4]-tab[l][5]) > (tab[i][4]-tab[i][5])) {
            i = l;
        }
    }
    return i;
};

int main() {
    int n, l, c, res;
    printf("Quantos times sao?\n ");
    scanf("%d",&n);
    int tab[n][6];
    printf("Digite os elementos da matriz\n");
    for(l=0; l<n; l++) {
        for(c=0; c<6; c++) {
             printf("[%d][%d]: ", l, c);
             scanf("%d", &tab[l][c]);
        }
    }
    res = melhorsaldo(n, tab);
    res++;
    printf("\nMelhor saldo de gols, time: %d\n", res);
    return 0;
}

1 answer

0

You have to check the conditions in cascade. You did not set what to do when it occurs tie at all, I considered what appears first in the table.

int melhorclassificado(int n, int tab[][6]) {
    int l, i=0;
    for (l=1; l<n; l++) {
        if (tab[l][0] > tab[i][0]) { /* l tem mais pontos */
            i = l; 
        }
        else {
            if (tab[l][0] == tab[i][0]) { /* empate em pontos */
                if (tab[l][1] > tab[i][1]) { /* l tem maior número de vitórias */
                    i = l;
                }
                else {
                    if (tab[l][1] == tab[i][1]) { /* empate em pontos e número de vitórias */
                        if ((tab[l][4]-tab[l][5]) > (tab[i][4]-tab[i][5])) { /* l tem melhor saldo de gols */
                            i = l;
                        }
                        else {
                            if ((tab[l][4]-tab[l][5]) == (tab[i][4]-tab[i][5])) { /* empate em pontos, número de vitórias e saldo de gols */
                                ; /* Considera o que apareceu primeiro, no caso i */
                            }
                            else {
                                ; /* empate em pontos, número de vitórias mas i tem melhor saldo de gols */
                            }
                        }
                    }
                    else {
                        ; /* empate em pontos mas i tem mais vitórias */
                    }
                }
            }
            else {
                ; /* i tem mais pontos */
            }
        }
    }
    return i;
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.