fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct {
  6. int r;
  7. int g;
  8. int b;
  9. } pixel;
  10.  
  11. pixel imagem[2][2];
  12.  
  13. void filtro_negativo(pixel im[2][2], int alt, int larg, int max);
  14.  
  15. int main(void) {
  16.  
  17. imagem[0][0].r = 1; imagem[0][0].g = 1; imagem[0][0].b = 1;
  18. imagem[0][1].r = 2; imagem[0][1].g = 2; imagem[0][1].b = 2;
  19. imagem[1][0].r = 3; imagem[1][0].g = 3; imagem[1][0].b = 3;
  20. imagem[1][1].r = 4; imagem[1][1].g = 4; imagem[1][1].b = 4;
  21.  
  22. printf("Antes:\n");
  23. int i, j;
  24. for(i = 0; i < 2; i++) {
  25. for(j = 0; j < 2; j++) {
  26. printf("%d %d %d\n", imagem[i][j].r, imagem[i][j].g, imagem[i][j].b);
  27. }
  28. }
  29.  
  30. filtro_negativo(imagem, 2, 2, 4);
  31.  
  32. printf("Depois:\n");
  33. for(i = 0; i < 2; i++) {
  34. for(j = 0; j < 2; j++) {
  35. printf("%d %d %d\n", imagem[i][j].r, imagem[i][j].g, imagem[i][j].b);
  36. }
  37. }
  38.  
  39. printf("Depois (exibindo errado):\n");
  40. for(i = 0; i < 2; i++) {
  41. for(j = 0; j < 2; j++) {
  42. printf("%d %d %d\n", 4 - imagem[i][j].r, 4 - imagem[i][j].g, 4 - imagem[i][j].b);
  43. }
  44. }
  45.  
  46. return (EXIT_SUCCESS);
  47. }
  48.  
  49. void filtro_negativo(pixel im[2][2], int alt, int larg, int max) {
  50. int i, j;
  51.  
  52. for (i = 0; i < alt; i++) {
  53. for (j = 0; j < larg; j++) {
  54. im[i][j].r = max - im[i][j].r;
  55. im[i][j].g = max - im[i][j].g;
  56. im[i][j].b = max - im[i][j].b;
  57. }
  58. }
  59. }
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
Antes:
1 1 1
2 2 2
3 3 3
4 4 4
Depois:
3 3 3
2 2 2
1 1 1
0 0 0
Depois (exibindo errado):
1 1 1
2 2 2
3 3 3
4 4 4