Ir ao conteúdo

Posts recomendados

Postado

E ai galera, estou com um problema aqui e espero que alguém possa me ajudar, o exercício é esse:

 

4) Faça um algoritmo que leia uma matriz 5 x 5 de números e encontre o maior valor da matriz. A seguir, multiplique cada elemento das diagonais principais pelo maior valor. Mostre a matriz após as multiplicações.

 

Eu fiz o código até uma certa parte, o código está lendo a matriz, exibindo na tela os valores digitados e depois o maior valor encontrado, porém agora não sei como fazer a lógica para multiplicar cada elemento da diagonal principal pelo maior valor encontrado, alguém me ajuda ai por favor, :thumbsup:

 

Segue o código até onde eu fiz:

 

#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main()
{
		int lin,col;
		int mat[5][5];
		int maior=0;

						
	setlocale(LC_ALL,"portuguese");
						
	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("Digite um número para linha %d e um número para coluna %d: ", lin+1,col+1);
			scanf("%d", &mat[lin][col]);
		}
		printf("\n");
	}

	printf("\n Matriz:\n\n");

	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("%d\t ",mat[lin][col]);
		}
		printf("\n\n");
	}
	
		for(lin=0; lin<=4; lin++){
			for(col=0; col<=4; col++){
				if(mat[lin][col] > maior){
					maior = mat[lin][col];			
				}
			}
		}
	
	printf("\n Maior será: %d", maior);
	
	printf("\n\n");
	system("pause");
	return 0;
	
}

 

  • Curtir 1
Postado

O elemento é da diagonal principal quando os índices ([j]) são iguais. 

Citação

for(lin = 0; lin < 4; lin++)

    mat[lin][lin] = 0;

 

Nesse exmplo estou zerando a diagonal principal. Só precisa adaptar para o que você quer.

  • Curtir 1
  • Obrigado 1
Postado
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main()
{
		int lin,col;
		int mat[5][5];
		int maior=0;
		int soma;

						
	setlocale(LC_ALL,"portuguese");
						
	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("Digite um número para linha %d e um número para coluna %d: ", lin+1,col+1);
			scanf("%d", &mat[lin][col]);
		}
		printf("\n");
	}

	printf("\n Matriz:\n\n");

	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("%d\t ",mat[lin][col]);
		}
		printf("\n\n");
	}
	
		for(lin=0; lin<=4; lin++){
			for(col=0; col<=4; col++){
				if(mat[lin][col] > maior){
					maior = mat[lin][col];			
				}
			}
		}
		
		for(lin = 0; lin < 4; lin++){
    		mat[lin][lin] = 0;
    		soma = mat[lin][lin] + maior;
    	}
	
	printf("\n Maior será: %d", maior);
	
	printf("\n\n");
	system("pause");
	return 0;
	
}


@MassakiMsk Bom, entendi porém ainda não sei como aplicar em meu código, pois preciso somar a diagonal principal com o maior valor encontrado da matriz, seria por esse caminho ? pode me direcionar ?

 

  • Curtir 1
Postado

De acordo com as propriedades de matrizes, um elemento faz parte da diagonal principal quando i(linha) = j(coluna). Ou seja, ele pede que você altere o valor de cada um dos elementos da diagonal principal pelo produto do elemento com o maior número da matriz.

int i;
for(i = 0; i < 5; i++)
{
	mat[i][i] *= maior;//O operador *= é a multiplicação do valor atual por outro valor.
}

Como i = j, é possível fazer o calculo com apenas um for.

  • Curtir 2
  • Obrigado 1
Postado
for(lin=0; lin<=4; lin++){
			for(col=0; col<=4; col++){
				if(mat[lin][col] > maior){
					maior = mat[lin][col];			
				}
			}
		}
		
		for(lin=0; lin<=4; lin++){
			mat[lin][lin] *= maior;
	
		}
		
	printf("\n Maior será: %d", maior);
	
	printf("\n A diagonal principal x o maior número da matriz será: %d", mat[lin][lin]);
	
	printf("\n\n");
	system("pause");
	return 0;
	
}

@iHollyZinhO  Ok, entendi a lógica que tem que ser usada, porém estou com problemas para exibir o resultado na tela, tentei deste modo porém não deu certo, não sei em que parte estou errando ;)

 

 

  • Curtir 1
Postado
agora, Gabriel T.I disse:

for(lin=0; lin<=4; lin++){
			for(col=0; col<=4; col++){
				if(mat[lin][col] > maior){
					maior = mat[lin][col];			
				}
			}
		}
		
		for(lin=0; lin<=4; lin++){
			mat[lin][lin] *= maior;
	
		}
		
	printf("\n Maior será: %d", maior);
	
	printf("\n A diagonal principal x o maior número da matriz será: %d", mat[lin][lin]);
	
	printf("\n\n");
	system("pause");
	return 0;
	
}

@iHollyZinhO  Ok, entendi a lógica que tem que ser usada, porém estou com problemas para exibir o resultado na tela, tentei deste modo porém não deu certo, não sei em que parte estou errando ;)

 

 

O seu código está quase pronto, mas o que está faltando é mostrar a nova diagonal principal, e para isso você precisará de mais um loop no final que irá de 1 a 4 para imprimir os elementos mat.

 

Você poderia aproveitar o loop que gera a nova diagonal para mostra-la na tela, como por exemplo:

printf("A nova diagonal principal é:");
for(lin=0; lin<=4; lin++)
{
	mat[lin][lin] *= maior;
  	printf("%d", mat[lin][lin]);
}

 

  • Curtir 1
  • Obrigado 1
Postado
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main()
{
	int lin,col;
	int mat[5][5];
	int maior=0;
						
	setlocale(LC_ALL,"portuguese");
						
	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("Digite um número para linha [%d] e um número para coluna [%d]: ", lin+1,col+1);
			scanf("%d", &mat[lin][col]);
		}
		printf("\n");
	}

	printf("\n Matriz:\n\n");

	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			printf("%d\t ",mat[lin][col]);
		}
		printf("\n\n");
	}
	
	for(lin=0; lin<=4; lin++){
		for(col=0; col<=4; col++){
			if(mat[lin][col] > maior){
				maior = mat[lin][col];			
			}
		}
	}
		
	for(lin=0; lin<=4; lin++){
		mat[lin][lin] *= maior;
	}
		
	printf("\n Maior será: %d", maior);
	
	printf("\n\n A nova diagonal principal é:");
	
	for(lin=0; lin<=4; lin++){
		mat[lin][lin] *= maior;
  		printf(" %d", mat[lin][lin]);
	}

	printf("\n\n");
	system("pause");
	return 0;
}

23634614_1006968812777664_1717864320_n.jpg.d4c33bb0e39ee92a8ce3ea30fd72988a.jpg

 

@iHollyZinhO  Coloquei no código da mesma maneira que você mencionou, porém a multiplicação está errada ;)

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!