Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define S 3
- int inmultireScalar(int x)
- {
- return S * x;
- }
- int negativare(int x)
- {
- return -x;
- }
- int afisareElement(int x)
- {
- printf("%d ", x);
- return x;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include "procesari.h"
- // pointer la o functie de procesare a unui tablou
- // poate fi orice functie specificata in enunt
- // parametri: tabloul, nr de elemente, scalar (optional)
- typedef int (*ptrFunctieProcesare)(int);
- void procesareTablou(int* v, int n, ptrFunctieProcesare fProc)
- {
- int i;
- for (i = 0; i < n; ++i)
- {
- *(v + i) = fProc(*(v + i));
- }
- }
- int main() {
- int nrLinii = 3;
- int nrColoane = 4;
- int* tablou;
- int i, j;
- // alocam memorie (continua = implementare stricta)
- tablou = (int*)malloc(nrLinii * nrColoane * sizeof(int));
- for (i = 0; i < nrLinii; ++i)
- {
- tablou[i] = tablou[i - 1] + nrColoane;
- }
- // populam tabloul cu elemente
- for (i = 0; i < nrLinii; ++i)
- {
- for (j = 0; j < nrColoane; ++j)
- {
- tablou[i * nrColoane + j] = i + j;
- }
- }
- // afisam tabloul initial
- printf("Tabloul initial:\n");
- procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
- // inmultim elementele cu 3
- procesareTablou(tablou, nrLinii * nrColoane, inmultireScalar);
- // afisam din nou tabloul
- printf("\nTabloul dupa inmultirea cu 3:\n");
- procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
- // negativam tabloul
- procesareTablou(tablou, nrLinii * nrColoane, negativare);
- // il afisam iarasi
- printf("\nTabloul dupa negativare:\n");
- procesareTablou(tablou, nrLinii * nrColoane, afisareElement);
- // eliberare memorie
- free(tablou);
- return 0;
- }
- #ifndef PROCESARE_TABLOU_PROCESARI_C_H
- #define PROCESARE_TABLOU_PROCESARI_C_H
- int inmultireScalar(int x);
- int negativare(int x);
- int afisareElement(int x);
- #endif //PROCESARE_TABLOU_PROCESARI_C_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement