sortowanie struktury

0

Witam. Mam zadanie polegające na posortowanie struktury w która przechowuje dane: Imię, Nazwisko, Ocena. Sortowanie ma być według oceny (od oceny najwyższej do najniższej).Nie wiem kompletnie jak się za to zabrać. Proszę o jakieś wskazówki :D
Język C.

1

#Napisz strukture.
#Napisz sortowanie.

0

Zacznij od zrozumieniu treści zadania. Strukturę przechowującą "Imię, Nazwisko, Ocena" nie da się posortować wg oceny.

1

w sensie: nie sortujesz struktury tylko tablicę struktur po ocenie, "sortowanie struktury" nie ma sensu

0

Tak. Chodziło o posortowanie tablicy struktur. Potrafię wczytywać wyświetlać itd. struktury, ale nie wiem jak się zabrać za sortowanie:(

0

Masz te swoje obiekty w tablicy i sortujesz tak jakbyś sortował liczby bo przecież masz dostęp do oceny każdego ucznia.

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

typedef struct _Student{
	const char *name;
	float rate;
} Student;

int cmp_StudentByRate(const void *a, const void *b){
	const Student *sa = (const Student *)a, 
				  *sb = (const Student *)b;
	return (int)(100.f*sa->rate - 100.f*sb->rate);
}

int cmp_StudentByName(const void *a, const void *b){
	const Student *sa = (const Student *)a, 
				  *sb = (const Student *)b;
	return strcmp(sa->name, sb->name);
}

void print_students(const Student *students, size_t len){
	int i;
	for(i = 0; i < len; ++i)
		printf("{%s, %g}\n", students[i].name, students[i].rate);
}

int main(void) {
	Student students[] = {
		{"Marcin Kowalski", 4.5f},
		{"Jaro Kowalewski", 1.0f},
		{"Narwal Drwal", 3.0f}
	};
	size_t len = sizeof(students) / sizeof(Student);
	qsort(students, len, sizeof(students), cmp_StudentByName);
	print_students(students, len);
	printf("---\n");
	qsort(students, len, sizeof(students), cmp_StudentByRate);
	print_students(students, len);
	return 0;
}

out:

{Marcin Kowalski, 4.5}
{Jaro Kowalewski, 1}
{Narwal Drwal, 3}
---
{Jaro Kowalewski, 1}
{Narwal Drwal, 3}
{Marcin Kowalski, 4.5}

1 użytkowników online, w tym zalogowanych: 0, gości: 1