#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct {
char Full_Name[25];
int Birth_Year;
int Mark;
} student;
void Input(student *list, int N);
void Output(student *list, int N);
void per(student *std1, student *std2);
void Arr(student *list, int N);
void main()
{
int N;
student *list;
printf("Enter the number of students: "); list
= (student
*) malloc(sizeof(student
));
/* enter input data */
printf("\nEnter data of students:\n"); Input(list, N);
/* sorting the list in descending order of marks */
Arr(list, N);
/* print the list has been sorted with student's name in upper case */
printf("\nThe list has been sorted:\n"); Output(list, N);
}
void Input(student *list, int N)
{
int BY, M;
char FN[25];
for (int i = 0; i < N; ++i) {
strcpy(list
[i
].
Full_Name, FN
);
list[i].Birth_Year = BY;
list[i].Mark = M;
}
}
void Output(student *list, int N)
{
for (int i = 0; i < N; ++i) {
printf("Full Name: %s\n", strupr
(list
[i
].
Full_Name)); printf("Birth Year: %d\n", list
[i
].
Birth_Year); printf("Mark: %d\n", list
[i
].
Mark); }
}
void per(student *std1, student *std2)
{
student std_temp = *std1;
*std1 = *std2;
*std2 = std_temp;
}
void Arr(student *list, int N)
{
student std_temp;
for (int i = 0; i < N - 1; ++i)
for (int j = i + 1; j < N; ++j) {
if (list[j].Mark > list[i].Mark) {
per(&list[j], &list[i]);
} else {
if ((list[j].Mark == list[i].Mark && list[j].Birth_Year < list[i].Birth_Year))
per(&list[j], &list[i]);
}
}
}