Ir para conteúdo

Arquivado

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

Patrick Kaz.

como gerar uma matriz

Recommended Posts

Pessoal preciso fazer um algoritmo que na hora de copilar apareça o seguinte resultado.

1 1 1 1 1 1

1 2 2 2 2 1

1 2 3 3 2 1

1 2 3 3 2 1

1 2 2 2 2 1

1 1 1 1 1 1

 

Só que para gerar estes números é necessário utilizar o laço for.

Da seguinte forma consegui gerar, mas como disse preciso que seja pelo laço for.

Preciso de algumas dicas de como fazer.

 

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

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um código hj à tarde. A princípio funciona p/ n >= 2.
Se precisar armazenar, troque o printf por uma atribuição, remova o puts e modifique os argumentos caso não queira usar variável global.

#include <stdio.h>
void build_matrix(int n) {
   int upper_limit, lower_limit;
   int line, column;
   int value;
   
   for(line=0; line < n; line++) {
     value=1;
     if (line < n/2) {
        upper_limit = (line)? line:0;
        lower_limit = (line)? n-line-2:n;
     } else {
      upper_limit = (line < n-1)? n-line-1:0;
      lower_limit = (line < n-1)? line-1:n;
     }
    
     for(column=0;column<n; column++) {
      printf("%d%c", value, (column <n-1)?' ':'\n');
        if (column < upper_limit) value++;
      else if (column > lower_limit) value--;
     }
   }
   puts("");
}
 
int main(void) {
   build_matrix(8);
   return 0;
}

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.