/****************************************************************************** Online C Compiler. Code, Compile, Run and Debug C program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include #include struct RezultatSabiraca { int zbir; int prenos; }; int AND(int a, int b) { if (a == 0 || b == 0) { return 0; } else { return 1; } } struct RezultatSabiraca sabirac(int x, int y) { struct RezultatSabiraca rezultat; if (x == 0 && y == 0) { rezultat.zbir = 0; rezultat.prenos = 0; } else if (x == 0 && y == 1) { rezultat.zbir = 1; rezultat.prenos = 0; } else if (x == 1 && y == 0) { rezultat.zbir = 1; rezultat.prenos = 0; } else { rezultat.zbir = 0; rezultat.prenos = 1; } return rezultat; } struct RezultatSabiraca potpuni_sabirac(int x, int y, int p) { struct RezultatSabiraca rez; if (x == 0 && y == 0 && p == 0) { rez.zbir = 0; rez.prenos = 0; } else if (x == 0 && y == 0 && p == 1) { rez.zbir = 1; rez.prenos = 0; } else if (x == 0 && y == 1 && p == 0) { rez.zbir = 1; rez.prenos = 0; } else if (x == 0 && y == 1 && p == 1) { rez.zbir = 0; rez.prenos = 1; } else if (x == 1 && y == 0 && p == 0) { rez.zbir = 1; rez.prenos = 0; } else if (x == 1 && y == 0 && p == 1) { rez.zbir = 0; rez.prenos = 1; } else if (x == 1 && y == 1 && p == 0) { rez.zbir = 0; rez.prenos = 1; } else { rez.zbir = 1; rez.prenos = 1; } return rez; } int* paralelni_sabirac(int* x, int* y) { struct RezultatSabiraca temp; int* z = (int*) malloc (4*sizeof(int)); int i; int prenos = 0; for (i = 3; i >= 0; i--) { temp = potpuni_sabirac(x[i], y[i], prenos); z[i] = temp.zbir; prenos = temp.prenos; } if (prenos == 1) { return NULL; } else { return z; } } int main() { int i, j; int x[4]; x[0] = 0; x[1] = 0; x[2] = 0; x[3] = 0; for (i = 0; i < 4; i++) { printf("%d ", x[i]); } printf("\n"); int y[4]; y[0] = 0; y[1] = 0; y[2] = 0; y[3] = 1; for(i = 0; i < 16; i++) { int* z = paralelni_sabirac(x, y); for (j = 0; j < 4; j++) { printf("%d ", z[j]); x[j] = z[j]; } printf("\n"); } return 0; }