Se a matríz é 3 x 3 os índices variam de [0][0] a [2][2] e portanto
você tem que fazer o laço assim:
for(i = 0;i < 3;i++){
quando no seu exemplo o i pode chegar a 3 e estourando o tamanho da linha.
ajudou parou de aparecer números negativos, porém ainda não está funcionando como deveria o final não está avisando quem foi o jogador com maior pontuação. apenas aparece
o jogador com maior potuacao 00
o que eu posso fazer neste caso ?
Eu pensei dessa forma, veja se te serve como um norte:
#include<stdio.h>
#include<stdlib.h>
int main(){
int embates [4][4],i,j;
//int jog_maior,maior,soma,jog;
char jogadores[4][8] = {"Juninho", "Mané", "Fumiga", "Buiú"};
int jogador_campeao; //Jogador que ganhou
int maior_pontuacao; //A pontuação maior já registrada para um dos jogadores
int partida; //Mostra as partidas de 1 a 4
int contador = 0; //Conta as leituras da pontuação
maior_pontuacao = 0; //A maior pontuação é zero entes do começar os embates
jogador_campeao = maior_pontuacao; //Logo, o possível jogador campeão não tem pontuação
for(i = 0; i <= 3;i++){
partida = i;
partida++;
for(j = i; j <= partida ; j++){
//Caso o jogador seja o quarto, então ele deve jogar com o primeiro jogador para fechar as chaves
if(j == 4){
i = 0;
j = 0;
}
printf("\nDigite o pontuação do jogador %s na partida %d: ", jogadores[j], partida);
scanf("%d",&embates[i][j]);
++contador; //Conta as leituras
//soma = (soma + matriz[i][j]);
//Se na partida i, o jogador j tiver uma pontuação maior que a pontuação do que a do seu oponente
if(embates[i][j] > maior_pontuacao){
maior_pontuacao = embates[i][j]; //Então a maior pontuação (atual) é a desse jogador
jogador_campeao = j; //Então o jogador campeão para essa pertida é o jogador j
}
//Se houve houver quatro partidas então houve outo leituras
if(contador == 8){
i = 4; //Então o número de partidas é 4
partida = -1; //As partidas terminam -> j = 4, 4 <= partidas = false, então é hora de mostrar o campeão
}
}
printf("\n");
}
/*if (soma > maior){
maior = soma;
jog_maior = jog;
}*/
printf("\n\nO jogador com maior pontuacao foi: %s com %d pontos.\n\n", jogadores[jogador_campeao], maior_pontuacao);
system("pause");
return 0;
}
Rodando…
As partidas acontecem da seguinte forma:
1 - Juninho vs Mané
2 - Mané vs Fumiga
3 - Fumiga vs Buiú
4 - Buiú vs Juninho
Ficou legal a ideia cara mas não é exatamente isso.
basicamente ele pede que lemos linhas e colunas
linhas= jogadores
colunas=partidas
eu consegui arrumar uma parte do código porém falta o final onde tenho que exibir número do jogador com maior pontuação. #include <stdio.h> #include <stdlib.h> #include <math.h>
int matriz [4][6],i,j; //linha=jogadores , colunas=partidas
int jog_maior,maior,soma,jog;
int main(){
maior = 0;
for(i = 0;i < 4;i++){
soma = 0;
for (j = 0; j < 6; j++){
printf("\nDigite o pontuacao da partida[%.2d][%.2d] :",matriz[i][j]);
scanf("%d",&matriz[i][j]);
soma = soma + matriz[i][j];}
}
agora tenho que arrumar o final onde devo mostrar quem é o jogador com maior pontuação.
Se você quer criar uma matriz numérica que suporte operações matemáticas simples ou complexas considere utilizar a biblioteca GLM. https://glm.g-truc.net/
Não só pode ser utilizada para operações vetoriais e matriciais como também para outras miudezas, extremamente útil para programação gráfica com OpenGL.