#include #include #include typedef struct { char* name; int vote; } SUBJECT; SUBJECT* subjects; int subjectsn; char* getFilename(void) { static char* r; int n = 0; char fn[80]; while (1) { sprintf(fn, "report%i.rpt", n); FILE* f = fopen(fn, "r"); if (!f) { sprintf(fn, "report%i", n); r = (char*) malloc(strlen((char*) &fn)); strcpy(r, (char*) &fn); return r; } n++; } } int main(void) { subjectsn = 0; printf("Calcolatore media pagella\n"); printf("\nInserisci ogni materia e ogni voto, se hai finito scrivi \"ok\" nel nome materia.\n"); while (1) { char name[80]; int vote; printf("\n_____________________________\n\n"); printf("Nome materia: "); scanf("%s", (char*) &name); if (strcmp(name, "ok") == 0) break; printf("Voto: "); scanf("%i", &vote); printf("\nAggiungo... "); subjects = (SUBJECT*) realloc(subjects, (subjectsn + 1) * sizeof(SUBJECT)); subjects[subjectsn].name = (char*) malloc(strlen((char*) &name)); strcpy(subjects[subjectsn].name, (char*) &name); subjects[subjectsn].vote = vote; subjectsn++; printf("OK\n"); } printf("_____________________________\n"); printf("\nTerminata aggiunta, creo il report...\n"); int sum = 0; int i; for (i = 0; i < subjectsn; i++) sum += subjects[i].vote; float aver; aver = (float)((float)sum / (float)subjectsn); printf("\nReport:"); printf("\n_____________________________\n"); for (i = 0; i < subjectsn; i++) printf("\n%s\n\t%i\n", subjects[i].name, subjects[i].vote); printf("_____________________________\n"); printf("\nMedia:\n\t%f\n", aver); printf("_____________________________\n\n"); printf("Salvataggio report... "); char* of = getFilename(); char* filename = (char*) malloc(strlen(of) + strlen(".rpt")); strcpy(filename, of); strcat(filename, ".rpt"); FILE* f = fopen(filename, "w+"); fprintf(f, "Report voti materie e media aritmetica :: Calcolatore media pagella\n\n"); fprintf(f, "\nReport:"); fprintf(f, "\n_____________________________\n\n"); for (i = 0; i < subjectsn; i++) fprintf(f, "%s\n\t%i\n\n", subjects[i].name, subjects[i].vote); fprintf(f, "_____________________________\n"); fprintf(f, "\nMedia:\n\t%f\n", aver); fprintf(f, "_____________________________\n\n"); fclose(f); printf("OK\n"); printf("Salvataggio file dati... "); filename = (char*) malloc(strlen(of) + strlen(".dat")); strcpy(filename, of); strcat(filename, ".dat"); f = fopen(filename, "wb"); fputc(0xAF, f); for (i = 0; i < subjectsn; i++) { fputc(0xBC, f); fprintf(f, "%s", subjects[i].name); fputc(0xCD, f); fputc(subjects[i].vote, f); fputc(0xDE, f); } fputc(0xEF, f); printf("OK\n"); printf("_____________________________\n\n"); printf("Grazie per l'utilizzo! by Gi@cky98\n"); printf("_____________________________\n"); }