Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

[Resolvido] Matriz 4

Recommended Posts

Ler uma matriz D de duas dimensões com 15 linhas e 15 colunas. Apresentar o somatório dos elementos pares situados na diagonal principal da referida matriz ( D[2,2], D[4,4], D[6,6], D[8,8], ... .

 

 

Esta dando erro na hora que eu entro com os valores

Não sei o q fazer para mostrar todos os elentos pares da diagonal principal

 

 

/*verificar elementos pares*/
#include <stdio.h>
#include <stdlib.h>

main()
{

float matD[4][4];
int i,j,x=1; //os índice sempre inteiro
float somaDP=0;

   while(x==1)
   {
			system("cls");
		  system("color 71");
			for(i=0; i<4; i++) 
			 for(j=0; j<4; j++) 
			   {   
			   printf("Entre com o elemento A[%d %d]: ",i+1,j+1);
			   scanf("%f",&matD[i][j]);
			 
				   if ((i%j==0) && (i%2==0) && (j%2==0) && (i==j))
				   somaDP = somaDP + matD[i][j];
				}			   

				 printf("\n");					 
	  
	  printf("\nMatriz  D  eh: \n ");

			for(i=0; i<4; i++)	
			 { for(j=0; j<4; j++)
			printf("%0.f\t",matD[i][j]);
			printf("\n");
			 }		 
		   
printf("\n");
printf("A soma dos elementos pares e = %f\n",somaDP);
printf("deseja entrar com uma nova matriz? (1=sim 0= nao) ");
scanf("%d",&x);
} 
   system ("pause");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,le de novo o exercicio:

Apresentar o somatório dos elementos pares situados na diagonal principal da referida matriz ( D[2,2], D[4,4], D[6,6], D[8,8], ... .

 

Os elementos da diagonal principal tem q ser pares,e não os indices da matriz...

 

if (i==j && !(mat[i][i]%2))
			   somaDP = somaDP + matD[i][i];

 

 

for(i=0; i<4; i++) {
		printf("%0.f\t",matD[i][i]);
		printf("\n");
		 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazendo o q você disse continua dando erro

 

for(i=0; i<4; i++) 
//			 for(j=0; j<4; j++) 
			   {   
			   printf("Entre com o elemento A[%d %d]: ",i+1);
			   scanf("%f",&matD[i][j]);
			 
				  if (i==j && !(matD[i][i]%20)) //Erro nesta linha
				   somaDP = somaDP + matD[i][i];
					  }			   

				 printf("\n");					 
	  
	  printf("\nMatriz  D  eh: \n ");

			for(i=0; i<4; i++) {
			// { for(j=0; j<4; j++)
			printf("%0.f\t",matD[i][i]);
			printf("\n");
			 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao eh 20:

 

if (i==j && !(matD[i][i]%20)) //Erro nesta linha
			   somaDP = somaDP + matD[i][i];
				  }

 

 

Substitua o % por fmodf(matD,2) então. E inclua a math.h

 

Detalhe: só dizer que dá erro não ajuda em nada. De novo: se o compilador cuspir alguma coisa, cole.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais o comando

 

% não e para pegar o resto da divisão?

 

Esse comando

 

fmodf(matD[i][i],2)

 

Só fez piorar mais ainda o código

 

Nao eh 20:

 

if (i==j && !(matD[i][i]%20)) //Erro nesta linha
				   somaDP = somaDP + matD[i][i];
					  }

 

Substitua o % por fmodf(matD,2) então. E inclua a math.h

 

Detalhe: só dizer que dá erro não ajuda em nada. De novo: se o compilador cuspir alguma coisa, cole.

Compartilhar este post


Link para o post
Compartilhar em outros sites

% é restrito a inteiros.

 

No rationale do C99 diz que o comitê do C89 rejeitou a extensão do operador % p/ ponto flutuante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi

 

Mais agora o programa esta retornando o valor 0 nos elementos pares

 

E mais uma coisa como eu só vou imprimir os indices como eu faço o for?

 

for(i=0; i<4; i++) 
		   //  for(j=0; j<4; j++) 
			   {   
			   printf("Entre com o elemento A[%d %d]: ",i+1,i+1);
			   scanf("%d",&matD[i][i]);
			 
				  if (i==j && !(matD[i][i]%2))
				   somaDP = somaDP + matD[i][i];
					  }			   

				 printf("\n");					 
	  
	  printf("\nMatriz  D  eh: \n ");

			for(i=0; i<4; i++) {
//			{ for(j=0; j<4; j++)
			printf("%0.d\t",matD[i][i]);
			printf("\n");
			 }

% é restrito a inteiros.

 

No rationale do C99 diz que o comitê do C89 rejeitou a extensão do operador % p/ ponto flutuante.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mais agora o programa esta retornando o valor 0 nos elementos pares

 

??????? Onde? Aqui funciona normal do jeito que eu fiz.

 

E mais uma coisa como eu só vou imprimir os indices como eu faço o for?

 

Imprima i e j,oras...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código para analise

 

 

/*verificar elementos pares*/
#include <stdio.h>
#include <stdlib.h>

main()
{

int matD[4][4];
int i,j,x=1; //os índice sempre inteiro
float somaDP=0;

   while(x==1)
   {
			system("cls");
		  system("color 71");
			for(i=0; i<4; i++) 
			 for(j=0; j<4; j++) 
			   {   
			   printf("Entre com o elemento A[%d %d]: ",i+1,i+j);
			   scanf("%d",&matD[i][j]);
			 
				  if (i==j && !(matD[i][i]%2))
				   somaDP = somaDP + matD[i][j];
					  }			   

				 printf("\n");					 
	  
	  printf("\nMatriz  D  eh: \n ");

			for(i=0; i<4; i++) 
		   // { for(j=0; j<4; j++)
			printf("%0.d\t",matD[i][i]);
			printf("\n");
			 }		 
		   
printf("\n");
printf("A soma dos elementos pares e = %d\n",somaDP);
printf("deseja entrar com uma nova matriz? (1=sim 0= nao) ");
scanf("%d",&x);
} 
   system ("pause");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra você ver que funciona:

 

#include <stdio.h>
#include <math.h>
int main(void)
{
  float matD[4][4];
  int i,j,x=1;
  float somaDP;

  while(x==1){
   somaDP=0;
   for(i=0; i<4; i++)
	  for(j=0; j<4; j++){
		 printf("Entre com o elemento A[%d %d]: ",i+1,j+1);
		 scanf("%f",&matD[i][j]);
		 if (i==j && !fmodf(matD[i][i],2))
			somaDP = somaDP + matD[i][i];
	  }
	  printf("\n");

	  for(i=0; i<4; i++)
	  { for(j=0; j<4; j++)
		  printf("%0.f\t",matD[i][j]);
		printf("\n");
	  }

	  printf("A soma dos elementos pares e = %f\n",somaDP);
	  printf("deseja entrar com uma nova matriz? (1=sim 0= nao) ");
	  scanf("%d",&x);
 }
return 0;
}

 

ib03@macalan:~/src/C\:gcc prin.c -lm -std=c99

ib03@macalan:~/src/C\:./a.out

Entre com o elemento A[1 1]: 9

Entre com o elemento A[1 2]: 45

Entre com o elemento A[1 3]: -45

Entre com o elemento A[1 4]: 7

Entre com o elemento A[2 1]: 12

Entre com o elemento A[2 2]: 6

Entre com o elemento A[2 3]: 97

Entre com o elemento A[2 4]: -34

Entre com o elemento A[3 1]: 82

Entre com o elemento A[3 2]: 56

Entre com o elemento A[3 3]: -67

Entre com o elemento A[3 4]: 23

Entre com o elemento A[4 1]: 7

Entre com o elemento A[4 2]: 89

Entre com o elemento A[4 3]: 5

Entre com o elemento A[4 4]: 1

 

9 45 -45 7

12 6 97 -34

82 56 -67 23

7 89 5 1

 

A soma dos elementos pares e = 6.000000

deseja entrar com uma nova matriz? (1=sim 0= nao) 1

 

Entre com o elemento A[1 1]: 94

Entre com o elemento A[1 2]: 667

Entre com o elemento A[1 3]: -34

Entre com o elemento A[1 4]: 67

Entre com o elemento A[2 1]: 56

Entre com o elemento A[2 2]: 213

Entre com o elemento A[2 3]: -342

Entre com o elemento A[2 4]: 7

Entre com o elemento A[3 1]: 2

Entre com o elemento A[3 2]: 4

Entre com o elemento A[3 3]: -67

Entre com o elemento A[3 4]: 86

Entre com o elemento A[4 1]: 13

Entre com o elemento A[4 2]: 78

Entre com o elemento A[4 3]: 56

Entre com o elemento A[4 4]: 235

 

94 667 -34 67

56 213 -342 7

2 4 -67 86

13 78 56 235

 

A soma dos elementos pares e = 94.000000

deseja entrar com uma nova matriz? (1=sim 0= nao) 1

Entre com o elemento A[1 1]: -36

Entre com o elemento A[1 2]: 59

Entre com o elemento A[1 3]: 87

Entre com o elemento A[1 4]: 345

Entre com o elemento A[2 1]: 23

Entre com o elemento A[2 2]: -68

Entre com o elemento A[2 3]: 345

Entre com o elemento A[2 4]: 283

Entre com o elemento A[3 1]: 67

Entre com o elemento A[3 2]: 123

Entre com o elemento A[3 3]: -90

Entre com o elemento A[3 4]: 48

Entre com o elemento A[4 1]: 28

Entre com o elemento A[4 2]: 34

Entre com o elemento A[4 3]: 76

Entre com o elemento A[4 4]: -12

 

-36 59 87 345

23 -68 345 283

67 123 -90 48

28 34 76 -12

 

A soma dos elementos pares e = -206.000000

deseja entrar com uma nova matriz? (1=sim 0= nao) 0

 

Apresentar o somatório dos elementos pares situados na diagonal principal da referida matriz

 

printf("%0.d\t",matD);

 

Se você vai imprimir só os indices,pra que referenciar o elemento na matriz? é só imprimir os INDICES (i e j).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.