Ir para conteúdo
Fórum Script Brasil
  • 0

Matriz 6x6 em C


Maria Luiza Demarco

Pergunta

Opa sou novo aqui, estou com dúvida em um exercício no de linguagem C, pede-se o seguinte:

Matriz 6x6

Preencher a diagonal principal com os primeiros números da sequencia de fibonacci; 

Preencher a diagonal secundaria com os primeiros números primos;

Preencher o triangulo superior com os primeiros números pares( não deve sob-escrever a diagonal);

Preencher o triangulo inferir com primeiros numero impares (não deve sob-escrever a diagonal)

A estrutura dever ser da seguinte maneira:

 

#include <stdio.h>
int main()
{ 
int cont_par=2;
int matriz[6][6];
int cont_impar=1;
int cont_primo=2;
int cont_fibo=0;
int i, j;

//preenchendo com o valor 0;
for(i=0; i<6; ++i){
	for(j=0; j<6; ++j)
	{
		matriz[i][j]=0;				 
		}
		}
       

for(i=0; i<6; ++i){
	for(j=0; j<6; ++j)
	{
		if(i==j){
			matriz[i][j]=cont_fibo; //preenchendo a diagonal principal;
		 
}
 } if(i+j==7){                //preenchendo apenas a diagonal secundaria;
 matriz[i][j]=cont_primo;
					
	 
 } if(i<j){  //preenchendo o triagulo superior
 	if(matriz[i][j]==0){
	 matriz[i][j]=cont_par;
					cont_par = cont_par+2;}
	 
}

if(i>j){ //preenchendo o triagulo inferior/ 
if(matriz[i][j]==0){
matriz[i][j]=cont_impar;
					cont_impar+2;
	
}
}
}
}

for(i=0; i<6; ++i){
	for(j=0; j<6; ++j)
	{
printf("%d ", matriz[i][j]);
	}
printf("\n");
}


	
	return 0;
}

Não estou conseguindo gerar essa matriz, por favor alguém me ajuda?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ola @Maria Luiza Demarco, da uma olhada no código abaixo, espero ter ajudado, qualquer coisa da um grito, abraços 

#include <stdio.h>

#define SIZE 6

int fibo (int n)
{
	if (!n)
		return 0;
	
	if (n <= 2)
		return 1;
	
	return fibo (n-1) + fibo (n-2);
}

int ehPrimo (int n)
{
	int tmp = n;
	
	while (--n > 1)
		if ( !(tmp%n) )
			break;
		
	if (n == 1)
		return 1;
	
	return 0;
}

void mostraMatriz (int m[SIZE][SIZE])
{
	int i, j;
	
	for (i = 0; i < SIZE; i++)
	{
		for (j = 0; j < SIZE; j++)
			printf("%02d ", m[i][j]);
		printf("\n");
	}		
}

int main()
{
	int matriz[SIZE][SIZE] = {0};
	int i, j, k;
	int tmpPrimo = 1;

	//Diagonal principal
	for (i = 0; i < SIZE; i++)
		matriz[i][i] = fibo (i+1);
	
	//Diagonal secundaria
	for (i = SIZE-1, j = 0; i >= 0; i--)
	{
		//enquanto o primo temporario não for um numero primo, continue procurando pelo proximo primo
		while ( !(ehPrimo (++tmpPrimo)) )
			;
		
		matriz[j++][i] = tmpPrimo;
	}
	
	//Pares
	k = 2;
	for (i = 0; i < SIZE; i++)
		for (j = i; j < SIZE; j++)
			if (!matriz[i][j])
			{
				matriz[i][j] = k;
				
				k += 2;
			}

	//IMPARES
	k = 1;
	for (i = 0; i < SIZE; i++)
		for (j = 0; j <= i; j++)
			if (!matriz[i][j])
			{
				matriz[i][j] = k;
				
				k += 2;
			}
		
	mostraMatriz (matriz);
	
	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...