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
Пример #2
0
/**
  * 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);
	
}