fork(1) download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int lin, col, i, j, realizacoes, camada=0, camadasTotal;
  5. scanf("%i %i", &lin, &col);
  6. int mat[lin][col];
  7.  
  8. //ajusta as linhas
  9. if (lin%2 == 0) {
  10. camadasTotal = lin/2;
  11. } else {
  12. camadasTotal = lin/2 + 1;
  13. }
  14.  
  15. for (camada=0; camada < camadasTotal; camada++) {
  16. i=camada; //parte de cima da matriz
  17. for (realizacoes=0; realizacoes<2; realizacoes++) {
  18. j=camada;
  19. for (j=camada; j < col-camada; j++) {
  20. mat[i][j] = camada+1;
  21. }
  22. i=lin-1-camada; //parte de baixo da matriz
  23. }
  24. }
  25.  
  26. //ajusta as colunas
  27. if (col%2 == 0) {
  28. camadasTotal = col/2;
  29. } else {
  30. camadasTotal = col/2 + 1;
  31. }
  32.  
  33. for (camada=0; camada < camadasTotal; camada++) {
  34. j=camada; //parte da esquerda da matriz
  35. for (realizacoes=0; realizacoes<2; realizacoes++) {
  36. i=camada;
  37. for (i=camada; i < lin-camada; i++) {
  38. mat[i][j] = camada+1;
  39. }
  40. j=col-1-camada; //parte da direita da matriz
  41. }
  42. }
  43.  
  44. //mostra a matriz
  45. for (i=0; i < lin; i++) {
  46. for (j=0; j < col; j++) {
  47. printf("%i ", mat[i][j]);
  48. }
  49. printf("\n");
  50. }
  51.  
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0s 9432KB
stdin
11 10
stdout
1 1 1 1 1 1 1 1 1 1 
1 2 2 2 2 2 2 2 2 1 
1 2 3 3 3 3 3 3 2 1 
1 2 3 4 4 4 4 3 2 1 
1 2 3 4 5 5 4 3 2 1 
1 2 3 4 5 5 4 3 2 1 
1 2 3 4 5 5 4 3 2 1 
1 2 3 4 4 4 4 3 2 1 
1 2 3 3 3 3 3 3 2 1 
1 2 2 2 2 2 2 2 2 1 
1 1 1 1 1 1 1 1 1 1