Ir ao conteúdo

Posts recomendados

Postado

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

Postado

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

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

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

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!