#include #define SOUBOR_VSTUP "formule.in" #define MAX_N 1000 typedef struct { int pravdivych; int celkem; } uzavorkovani; int operand[MAX_N]; char operace[MAX_N]; uzavorkovani podvyraz[MAX_N][MAX_N]; uzavorkovani spocti(int start, int konec) { uzavorkovani vysledek; if(start==konec) { vysledek.pravdivych=operand[start]; vysledek.celkem=1; return vysledek; } //jestliže jsme to již jednou spočetli, vrátíme z paměti else if(podvyraz[start][konec].celkem!=-1) return podvyraz[start][konec]; else { vysledek.pravdivych=0; vysledek.celkem=0; int i; for(i=start;iA a OR->O i++; } fclose(vstup); int pocet=i; //počet operandů //inicializace paměti pro podvýrazy int j; for(i=1;i<=pocet;i++) { for(j=1;j<=pocet;j++) podvyraz[i][j].celkem=-1; } printf("Uzavorkovani rovnych 1 je %d, rovnych 0 je %d", spocti(1,pocet).pravdivych, spocti(1,pocet).celkem-spocti(1,pocet).pravdivych); return 0; }