Ir ao conteúdo
  • Cadastre-se

C exercicio sobre matriz em c


gabitamura

Posts recomendados

Um elemento Aij de uma matriz é dito ponto de sela da matriz A se, e somente se, Aij for, ao mesmo tempo, o menor elemento da linha i e o maior elemento da coluna j. Faça um programa que carregue uma matriz de ordem 5×7, verifique se a matriz possui ponto de sela e, se possuir, mostre seu valor e sua localização.

Segue o que ja fiz, sei que está errado mas não sei o q fazer. Alguem pode me ajudar ?

 

#include<stdio.h>
#include<stdlib.h>
#define NL 5
#define NC 7

int main(){
	
	int m[NL][NC];
	int i=0, j=0;
	int sela, mi=0, mj=0;
	int maior, menor;
	
	printf("Insira uma matriz: \n");
	for(i=0; i<NL; i++){
		for(j=0; j<NC; j++){
			printf("Elemento[%d][%d]: ", i, j);
			scanf("%d", &m[i][j]);
		}
	}
	
	printf("\n");
	
	for(i=0; i<NL; i++){
		for(j=0; j<NC; j++){
			printf("%d ", m[i][j]);
		}
		printf("\n");
	}
	
	printf("\n");
	
	maior = m[0][0];
	menor = m[0][0];
	for(i=0; i<NL; i++){
		for(j=0; j<NC; j++){
			if(m[i][j] > maior && m[i][j] < menor){
				sela = m[i][j];
				mi=i; 
				mj=j;
			}
		}
	}
	
	if(sela!=0){
		printf("\nPonto de sela = %d", sela);
		printf("\nPonto de sela se encontra na linha[%d] e coluna[%d]", mi, mj);
	}
	else{
		printf("A matriz nao tem ponto de sela.");
	}
	
	
	printf("\n\n");
	system("pause");
	return 0;
}

 

com110_lista7_ex4_2019007411.txt

Link para o comentário
Compartilhar em outros sites

Bom, você definiu que maior = m[0][0] e menor = m[0][0], neste caso o maior número e o menor número já está definido por você na linha 0 coluna 0, você não deixou o programa escolher quem é o maior ou menor número da matriz. Você pode ter um número sela sendo menor que a variável 'maior' e/ou um número sela maior que a variável 'menor'. Tem um certo caso também em que sela pode ser 0, ou seja, 0 pode ser o menor número da linha e o maior número da coluna, então ele não vai cair ali na condição do if.

 

O que eu recomendo é: criar um for para verificar as linhas e pega o menor número, guarda esse número numa variável auxiliar e depois criar um outro for pra verificar se existe um número maior que ele na coluna em que ele está. Se existir, não é sela.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

13 horas atrás, gabitamura disse:

se, e somente se, Aij for, ao mesmo tempo, o menor elemento da linha i e o maior elemento da coluna j

 

O simples é: para cada possível linha você identifica o elemento mínimo e, de posse desse valor, verifica se ele é o maior valor da coluna EM QUE ELE ESTÁ. Um loop que gera um par de valores [v,j] onde v é o valor e j a coluna. Com esses valores você verifica num outro loop um outro valor [x] que é a posiçao na coluna j que tem o maior valor da coluna. Se x for igual a v você tem o tal ponto de sela e pode retornar o valor e encerrar a busca.

 

Basta retornar o primeiro ponto de sela afinal.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Faça uma função busca; com os parâmetros da questão nela; deixa mais organizado.

 

23 horas atrás, gabitamura disse:

Um elemento Aij de uma matriz é dito ponto de sela da matriz A se, e somente se, Aij for, ao mesmo tempo, o menor elemento da linha i e o maior elemento da coluna j.

autoexplicativo!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

18 horas atrás, blvsman disse:

O que eu recomendo é: criar um for para verificar as linhas e pega o menor número, guarda esse número numa variável auxiliar e depois criar um outro for pra verificar se existe um número maior que ele na coluna em que ele está. Se existir, não é sela.

Isso é o mesmo que o menor numero da matriz; se de alguma forma faz eliminação lógica dessas escolhas que resulta em "não é sela", hipoteticamente, funciona.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Faça dois vetores um com 5 posições para armazenar o número mínimo para cada linha respectivamente, e outro com 7 posições para armazenar o máximo de cada coluna respectivamente.

 

Aí faz 2 loops aninhados para comparar cada mínimo de linha com todos os máximos das colunas, se encontrar um mínimo na linha e máximo na coluna iguais então checa se a posição da matriz com nessa linha e coluna é a posição que tem esse valor, se for então é sela.

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