#include #include #include void readMatrix(int matrix[4]); void writeInt(int i); void writeChar(char c); int fun_1(int n_tot, int t); int fun_2(int n_tot, int t); int fun_3(int n_tot, int t); int fun_4(int n_tot, int t); void function(int n, int result[n], int t, int rule, int quorum); int contaPari(int i); int contaDispari(int i); int main(){ FILE *fptOut; fptOut=fopen("./output.txt", "w"); fprintf(fptOut, ""); fclose(fptOut); /////////// int matrix[4]; readMatrix(matrix); /////////// //printf("%d", fun(matrix[2], matrix[0], matrix[1])); //printf("%d", fun(matrix[2]-1, matrix[0], matrix[1]-fun(matrix[2], matrix[0], matrix[1]))); int result[matrix[0]]; function(matrix[0], result, matrix[1], matrix[2], matrix[2]); } void readMatrix(int matrix[4]){ FILE *fp; fp=fopen("./input.txt", "r"); char * line = NULL; size_t len = 0; ssize_t read; //controllo che il file esista e che si sia aperto if (fp == NULL){ printf("Il file non รจ stato trovato"); return; } int i=0, j=0; read = getline(&line, &len, fp); //leggo una linea e la salvo in line char *token; char * pch; pch = strtok (line," "); while (pch != NULL && pch[0]!='\n'){ matrix[j]=-1; matrix[j]=atoi(pch); pch = strtok (NULL, " "); j++; } fclose(fp); } void writeInt(int i){ FILE *fptOut; fptOut=fopen("...", "w"); fprintf(fptOut, "%d", i); fclose(fptOut); } void writeChar(char c){ FILE *fptOut; fptOut=fopen("...", "w"); fprintf(fptOut, "%c", c); fclose(fptOut); } int fun_1(int n_tot, int t){ //rule1 if(n_tot%2!=0) return t-contaDispari(n_tot-1); else return t-contaPari(n_tot-1); } int fun_2(int n_tot, int t){ //rule2 if(n_tot%2!=0) return t-contaPari(n_tot-1); else return t-contaPari(n_tot-1); } int fun_3(int n_tot, int t){ //rule3 if(n_tot%2!=0) return t-contaDispari(n_tot-1); else return t-contaDispari(n_tot-1); } int fun_4(int n_tot, int t){ //rule4 return fun_2(n_tot, t); } int contaDispari(int i){ if (i<=1) return 0; else if (i%2) return 0+contaDispari(i-1); else return 1+contaDispari(i-1); } int contaPari(int i){ if (i<=1) return 0; else if (i%2) return 1+contaPari(i-1); else return 0+contaPari(i-1); } void function(int n, int result[n], int t, int rule, int quorum){ int i=0, new_t=t, quorum_rimasto=quorum; for(i=n; i>0; i--){ if(rule==1) result[i]=fun_1(i, new_t); if(rule==2) result[i]=fun_2(i, new_t); if(rule==3) result[i]=fun_3(i, new_t); if(rule==4){ if(fun_4(i, new_t)>0) quorum_rimasto--; result[i]=fun_4(i, new_t); } //printf("-%d-", result[i]); char * line = ""; size_t len = 0; FILE *fp; fp=fopen("./output.txt", "r"); getline(&line, &len, fp); FILE *fptOut; fptOut=fopen("./output.txt", "w"); fprintf(fptOut, "%d %s", result[i], line); fclose(fptOut); new_t-=result[i]; } if(rule==4 && quorum_rimasto<0){ FILE *fptOut; fptOut=fopen("./output.txt", "w"); fprintf(fptOut, "%d", t); fclose(fptOut); new_t-=result[i]; int i=0; for(i=0; i