Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3.  
  4. #define S 3
  5.  
  6. int inmultireScalar(int x)
  7. {
  8. return S * x;
  9. }
  10.  
  11. int negativare(int x)
  12. {
  13. return -x;
  14. }
  15.  
  16. int afisareElement(int x)
  17. {
  18. printf("%d ", x);
  19. return x;
  20. }
  21.  
  22.  
  23. #include <stdio.h>
  24. #include <stdlib.h>
  25. #include "procesari.h"
  26.  
  27. // pointer la o functie de procesare a unui tablou
  28. // poate fi orice functie specificata in enunt
  29.  
  30. // parametri: tabloul, nr de elemente, scalar (optional)
  31. typedef int (*ptrFunctieProcesare)(int);
  32.  
  33. void procesareTablou(int* v, int n, ptrFunctieProcesare fProc)
  34. {
  35. int i;
  36. for (i = 0; i < n; ++i)
  37. {
  38. *(v + i) = fProc(*(v + i));
  39. }
  40. }
  41.  
  42. int main() {
  43. int nrLinii = 3;
  44. int nrColoane = 4;
  45. int* tablou;
  46. int i, j;
  47.  
  48. // alocam memorie (continua = implementare stricta)
  49. tablou = (int*)malloc(nrLinii * nrColoane * sizeof(int));
  50. for (i = 0; i < nrLinii; ++i)
  51. {
  52. tablou[i] = tablou[i - 1] + nrColoane;
  53. }
  54.  
  55. // populam tabloul cu elemente
  56. for (i = 0; i < nrLinii; ++i)
  57. {
  58. for (j = 0; j < nrColoane; ++j)
  59. {
  60. tablou[i * nrColoane + j] = i + j;
  61. }
  62. }
  63.  
  64. // afisam tabloul initial
  65. printf("Tabloul initial:\n");
  66. procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
  67.  
  68. // inmultim elementele cu 3
  69. procesareTablou(tablou, nrLinii * nrColoane, inmultireScalar);
  70.  
  71. // afisam din nou tabloul
  72. printf("\nTabloul dupa inmultirea cu 3:\n");
  73. procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
  74.  
  75. // negativam tabloul
  76. procesareTablou(tablou, nrLinii * nrColoane, negativare);
  77.  
  78. // il afisam iarasi
  79. printf("\nTabloul dupa negativare:\n");
  80. procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
  81.  
  82. // eliberare memorie
  83. free(tablou);
  84.  
  85. return 0;
  86. }
  87.  
  88.  
  89.  
  90. #ifndef PROCESARE_TABLOU_PROCESARI_C_H
  91. #define PROCESARE_TABLOU_PROCESARI_C_H
  92.  
  93. int inmultireScalar(int x);
  94. int negativare(int x);
  95. int afisareElement(int x);
  96.  
  97. #endif //PROCESARE_TABLOU_PROCESARI_C_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement