forked from menault/TD1_DEV51_Qualite_Algo
version Hugo Raban
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include <stdlib.h>
|
||||
#include "heapsort.h"
|
||||
#include "bubblesort.h"
|
||||
#include "qiktri.h"
|
||||
|
||||
void generate_grades(int** students_array, int students_number, int grades_number)
|
||||
{
|
||||
@@ -51,38 +52,50 @@ void print_student_array(int** students_array, int students_number, int grades_n
|
||||
printf("----------------------\n");
|
||||
}
|
||||
|
||||
int find_rank_student(int student_grade, int* grades_array, int students_number)
|
||||
int find_rank_student(int student_grade, int* sorted_grades, int students_number)
|
||||
{
|
||||
int position = -1;
|
||||
int i = 0;
|
||||
bubblesort(grades_array,students_number);
|
||||
for(i = students_number-1; i >= 0; i--)
|
||||
int i;
|
||||
int rank = 1;
|
||||
|
||||
for(i = students_number - 1; i >= 0; i--)
|
||||
{
|
||||
if(grades_array[i] == student_grade)
|
||||
{
|
||||
position = students_number-i;
|
||||
break;
|
||||
}
|
||||
if(sorted_grades[i] == student_grade)
|
||||
{
|
||||
return rank;
|
||||
}
|
||||
|
||||
if(i > 0 && sorted_grades[i] != sorted_grades[i-1])
|
||||
{
|
||||
rank++;
|
||||
}
|
||||
}
|
||||
return position;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void sort_students(int** students_rank, int** students_array, int students_number, int grades_number)
|
||||
{
|
||||
int i = 0, j = 0;
|
||||
int i, j;
|
||||
for(i = 0; i < grades_number; i++)
|
||||
{
|
||||
int * grades = (int*) malloc(students_number*sizeof(int));
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
grades[j] = students_array[j][i];
|
||||
}
|
||||
bubblesort(grades,students_number);
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);
|
||||
}
|
||||
free(grades);
|
||||
int *grades = (int*) malloc(students_number * sizeof(int));
|
||||
if(grades == NULL) {
|
||||
fprintf(stderr, "Erreur : malloc a échoué\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
grades[j] = students_array[j][i];
|
||||
}
|
||||
|
||||
qiktri(grades, 0, students_number - 1);
|
||||
|
||||
for(j = 0; j < students_number; j++)
|
||||
{
|
||||
students_rank[j][i] = find_rank_student(students_array[j][i], grades, students_number);
|
||||
}
|
||||
|
||||
free(grades);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,5 +134,4 @@ int main(int argc, char** argv)
|
||||
free(student_grades);
|
||||
free(student_ranks);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user