int main(int argc, char *argv[]) { int EXAMS_TOTAL = 2; FILE * fin = NULL; char * name = NULL; double weightedAvg, gpa; int assignmentsTotal, labsTotal, quizzesTotal; int * assignments = NULL, *labs = NULL, *quizzes = NULL, exams[EXAMS_TOTAL], finalExam; double assignmentsPercentage, labsPercentage, quizzesPercentage, examsPercentage, finalPercentage; if(argc == 2) fin = openFileNoPrompt(argv[1]); do { if(fin == NULL) fin = openFilePrompt(); name = readName(fin); assignments = createAndFillArray(&assignmentsTotal, fin); labs = createAndFillArray(&labsTotal, fin); quizzes = createAndFillArray(&quizzesTotal, fin); fillArray(exams, fin); finalExam = readFinalScore(fin); fclose(fin); fin = NULL; assignmentsPercentage = calculatePercentage(assignments, assignmentsTotal, 100, .25); labsPercentage = calculatePercentage(labs, labsTotal, 50, .20); quizzesPercentage = calculatePercentage(quizzes, quizzesTotal, 25, .05); examsPercentage = calculatePercentage(exams, EXAMS_TOTAL, 100, .30); finalPercentage = calculatePercentage(&finalExam, 1, 200, .20); displayCategoryPercentage(assignmentsPercentage, labsPercentage, quizzesPercentage, examsPercentage, finalPercentage); weightedAvg = calcWeightedAvg(assignmentsPercentage, labsPercentage, quizzesPercentage, examsPercentage, finalPercentage); gpa = calcGPA(weightedAvg); displayGrade(name, weightedAvg, gpa); clean(name); cleanUp(assignments); cleanUp(labs); cleanUp(quizzes); assignments = labs = quizzes = NULL; name = NULL; }while(goAgain()); return 0; }// end main
/** * This function prints the L2 cache stats */ void printCacheStats(profile_cache* pc) { double miss_rate, extmiss_rate; int i,j; miss_rate = (double)(pc->num_misses)/(double)(pc->num_hits + pc->num_misses); extmiss_rate = (double)(pc->extnum_misses)/(double)(pc->extnum_hits + pc->extnum_misses); calcWeightedAvg(pc); char cseq_outfile_whole[256]; strcpy(cseq_outfile_whole,pc->cseq_outfile_set); strcat(cseq_outfile_whole,"_whole.csq"); pc->Fp = fopen(cseq_outfile_whole,"w"); for (j = 0; j < pc->cseqrows; j++) { for (i = 0; i < pc->dmax; i++) { fprintf(pc->Fp, "%d ",pc->cseqtable[j][i]); } fprintf(pc->Fp, "\n"); } fclose(pc->Fp); //Print to screen /* printf("\n********** EXT NEW CACHE STATS (L2) ******** \n"); printf("\nNumber of sets in cache: %d", nsets); printf("\nAssociativity of cache: %d", nassoc); printf("\nScaling factor: %d\n",SCALING_FACTOR); printf("\bBlock size: %d",nbsize); printf("\nNumber of misses: %d", extnum_misses); printf("\nNumber of hits: %d", extnum_hits); printf("\nNumber of cache accesses: %d", extnum_hits + extnum_misses); printf("\nCache miss rate: %f \n" , extmiss_rate); printf("Cache contents \n"); for (j = 0; j < 10; j++) { for (i = 0; i < nassoc; i++) { printf("%d:%d ",cache[j][i].tag,cache[j][i].count); } printf("\n"); } printf("extCache contents \n"); for (j = 0; j < 10; j++) { for (i = 0; i < dmax; i++) { printf("%d:%d ",extcache[j][i].tag,extcache[j][i].count); } printf("\n"); } */ //print cseq to file strcat(pc->cseq_outfile_set,".csq"); pc->Fp = fopen(pc->cseq_outfile_set, "w"); fprintf(pc->Fp,"#sets %d\n", pc->nsets); fprintf(pc->Fp,"#assoc %d\n", pc->nassoc); fprintf(pc->Fp,"#scaling_factor %d\n",SCALING_FACTOR); fprintf(pc->Fp,"#block_size %d\n",pc->nbsize); fprintf(pc->Fp,"\n#cseq\n"); for (i = 0; i < pc->dmax; i++){ fprintf(pc->Fp,"%.1f ",pc->weightedAvg[i]); } fprintf(pc->Fp,"\n\n#stackDist\n"); for (i = 0; i < pc->dmax+1; i++){ fprintf(pc->Fp,"%d ",pc->stackDist[i]); } fclose(pc->Fp); if(trace_outfile!=NULL) fclose(TF); }