C Program to Sort array of Structure

Problem Statement : C Program to sort array of Structure in C Programming

Write a C program to accept records of the different states using array of structures. The structure should contain char state, population, literacy rate, and income. Display the state whose literacy rate is highest and whose income is highest.

Problem to display the highest literate rate and the highest income of a state using array of structures

#include<stdio.h>
#define M 50
struct state
{
    char name[50];
    long int population;
    float literacyRate;
    float income;
}st[M];     /* array of structure */
int main()
{
int i,n,ml,mi,maximumLiteracyRate, maximumIncome;
float rate;
ml = mi =-1;
maximumLiteracyRate = maximumIncome = 0;

printf("Enter how many states:");
scanf("%d",&n);
for(i=0;i<n;i++)
  {
    printf("\nEnter state %d details :",i);
    printf("\n\nEnter state name : ");
    scanf("%s",&st[i].name);
    printf("\nEnter total population : ");
    scanf("%ld",&st[i].population);
    printf("\nEnter total literary rate : ");
    scanf("%f",&rate);
    st[i].literacyRate = rate;
    printf("\nEnter total income : ");
    scanf("%f",&st[i].income);
  }
for(i=0;i<n;i++)
{
    if(st[i].literacyRate >= maximumLiteracyRate)
        {
        maximumLiteracyRate = st[i].literacyRate;
        ml++;
        }
    if(st[i].income > maximumIncome)
        {
        maximumIncome = st[i].income;
        mi++;
        }
}
printf("\nState with highest literary rate :%s",st[ml].name);
printf("\nState with highest income :%s",st[mi].name);
return(0);
}

Output :

Enter how many states:3

Enter state 0 details :

Enter state name : Maharashtra

Enter total population : 1000

Enter total literary rate : 90

Enter total income : 10000

Enter state 1 details :

Enter state name : Goa

Enter total population : 300

Enter total literary rate : 94

Enter total income : 5000

Enter state 2 details :

Enter state name : Gujrat

Enter total population : 900

Enter total literary rate : 78

Enter total income : 7000

The state whose literary rate is the highest : Goa
The state whose income is the highest : Maharashtra

Explanation of Program :

Firstly accept total number of states so that we can accept all the details using the for loop.

for(i=0;i<n;i++)
  {
    printf("nEnter state %d details :",i);
    printf("nnEnter state name : ");
    scanf("%s",&st[i].name);
    printf("nEnter total population : ");
    scanf("%ld",&st[i].population);
    printf("nEnter total literary rate : ");
    scanf("%f",&rate);
    st[i].literacyRate = rate;
    printf("nEnter total income : ");
    scanf("%f",&st[i].income);
  }

Now we are checking for the maximum value.

if(st[i].literacyRate >= maximumLiteracyRate)
        {
        maximumLiteracyRate = st[i].literacyRate;
        ml++;
        }

Inside the for loop we are checking the the literacy value with the maximum value.If current literacy rate is greater than the current maximum value then we are modifying the current maximum value.