Ir ao conteúdo
  • Cadastre-se

C matriz com alocação dinamica


Posts recomendados

Olá gente então tenho que resolver esse problema, porém n sei o que pode estar dando errado, no exercício pede para eu alocar uma matriz dinamicamente (somente valores inteiros), e depois de alocada mostrar a mensagem se ela é ou não é simétrica, consegui fazer até a parte da alocação (bem pelo menos eu acho que esta certo) mas dai na parte da simetria já tentei alguns modos e não funcionou

agradeço a ajuda :)

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

int main(){
	
	int m,n,i,j;
	
	scanf("%d %d",&m,&n);
	
	int**x = (int**) malloc(m*sizeof(int*));
	
	for(i=0; i<m; i++)
		x[i] = (int*) malloc(n*sizeof(int));
		
	for(i=0; i<m; i++)
		for(j=0; j<n; j++)
			scanf("%d",&x[i][j]);

	return 0;
}	

 

Link para o comentário
Compartilhar em outros sites

Olá!

Matriz Simétrica

Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso sejam iguais, ela é simétrica.

https://mundoeducacao.bol.uol.com.br/matematica/matriz-simetrica.htm

 

~~ / ~~

 

Código para Teste: Matriz Simétrica

Com isso, se testa a simetria de matriz simplesmente fazendo teste condicional de igualdade.

Se o número de linhas é igual o número de colunas então é quadrada [M x M].

teste_simetria

/*	Teste de Simetria para Matriz	*/
/* Se o número de linhas[n] é igual ao de colunas[m]: é simétrica	*/
if (n == m) {
  printf ("Matriz simétrica")
}
/*Se não então: é assimétrica */
else {
  printf ("Matriz assimétrica")
}

 

 

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

  • Membro VIP

Sobre:

13 minutos atrás, AnsiC disse:

Olá!

Matriz Simétrica

Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso sejam iguais, ela é simétrica.

https://mundoeducacao.bol.uol.com.br/matematica/matriz-simetrica.htm

 

~~ / ~~

 

Código para Teste: Matriz Simétrica

Com isso, se testa a simetria de matriz simplesmente fazendo teste condicional de igualdade.

Se o número de linhas é igual o número de colunas então é quadrada [M x M].

teste_simetria

 

Nops! Ai está apenas verificando se a matriz é quadrada. Na verdade, para uma matriz ser simétrica, ela necessariamente também será quadrada... mas, pela lógica, o oposto não é verdade. (pois passariam a ser a mesma coisa)

 

 

adicionado 3 minutos depois
Citação

Isto só será possível caso, m = n, e quando isso ocorre dizemos que a matriz é quadrada.

 

Att

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

Engraçada, estou com certeza de que é isso mesmo.

2 minutos atrás, Simon Viegas disse:

(pois passariam a ser a mesma coisa)

 

@Simon Viegas Uma matriz quadrada não é simétrica? Então não sei o que é um matriz simétrica ou quadrada. Explica-me?

adicionado 2 minutos depois

Se não for pedir muito caso em que a matriz é simétrica sem ser quadrada, para ilustração

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
27 minutos atrás, AnsiC disse:

/* Se o número de linhas[n] é igual ao de colunas[m]: é simétrica */

 

Ali ó!.  Ser quadrada é uma CONDIÇÃO, não uma comprovação, ou seja, esse "se" serve para dizer que "pode ser simétrica", mas não garante!

 

Resumindo:

Só daria para verificar se NÃO é simétrica, ou seja, se não for quadrada, nem precisa verificar (até porque não teria como).

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
13 minutos atrás, Simon Viegas disse:

Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso sejam iguais, ela é simétrica.

Aqui também... você tá invertendo... o correto seria:
 

"Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso NÃO sejam iguais, ela NÃO é simétrica."

adicionado 2 minutos depois

"Todo baiano (simétrico) é brasileiro (quadrado), mas nem todo brasileiro é baiano.

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

1 hora atrás, Simon Viegas disse:

"Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso NÃO sejam iguais, ela NÃO é simétrica."

Que coisa, você simplesmente acrescenta NÃO. Isso concerta alguma coisa? Qual o seu problema?

Que resulta na mesma afirmação?

Uma matriz para ser simétrica ainda precisa ser quadrada!

 

Eu por um breve instante achei o contrário, até questionei a possibilidade de haver matriz simétrica não quadrada.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
agora, AnsiC disse:

Que coisa, você simplesmente inverte a afirmação para um negação.

 

Não cara! é justamente isso que estou expondo! Não é uma negação.

 

"Todo baiano é brasileiro". A negação seria "Nem todo baiano é brasileiro"... Você estaria confundindo com "nenhum baiano é brasileiro". São diferentes.

 

Resumindo:

Você não pode verifica se uma matriz é quadrada, e por isso dizer que é simétrica!  Apenas pode dizer que PODE SER simétrica.

 

adicionado 5 minutos depois
5 minutos atrás, AnsiC disse:

Uma matriz para ser simétrica ainda precisa ser quadrada.

 

Exatamente, você está dizendo uma coisa, mas fez outra, veja:

43 minutos atrás, AnsiC disse:

/*	Teste de Simetria para Matriz	*/
/* Se o número de linhas[n] é igual ao de colunas[m]: é simétrica	*/
if (n == m) {
  printf ("Matriz simétrica")
}
/*Se não então: é assimétrica */
else {
  printf ("Matriz assimétrica")
}

 

Constatar que N = M não que dizer que é uma matriz simétrica, apenas que PODE SER.

 

Seria algo assim:

if (n == m) {
  printf ("Pode ser uma Matriz simétrica")
}
else {
  printf ("Não tem como ser uma Matriz assimétrica")
}

 

Entende?

 

Está confundindo "Pode ser" com "certeza que é".

 

 

Link para o comentário
Compartilhar em outros sites

Veja, para um matriz ser simétrica ela precisa ser quadrada, porém nem toda matriz quadrada é simétrica porque existe a correspondência de valores na matriz. Contudo não existe menção a essa questão no problema. Basta para tanto verificar se m = n. Foi isso que eu disse quando falei:

51 minutos atrás, AnsiC disse:

Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso sejam iguais, ela é simétrica.

 

17 minutos atrás, Simon Viegas disse:

"Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso NÃO sejam iguais, ela NÃO é simétrica."

Se essa opção lhe agrada mais, ou é por você considerada mais lógica, obrigado por sua colaboração nesse aspecto.

adicionado 3 minutos depois

Por um instante pensei que, matrizes não quadradas poderia ser simétricas, daí você para mim teria sido mais útil exemplificar um caso desses, mais ao que parece não há, ou será que sim?@Simon Viegas

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
4 minutos atrás, AnsiC disse:

Por um instante pensei que, matrizes não quadradas poderia ser simétricas, daí você para mim teria sido mais útil exemplificar um caso desses, mais ao que parece não há, ou será que sim?

Tá, em que momento eu supus que uma matriz não quadrada pode ser simétrica?

 

 

 

4 minutos atrás, AnsiC disse:

Se essa opção lhe agrada mais, ou é por você considerada mais lógica, obrigado por sua colaboração nesse aspecto.

@AnsiC, apenas pare para analisar com calma. Não é uma questão de agrada ou não, pois SÃO FRASES DIFERENTES!!!!!

 

Para resumir:

 

Minha matriz:

1 2 3
4 5 6
7 8 9

Qual a "ordem" dela? 3x3, ou seja, M=3 e N=3, correto?

 

Você diz:

16 minutos atrás, Simon Viegas disse:

if (n == m) {
  printf ("Matriz simétrica")

 

Logo, está dizendo que minha matriz é simétrica! Ela é?

Link para o comentário
Compartilhar em outros sites

matrizes-2014-8-638.jpg

adicionado 3 minutos depois
1 hora atrás, Simon Viegas disse:

Logo, está dizendo que minha matriz é simétrica! Ela é?

Se todos os elementos da matriz é iguais a 0, ela é simétrica, porém não sei quais elementos há lá e se vai ser solicitado valores <<diferentes de todos iguais a 0>>, presumo pelo problema que não tem importância os elementos, também o enunciado não me deu muitas escolhas. 

Link para o comentário
Compartilhar em outros sites

Para ter chance de ser simétrica uma matriz deve ser quadrada. Mas nem toda matriz quadrada é simétrica.

 

Uma matriz é simétrica quando sua transposição for igual a sua forma original.

 

Por exemplo:

1 2 3
4 5 6
7 8 9

é quadrada mas não é simétrica pois quando transporta fica:

1 4 7
2 5 8
3 6 9

que é diferente da forma original.

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

 

 

1 hora atrás, isrnick disse:

Para ter chance de ser simétrica uma matriz deve ser quadrada. Mas nem toda matriz quadrada é simétrica.

Correto, essa é uma das partes.

 

Concordo plenamente com @isrnick ,

Diferente de @Simon Viegas , que não completa a condição para que um matriz seja definitivamente simétrica. 

1 hora atrás, isrnick disse:

Uma matriz é simétrica quando sua transposição for igual a sua forma original.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
3 minutos atrás, AnsiC disse:

 

 

Correto

adicionado 2 minutos depois

Concordo plenamente com @isrnick ,

Diferente de @Simon Viegas , ele completa a condição para que um matriz seja definitivamente simétrica. 

 

Como assim cara? rs

 

Essa citação É SUA!

1 hora atrás, AnsiC disse:

/* Se o número de linhas[n] é igual ao de colunas[m]: é simétrica */

 

Eu estou afirmando, com 99,999% de certeza, que ela está errada.

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, AnsiC disse:

Se todos os elementos da matriz é iguais a zero, ela é simétrica, porém não sei quais elementos há lá e se vai ser solicitado valores, presumo pelo problema que não tem importância os elementos, também o enunciado não me deu muitas escolhas. 

O autor do tópico já colocou scanfs para preencher a matriz com valores, então os elementos são relevantes, até por que sem eles não faria sentido falar em matriz simétrica, pois simetricidade é definida através da transposição dos elementos.

Link para o comentário
Compartilhar em outros sites

52 minutos atrás, Simon Viegas disse:

Eu estou afirmando, com 99,999% de certeza, que ela está errada.

Sim, porque a estrutura da matriz é apenas uma das partes do problema, diria a mais simples delas.

 

51 minutos atrás, isrnick disse:

O autor do tópico já colocou scanfs para preencher a matriz com valores, então os elementos são relevantes, até por que sem eles não faria sentido falar em matriz simétrica, pois simetricidade é definida através da transposição dos elementos

De fato, eu apenas foquei no aspecto estrutural da matriz, e juro por deus, não vi o scanf:rezando:

Realmente eu não vi, ainda se for todos 0, o que acontece? Simétrico ou antissimétrico

@isrnick

 

 

 
52 minutos atrás, Simon Viegas disse:

Como assim cara? rs

 

57 minutos atrás, AnsiC disse:

Uma matriz é simétrica quando sua transposição for igual a sua forma original.

é diferente disso:

2 horas atrás, AnsiC disse:

Conceito de matriz simétrica é relacionado com seu número de linhas e colunas, caso sejam iguais, ela é simétrica.

Nessa caso, ingenuamente foquei apenas no aspecto estrutural de n x m e errei no conceito quando na verdade existe mais interesses [partes do problema]. 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
15 minutos atrás, AnsiC disse:

Se for todos 0, o que acontece? Simétrico ou antissimétrico

Ai precisaria ver apenas se é quadrada... se for, seria simétrica. Se não for quadrada, não seria (até porque nenhuma seria).

 

Ou seja, para ser simétrico tem duas condições: inicialmente ser quadrada, e que a transposta seja igual a original.

Link para o comentário
Compartilhar em outros sites

 

25 minutos atrás, Simon Viegas disse:

Ai precisaria ver apenas se é quadrada... se for, seria simétrica. Se não for quadrada, não seria (até porque nenhuma seria).

 

Ou seja, para ser simétrico tem duas condições: inicialmente ser quadrada, e que a transposta seja igual a original.

Exatamente, o pragmatismo me tomou, e foquei apenas no aspecto estrutural. Quando na verdade os elementos são importantes, e diferentes de todos iguais a 0. O que faz do problema objeto de meu maior interesse.

 

E pela amor de Deus, concerta esse enunciado @Guilherme Cesila . Para que não seja os elementos todos nulos.

 

Será que alguém, consegue resolver ????:lol:

Aguardo ansioso pela solução.

~~ / ~~

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

  • Membro VIP
22 minutos atrás, AnsiC disse:

E pela amor de Deus, concerta esse enunciado @Guilherme Cesila . Para que não seja os elementos todos nulos.

 

Seria essa parte em negrito?

14 horas atrás, Guilherme Cesila disse:

Olá gente então tenho que resolver esse problema, porém n sei o que pode estar dando errado, no exercício pede para eu alocar uma matriz dinamicamente (somente valores inteiros), e depois de alocada mostrar a mensagem se ela é ou não é simétrica, consegui fazer até a parte da alocação (bem pelo menos eu acho que esta certo) mas dai na parte da simetria já tentei alguns modos e não funcionou

agradeço a ajuda :)

 

Acho que está certo. Ele que saber se é simétrica ou não.

 

RESUMINDO:

Primeiro verificar se é quadrada ou não. Se não for quadrada, já sabem-se que não é simétrica. Senão, verifica se a transporta é igual a matriz original OU alguma outra forma que consiga verificar a simetria.

 

obs.: vejam, At=A é apenas uma propriedade... Para resolver não necessariamente precisa achar a transposta... poderia por exemplo ir comparando as posições simétricas.... se uma delas for diferente, não é simétrica. Se forem, é!

adicionado 3 minutos depois

Adendo:

 

Fala também sobre:

3 minutos atrás, Simon Viegas disse:

somente valores inteiros

 

Mas isso não tem a menor importância... Poderia ser qualquer coisa... número reais, números imaginários, frutas amazônicas... não importa... o que importa é que "em posições simétricas, tem elementos iguais", ou seja, ser simétrico é ter "valores" iguais em posições simétricas (em matriz quadradas, é claro).

 

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

  • Membro VIP

Mas voltando ao foco:

 

@Guilherme Cesila, sobre:

14 horas atrás, Guilherme Cesila disse:

mas dai na parte da simetria já tentei alguns modos e não funcionou

 

Creio que bastaria comparar as posições (i,j) com as posições (j,i). Algo como:

- inicia uma flag indicando que é simétrico;

- compara cada poção i,j com a j,i.

- se uma das comparações resultar que não é igual, então marca a flag como não sendo simétrico.

No final, verifica a flag.

 

 

 

 

 

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

  • Membro VIP
13 minutos atrás, AnsiC disse:

testar para i até n se todo j até m tem A(ij) == A(ji):

 

Acho que seria isso...

 

Se estiver usando uma função, coloca um if  lá num for, que vai verificando isso... mas pela negação, ou seja, "se Aij for diferente de aji, então return 0". Também coloca um return 1 depois do for...

 

Resumindo: se alguma posição for diferente, vai retornar 0 (pois todas devem ser iguais, se pelo menos uma não for, já não é simétrico), se nenhuma for diferente, o for vai terminar vai retornar 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...