fork(1) download
  1. #include <stdio.h>
  2.  
  3. void conv(int largura, int altura, int linha, int coluna, int original[altura][largura], int resultante[altura][largura]) {
  4. int i, j;
  5. if (linha >= altura - 2 || coluna >= largura - 2) return;
  6. for (i = linha; i < linha + 3; i++) {
  7. for (j = coluna; j < coluna + 3; j++) {
  8. resultante[i][j] = original[i][j] * original[i][j];
  9. }
  10. }
  11. }
  12.  
  13. void operar(int largura, int altura, int original[altura][largura], int resultante[altura][largura], void (*op)(int largura, int altura, int linha, int coluna, int original[largura][altura], int resultante[altura][largura])) {
  14. int i, j;
  15. for (i = 0; i < altura; i++) {
  16. for (j = 0; j < largura; j++) {
  17. op(largura, altura, i, j, original, resultante);
  18. }
  19. }
  20. }
  21.  
  22. void imprimir(int largura, int altura, int original[altura][largura]) {
  23. int i, j;
  24. for (i = 0; i < altura; i++) {
  25. for (j = 0; j < largura; j++) {
  26. printf("%5d ", original[i][j]);
  27. }
  28. printf("\n");
  29. }
  30. }
  31.  
  32. int main() {
  33. int entrada[5][5] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}};
  34. int saida[5][5];
  35. operar(5, 5, entrada, saida, conv);
  36. imprimir(5, 5, entrada);
  37. printf("\n");
  38. imprimir(5, 5, saida);
  39. }
Success #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
    1     2     3     4     5 
    6     7     8     9    10 
   11    12    13    14    15 
   16    17    18    19    20 
   21    22    23    24    25 

    1     4     9    16    25 
   36    49    64    81   100 
  121   144   169   196   225 
  256   289   324   361   400 
  441   484   529   576   625