Ir ao conteúdo
  • Cadastre-se
Maria Luiza Demarco

C Matriz 6x6 FOR linguagem C

Recommended Posts

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?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Maria Luiza Demarco      você quer imprimir a matriz conforme foi pedido ou  é preciso usar vários for ?  

  se for só imprimir do jeito que foi pedido então só precisa de um for e seu código ficaria assim :

#include <stdio.h>
#include <conio.h>
#include <windows.h>
void gotoxy(int x,int y){
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
int main(){
    int i,j,l=5,c;
    int matriz[6][6]={
        {0 , 2, 4, 6, 8, 2},
        {-1, 1,10,12, 3,-1},
        {-1,-1, 1, 5,-1,-1},
        {-1,-1, 7, 2,-1,-1},
        {-1,11, 1, 3, 3,-1},
        {13, 5, 7, 9,11, 5}
    };
    for(i=0;i<6;i++){
        c=5;
        for(j=0;j<6;j++){
            gotoxy(c,l);
            if(matriz[i][j]!=-1){
                if(matriz[i][j]<10)printf(" %d",matriz[i][j]);
                else printf("%d",matriz[i][j]);
            }
            else
                printf(" -");
            c+=3;
        }
        l++;
    }
    getch();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 horas atrás, devair1010 disse:

 você quer imprimir a matriz conforme foi pedido ou  é preciso usar vários for ?

Certamente será preciso preencher a matriz automaticamente. Se não seria muito fácil isso não acha?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Maria Luiza Demarco Organizei e corrigi a estrutura do seu código:

#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;
            }
            else if (i + j == 5) { //preenchendo apenas a diagonal secundaria;
                matriz[i][j] = cont_primo;

            }
            else if (i < j) { //preenchendo o triagulo superior
                if (matriz[i][j] == 0) {
                    matriz[i][j] = cont_par;
                    cont_par = cont_par + 2;
                }

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

                }
            }
        }
    }

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

    return 0;
}

Basicamente tinha código fora do lugar, então coloquei os ifs dentro do segundo for, e excluí algumas chaves {} que estavam em excesso. Também usei "else if"s pra evitar que um sobrescreva outro. E no caso da diagonal secundária seriam as posições em que i + j == 5, não == 7, pois as posições de i e j vão de 0 a 5, ao invés de 1 a 6.

 

Ainda falta implementar os cálculos dos números primos e Fibonacci.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×