0% found this document useful (0 votes)
60 views

#Include #Include #Include #Define SIZE 5

The document defines a structure called student to store information like ID, name, gender, age and GPA of students. It defines functions to print student details, calculate average GPA, determine gender, print an array of students and count male students. The main function declares student variables, calls the functions to work with the structures, sorts an array of students by ID, gender, age and GPA and prints the sorted arrays.

Uploaded by

mivri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

#Include #Include #Include #Define SIZE 5

The document defines a structure called student to store information like ID, name, gender, age and GPA of students. It defines functions to print student details, calculate average GPA, determine gender, print an array of students and count male students. The main function declares student variables, calls the functions to work with the structures, sorts an array of students by ID, gender, age and GPA and prints the sorted arrays.

Uploaded by

mivri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

/* *******************************************************

* Filename : structure_example.c
* Author : Burak Kaleci
* Date : 12.04.2017
* Description : An example program to use structures with functions
* ******************************************************/

#include<stdio.h>
#include <string.h>
#include <stdlib.h>

#define SIZE 5

// structure definition
struct student{

int idNumber;
char firstName[100];
char lastName[100];
char gender;
int age;
double GPA;
};

// function prototypes
void printStudent(struct student p);
double calculateAvgGPA(double s1,double s2);
void determineGender(char g, char* n);
void printStudentArray(struct student *pArray);
int countMaleStudent(struct student *pArray);

/* function main begins program execution each program must include main function */
int main(void)
{
//define student type variable and initialize it by using list
struct student aStudent={2037,"Burak","Kaleci",'M',32,3.55};

//define student type variable and initialize it by using dot operator


struct student aStudent2;
aStudent2.idNumber=1000;
//aStudent2.firstName="Ayse"; ERROR
//aStudent2.lastName="Yilmaz"; ERROR
strcpy(aStudent2.firstName,"Ayse");
strcpy(aStudent2.lastName,"Yilmaz");
aStudent2.gender='F';
aStudent2.age=18;
aStudent2.GPA=2.98;

// call function to print student structure type variable


// by passing an entire structure
printStudent(aStudent);
printStudent(aStudent2);

// you can use structure members individually


// call function to calculate average of two students by using GPA member
// by passing individual structure members
double GPAAvg=calculateAvgGPA(aStudent.GPA,aStudent2.GPA);
printf("Average of GPA of two student is %f\n\n",GPAAvg);
// call function to determine the gender of the student
// by passing individual structure members
determineGender(aStudent.gender,aStudent.firstName);
determineGender(aStudent2.gender,aStudent2.firstName);

// define student type array with 5 items


struct student studentArray[SIZE];
int i;

//assigning structure variables to structure variables of the same type is valid operat
studentArray[0]=aStudent;
studentArray[1]=aStudent2;

// initialize the array


for(i=2;i<SIZE;i++){
studentArray[i].idNumber=2000+i;
printf("Enter name and surname\n");
scanf("%s%s",studentArray[i].firstName,studentArray[i].lastName);
printf("Enter gender\n");
scanf("%s",&studentArray[i].gender);
studentArray[i].age=18+rand()%18;
printf("Enter GPA\n");
scanf("%lf",&studentArray[i].GPA);
}

// print the array


// by passing a pointer to a structure
printStudentArray(studentArray);

// call function to count number of male students


// by passing a pointer to a structure
printf("There are %d male student\n\n",countMaleStudent(studentArray));

// sort the array according to the member


// 1 for idnumber, 2 for gender, 3 for age, 4 for GPA
sortArray(studentArray,2);

// print the array


// by passing a pointer to a structure
printStudentArray(studentArray);

// sort the array according to the member


// 1 for idnumber, 2 for gender, 3 for age, 4 for GPA
sortArray(studentArray,4);

// print the array


// by passing a pointer to a structure
printStudentArray(studentArray);

return 0; // indicates successful termination


}

void printStudent(struct student p)


{
printf("%d\t",p.idNumber);
printf("%s\t",p.firstName);
printf("%s\t",p.lastName);
printf("%c\t",p.gender);
printf("%d\t",p.age);
printf("%lf\n\n",p.GPA);

double calculateAvgGPA(double s1,double s2)


{
return (s1+s2)/2;
}

void determineGender(char g, char* n)


{
if (g=='M')
printf("The student %s is a male\n",n);
else
printf("The student %s is a female\n",n);
}

void printStudentArray(struct student *pArray)


{
int i;
for(i=0;i<SIZE;i++){
printf("%d\t",pArray[i].idNumber);
printf("%s\t",pArray[i].firstName);
printf("%s\t",pArray[i].lastName);
printf("%c\t",pArray[i].gender);
printf("%d\t",pArray[i].age);
printf("%lf\n\n",pArray[i].GPA);

}
printf("----------------------------------------------------------------\n\n");
}

int countMaleStudent(struct student *pArray)


{
int i,countMale=0;
for(i=0;i<SIZE;i++){
if (pArray[i].gender=='M')
countMale++;
}
return countMale;
}

void sortArray(struct student *studentArray, int param)


{

int i,pass;

switch (param){

case 1:
for(pass=0;pass<SIZE-1;pass++){
for(i=0;i<SIZE-1;i++){
if(studentArray[i].idNumber>studentArray[i+1].idNumber) {

struct student hold = studentArray[i];


studentArray[i] = studentArray[i+1];
studentArray[i+1] = hold;

}
}
}
break;

case 2:

for(pass=0;pass<SIZE-1;pass++){
for(i=0;i<SIZE-1;i++){
if(studentArray[i].gender>studentArray[i+1].gender) {

struct student hold = studentArray[i];


studentArray[i] = studentArray[i+1];
studentArray[i+1] = hold;

}
}
}
break;

case 3:

for(pass=0;pass<SIZE-1;pass++){
for(i=0;i<SIZE-1;i++){
if(studentArray[i].age>studentArray[i+1].age) {

struct student hold = studentArray[i];


studentArray[i] = studentArray[i+1];
studentArray[i+1] = hold;

}
}
}
break;

case 4:

for(pass=0;pass<SIZE-1;pass++){
for(i=0;i<SIZE-1;i++){
if(studentArray[i].GPA>studentArray[i+1].GPA) {

struct student hold = studentArray[i];


studentArray[i] = studentArray[i+1];
studentArray[i+1] = hold;

}
}
}
break;

}
}

You might also like