// Student rank // M.Menault 2024 #include #include #include "heapsort.h" #include "bubblesort.h" void generate_grades(int** students_array, int students_number, int grades_number) { int i = 0; for(i=0;i= 0; i--) { if(grades_array[i] == student_grade) { position = students_number-i; break; } } return position; } void sort_students(int** students_rank, int** students_array, int students_number, int grades_number) { int i = 0, j = 0; 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 main(int argc, char** argv) { int** student_grades = NULL; int** student_ranks = NULL; int students_length = 0; int grades_length = 0; int debug_mode = 0; if(argc != 4) { printf("Usage : %s \n",argv[0]); return -1; } students_length = atoi(argv[1]); grades_length = atoi(argv[2]); debug_mode = atoi(argv[3]); student_grades = (int**) malloc(students_length*sizeof(int*)); student_ranks = (int**) malloc(students_length*sizeof(int*)); generate_grades(student_grades,students_length,grades_length); generate_ranks(student_ranks,students_length,grades_length); sort_students(student_ranks,student_grades,students_length,grades_length); if(debug_mode) { print_student_array(student_grades,students_length,grades_length); print_student_array(student_ranks,students_length,grades_length); } free_array(student_grades,students_length); free_array(student_ranks,students_length); free(student_grades); free(student_ranks); return 0; }