Please I want to get the second and the third lowest grade in this C program . _
ID: 3696130 • Letter: P
Question
Please I want to get the second and the third lowest grade in this C program .
_________________________________________________________________________________
#include <stdio.h>
#define m 9
#define n 9
double avg(int a[], int b[]);
void find(int a[],int b[]);
void above(int a[], int b[] , double avg);
int highest(int b[]);
int lowest(int b[]);
int second_highest(int b[]);
int third_highest(int b[]);
int second_lowest(int b[]);
int third_lowes(int b[]);
int main (void)
{
int arr_id[m] , big , arr_grades[n], v , u , w , l , s , t , i;
double ans;
printf("The students ID and thier grades :-");
for (i = 0 ; i < m ;i++)
scanf("%d%d", &arr_id[i] , &arr_grades[i]);
ans = avg(arr_id,arr_grades);
printf(" the avrage = %.2f",ans);
for (i = 0 ; i < m ; i++)
find(arr_id,arr_grades);
above(arr_id,arr_grades,ans);
u = highest(arr_grades);
printf(" The frist highest = %d",u);
v = second_highest(arr_grades);
printf(" The second highest = %d",v);
l = third_highest(arr_grades);
printf(" The third highest = %d",l);
s = second_lowest(arr_grades);
printf(" The second lowest = %d",s);
t = third_lowes(arr_grades);
printf(" The third lowest = %d",t);
printf(" The highest = %d",u);
w = lowest(arr_grades);
printf(" The lowest = %d",w);
return 0;
}
double avg(int a[],int b[]){
int i,score=0;;
double avgrage;
for(i = 0 ; i < m ; i++)
printf(" ID = %d Grade = %d", a[i] , b[i]);
for(i = 0; i < m ; i++)
score += b[i];
avgrage = score / m;
return (avgrage);
}
void find(int a[],int b[]){
int ID , i;
printf(" Enter The ID to get the grade :");
for(i = 0 ; i < m ; i++){
scanf("%d",&ID);
for(i = 0 ; i < m ; i++){
if(a[i] == ID)
printf("the grade is : %d",b[i]);
}
}
}
void above( int a[] ,int b[] , double avg){
int i ;
printf(" the grades above avrage = ");
for(i = 0; i < m ; i++ ){
if( b[i] > avg)
printf("grade = %d ID =%d ",b[i],a[i]);
}
}
int highest(int b[]){
int big , i;
big = b[0];
for(i=1;i<m;i++){
if(big < b[i])
big=b[i];
}
return (big);
}
int lowest(int b[]){
int small , i;
small = b[0];
for(i=1;i<m;i++){
if(small > b[i])
small=b[i];
}
return (small);
}
int second_highest(int b[])//the second highest grade
{
int u = highest(b);
int sec , i;
sec = b[0];
for(i=1;i<m;i++){
if(sec < b[i] && u > b[i])
sec=b[i];
}
return (sec);
}
int third_highest(int b[])//the third highest grade
{
int thr,u,v,i;
u = highest(b);
v = second_highest(b);
thr = b[0];
for(i=1;i<m;i++){
if(thr < b[i] && u>b[i] && v>b[i])
thr=b[i];
}
return thr;
}
Explanation / Answer
#include <stdio.h>
#define m 4
#define n 4
double avg(int a[], int b[]);
void find(int a[],int b[]);
void above(int a[], int b[] , double avg);
int highest(int b[]);
int lowest(int b[]);
int second_highest(int b[]);
int third_highest(int b[]);
int second_lowest(int b[]);
int third_lowes(int b[]);
int main (void)
{
int arr_id[m] , big , arr_grades[n], v , u , w , l , s , t , i;
double ans;
printf("The students ID and thier grades :-");
for (i = 0 ; i < m ;i++)
scanf("%d%d", &arr_id[i] , &arr_grades[i]);
ans = avg(arr_id,arr_grades);
printf(" the avrage = %.2f",ans);
for (i = 0 ; i < m ; i++)
find(arr_id,arr_grades);
above(arr_id,arr_grades,ans);
u = highest(arr_grades);
printf(" The frist highest = %d",u);
v = second_highest(arr_grades);
printf(" The second highest = %d",v);
l = third_highest(arr_grades);
printf(" The third highest = %d",l);
s = second_lowest(arr_grades);
printf(" The second lowest = %d",s);
t = third_lowes(arr_grades);
printf(" The third lowest = %d",t);
printf(" The highest = %d",u);
w = lowest(arr_grades);
printf(" The lowest = %d",w);
return 0;
}
double avg(int a[],int b[]){
int i,score=0;;
double avgrage;
for(i = 0 ; i < m ; i++)
printf(" ID = %d Grade = %d", a[i] , b[i]);
for(i = 0; i < m ; i++)
score += b[i];
avgrage = score / m;
return (avgrage);
}
void find(int a[],int b[]){
int ID , i;
printf(" Enter The ID to get the grade :");
for(i = 0 ; i < m ; i++){
scanf("%d",&ID);
for(i = 0 ; i < m ; i++){
if(a[i] == ID)
printf("the grade is : %d",b[i]);
}
}
}
void above( int a[] ,int b[] , double avg){
int i ;
printf(" the grades above avrage = ");
for(i = 0; i < m ; i++ ){
if( b[i] > avg)
printf("grade = %d ID =%d ",b[i],a[i]);
}
}
int highest(int b[]){
int big , i;
big = b[0];
for(i=1;i<m;i++){
if(big < b[i])
big=b[i];
}
return (big);
}
int lowest(int b[]){
int small , i;
small = b[0];
for(i=1;i<m;i++){
if(small > b[i])
small=b[i];
}
return (small);
}
int second_highest(int b[])//the second highest grade
{
int u = highest(b);
int sec , i;
sec = b[0];
for(i=1;i<m;i++){
if(sec < b[i] && u > b[i])
sec=b[i];
}
return (sec);
}
int third_highest(int b[])//the third highest grade
{
int thr,u,v,i;
u = highest(b);
v = second_highest(b);
thr = b[0];
for(i=1;i<m;i++){
if(thr < b[i] && u>b[i] && v>b[i])
thr=b[i];
}
return thr;
}
int second_lowest(int b[])
{
int small,ssmall , i,k;
small = b[0];
for(i=1;i<m;i++){
if(small > b[i]){
small=b[i];
}
}
for(k=0;k<m;k++)
if(b[k]==small)
b[k]=999;
//b[k]=999;
ssmall=b[0];
for(i=1;i<m;i++){
if(ssmall > b[i]){
ssmall=b[i];
}
}
//printf("second small = %d",ssmall);
return (ssmall);
}
int third_lowes(int b[])
{
int small,ssmall,tsmall , i,k;
ssmall=b[0];
for(i=1;i<m;i++){
if(ssmall > b[i]){
ssmall=b[i];
}
}
for(k=0;k<m;k++)
if(b[k]==ssmall)
b[k]=999;
tsmall=b[0];
for(i=1;i<m;i++){
if(tsmall > b[i]){
tsmall=b[i];
}
}
printf(" array elements ");
for(i=1;i<m;i++)
printf("%d ",b[i]);
//printf("second small = %d",ssmall);
return (tsmall);
}