Διάβασμα-εκτύπωση ενός πίνακα δομών. Εύρεση μέσου όρου, μέγιστου, ελάχιστου στοιχείου δομής. Ως δομή θεωρείτε ο μαθητής ή αλλιώς student.
Αλφαβητική ταξινόμηση πίνακα δομών
#include
#include
const int N=3; //Μέγεθος πίνακα δομών
struct student
{
char name[20];
int age;
float grade;
};
int i;
student s[N];
void read() //Διάβασμα πίνακα δομών
{
for(i=0;imax)
{
max=s[i].grade;
strcpy(maxname,s[i].name);//Στο maxname καταχωρείται το
όνομα του σπουδαστή με το μεγαλύτερο βαθμό
}
printf("\nStudent %s has the maximum grade %.2f\n ",maxname,max);
}
void write() //Εκτύπωση πίνακα δομών
{
printf("Name\tAge\tGrade\n");
for(i=0;i<N;i++)
printf("%s \t %d \t %.2f \n",s[i].name,s[i].age,s[i].grade);
}
void minimum() //Εμφάνιση σπουδαστή με το μικρότερο βαθμό
{
char minname[20]; //Αυτή η μεταβλητή χρησιμοποιείται για να καταχωρηθεί το
όνομα του σπουδαστή με το μικρότερο βαθμό
float min;
……………………………………………………………………
}
void bubblesort() //Αλφαβητική ταξινόμηση σπουδαστών
{
student temp; //Βοηθητική μεταβλητή τύπου student για την εναλλαγή των
στοιχείων στο bubblesort
int k;
for(k=1;k0)
//Προσοχή! Συγκρίνουμε μόνο το όνομα των σπουδαστών
(συγκρίνοντας τους ASCII κωδικούς των αντίστοιχων χαρακτήρων)
αλλά με τις εντολές που ακολουθούν εναλλάσσουμε όλη την εγγραφή
και όχι μόνο το όνομα
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
void main()
{
read();
printf("\nInitial array of students:\n");
write();
average();
maximum();
minimum();
bubblesort();
printf("\nSorted array of students:\n");
write();
}
#include
const int N=3; //Μέγεθος πίνακα δομών
struct student
{
char name[20];
int age;
float grade;
};
int i;
student s[N];
void read() //Διάβασμα πίνακα δομών
{
for(i=0;i
{
max=s[i].grade;
strcpy(maxname,s[i].name);//Στο maxname καταχωρείται το
όνομα του σπουδαστή με το μεγαλύτερο βαθμό
}
printf("\nStudent %s has the maximum grade %.2f\n ",maxname,max);
}
{
printf("Name\tAge\tGrade\n");
for(i=0;i<N;i++)
printf("%s \t %d \t %.2f \n",s[i].name,s[i].age,s[i].grade);
}
void average() //Υπολογισμός μέσου όρου σπουδαστών
{
float sum=0,av;
for(i=0;i<N;i++)
sum+=s[i].grade; //sum=sum+s[i].grade;
av=sum/N;
printf("Average grade of all students is: %.2f\n",av);
}
void maximum() //Εμφάνιση σπουδαστή με το μεγαλύτερο βαθμό
{
char maxname[20]; //Αυτή η μεταβλητή χρησιμοποιείται για να καταχωρηθεί το
όνομα του σπουδαστή με το μεγαλύτερο βαθμό
float max;
max=s[0].grade; //Υποθέτω ότι ο βαθμός του 1ου μαθητή είναι ο μεγαλύτερος
strcpy(maxname,s[0].name);//Αρχικά καταχωρείται το όνομα του 1ου σπουδαστή
for(i=1;i<N;i++)
if(s[i].grade>max)
{
max=s[i].grade;
strcpy(maxname,s[i].name);//Στο maxname καταχωρείται το
όνομα του σπουδαστή με το μεγαλύτερο βαθμό
}
printf("\nStudent %s has the maximum grade %.2f\n ",maxname,max);
}
{
char minname[20]; //Αυτή η μεταβλητή χρησιμοποιείται για να καταχωρηθεί το
όνομα του σπουδαστή με το μικρότερο βαθμό
float min;
……………………………………………………………………
}
void bubblesort() //Αλφαβητική ταξινόμηση σπουδαστών
{
student temp; //Βοηθητική μεταβλητή τύπου student για την εναλλαγή των
στοιχείων στο bubblesort
int k;
for(k=1;k
//Προσοχή! Συγκρίνουμε μόνο το όνομα των σπουδαστών
(συγκρίνοντας τους ASCII κωδικούς των αντίστοιχων χαρακτήρων)
αλλά με τις εντολές που ακολουθούν εναλλάσσουμε όλη την εγγραφή
και όχι μόνο το όνομα
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
void main()
{
read();
printf("\nInitial array of students:\n");
write();
average();
maximum();
minimum();
bubblesort();
printf("\nSorted array of students:\n");
write();
}
Δημοσίευση σχολίου