Highest marks in a particular subject using structure ....

#include<stdio.h>
#include<conio.h>

struct Student
{
       int roll;
       char name[25];
       char addr[25];
       int mark[5];
       int total;
       float avg;
       char grad;
       };
     
void getVal(struct Student [],int);
void printDetail(struct Student [],int);
int checkSubHighest(struct Student [],int,int);


int main()
{
     struct Student std[50];
     int m,t,i,p;
   
     printf("\nEnter the number of students :");
     scanf("%d",&m);
     printf("\nEnter the student details : ");
   
     getVal(std,m);
   
   
     printf("\nStudent details : ");
     for(i=0;i<m;i++)
     {
      printf("\n\n\n=================================================");            
      printDetail(std,i);
      printf("\n=================================================");
      }
   
 
printf("\nEnter the subject number for which u want to find out the highest marks holder : ");
scanf("%d",&p);
t=checkSubHighest(std,m,p);


 printf("\nHighest Marks holder is : ");
printDetail(std,t);


     system("pause");
 }


void getVal(struct Student st[],int p)
{
     int i,j,s;
     for(i=0;i<p;i++)
     {
     printf("\nEnter the roll number: ");
     scanf("%d",&st[i].roll);
     fflush(stdin);
     printf("\nEnter the name : ");
     gets(st[i].name);
     fflush(stdin);
     printf("\nEnter the address : ");
     gets(st[i].addr);
     printf("\nEnter the marks for 5 subjects : ");
     s=0;
     for(j=0;j<5;j++)
     {
                     printf("\nEnter subject %d :",j+1);
                     scanf("%d",&st[i].mark[j]);
         s=s+st[i].mark[j];          
     }
     st[i].total=s;
     st[i].avg=s/5;
     if(st[i].avg>=90)
        st[i].grad='O';
     else if(st[i].avg>=80)
        st[i].grad='E';
     else if(st[i].avg>=70)
        st[i].grad='A';
     else if(st[i].avg>=60)
        st[i].grad='B';
     else if(st[i].avg>=50)
        st[i].grad='C';
     else if(st[i].avg>=40)
        st[i].grad='D';
     else
        st[i].grad='F';
 }
}


void printDetail(struct Student st[],int j)
{
     printf("\nRoll Number : %d",st[j].roll);
     printf("\nName         : ");
     puts(st[j].name);
     printf("\nAddress      : ");
     puts(st[j].addr);
     printf("\nTotal        : %d",st[j].total);
     printf("\nGrade        : %c\n",st[j].grad);
 }


int checkSubHighest(struct Student st[],int p,int t)
{
    int max,i,m=0;
 
    max=st[0].mark[t];
 
    for(i=1;i<p;i++)
    {
                    if(st[i].mark[t]>max)
                    {
                    max=st[i].mark[t];
                    m=i;
                    }
                    }
                    return m;
 
}

I/O :  It will take details of several students and find out the detail of the student got highest marks in particular subject .........

Comments

Popular posts from this blog

JAVA program to add two distance

Print Pattern using C