I am doing an assignment. I have done the code but when I look back, I found that I have missed the one entering the score into valid and invalid stack.
So have I tried to modify the code but the modified code will compile but not run. I don't know why. Can someone help me. Thanks a lot.
/*
Question 1
This program uses an array applications.
*/
#include<stdio.h>
#include<stdlib.h>
//declare struct node as STK
struct node
{
int top;
int element[100];
};
struct node *valid,*invalid;//declare two stack for valid score and invalid score
int main()
{
valid->top=-1;//create empty stack for valid score
invalid->top=-1;
int size, score[size]; //variables for array purposes
int tempMin=100, tempMax=0; //variables for lowest and highest marks
int i,total=0,validCounter=0,invalidCounter=0,countH1=0,countH2=0,countH3=0,countH4=0,countH5=0; //variables for counting purposes
float average; //variable for average
printf ("STUDENTS MARK ENTERING SESSION\n");
printf ("Enter total number of student: ");
scanf ("%d", &size);
printf("\n");
/*Get Marks form User*/
printf ("Enter MID-SEMESTER Test Score:\n");
for (i=0;i<size;i++)
{
printf("Test Score #%d: ",i+1);
scanf ("%d",&score[i]);
if((score[i]<0) ||(score[i]>100))
printf("Error:Invalid score entered!\n");
}
printf ("\nThe MID-SEMESTER Test Score");
for (i=0;i<size;i++)
{
if ((score[i]>=0) && (score[i]<=100))
{
valid->element[++valid->top]=score[i];//write the score into valid stack
printf("%d ",score[i]);
total+=score[i];
validCounter=validCounter+1;
if (score[i]<=tempMin)
{
tempMin=score[i];
}
if (score[i]>=tempMax)
{
tempMax=score[i];
}
}
}
/*Print Valid Score*/
printf ("\n\nValid score: ");
if(valid->top==-1)
printf("Empty valid score stack");
else
{
for(i=valid->top;i>=0;i--)
printf("%d\t",valid->element[i]);
printf("\n");
}
for (i=0;i<size;i++)
{
if ((score[i]<0) || (score[i]>100))
{
invalid->element[++invalid->top]=score[i];//write the score into invalid stack
printf("%d ",score[i]);
invalidCounter=invalidCounter+1;
}
}
/*Print Invalid Score*/
printf ("\nInvalid score: ");
if(invalid->top==-1)
printf("Empty invalid score stack");
else
{
for(i=invalid->top;i>=0;i--)
printf("%d\t",invalid->element[i]);
printf("\n");
}
/*Print Average Score*/
average=total/validCounter;
printf("\nAverage score: %.2f", average);
/*Print Lowest Score*/
printf ("\nLowest score: %d", tempMin);
/*Print Highest Score*/
printf ("\nHighest score: %d", tempMax);
/*Print Histogram*/
for (i=0;i<size;i++)
{
if ((score[i]>=80) && (score[i]<=100))
{
countH1=countH1+1;
}
else if ((score[i]>=60) && (score[i]<=79))
{
countH2=countH2+1;
}
else if ((score[i]>=50) && (score[i]<=59))
{
countH3=countH3+1;
}
else if ((score[i]>=30) && (score[i]<=49))
{
countH4=countH4+1;
}
else if ((score[i]>=0) && (score[i]<=29))
{
countH5=countH5+1;
}
}
printf ("\nHistogram: ");
printf ("\n\t[80-100]: %d", countH1);
printf ("\n\t[60-79]: %d", countH2);
printf ("\n\t[50-59]: %d", countH3);
printf ("\n\t[30-49]: %d", countH4);
printf ("\n\t[0-29]: %d", countH5);
/*Print Number of Invalid Score*/
printf("\nTotal number of invalid score: %d", invalidCounter);
}