Ir ao conteúdo
  • Cadastre-se

C++ Multiplicar diagonal principal pelo maior valor


Gabriel T.I

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

#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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

#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
Link para o comentário
Compartilhar em outros sites

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...