Compare commits

...

2 Commits
main ... main

Author SHA1 Message Date
40bed0cb34 ajout du compte rendu 2024-10-15 10:15:10 +02:00
1043182b8b fin premeierer seance 2024-09-03 12:18:08 +02:00
4 changed files with 79 additions and 56 deletions

25
compte_rendu Normal file
View File

@ -0,0 +1,25 @@
premiere execution de gprof avec les arguments 100 10 1
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1010 0.00 0.00 bubblesort
0.00 0.00 0.00 1000 0.00 0.00 find_rank_student
0.00 0.00 0.00 200 0.00 0.00 print_array
0.00 0.00 0.00 100 0.00 0.00 generate_array
0.00 0.00 0.00 2 0.00 0.00 free_array
0.00 0.00 0.00 2 0.00 0.00 print_student_array
0.00 0.00 0.00 1 0.00 0.00 generate_grades
0.00 0.00 0.00 1 0.00 0.00 generate_ranks
0.00 0.00 0.00 1 0.00 0.00 sort_students
Resultat pas tres interessant
deuxieme execution de gprof avec les arguments 1000 1000
test avec les argument 1000 10000 0
le programme a pris 30 secondes et on a remarquer que cetait bubulesort qui prend
le plus de temps a executer
finalement on va modifier le nombre de fois est appeler bubulle sort
on va essayer de profiller un de notre code

BIN
gmon.out Normal file

Binary file not shown.

BIN
student_rank Executable file

Binary file not shown.

View File

@ -6,120 +6,118 @@
#include "heapsort.h"
#include "bubblesort.h"
void generate_grades(int** students_array, int students_number, int grades_number)
void generate_grades(int **students_array, int students_number, int grades_number)
{
int i = 0;
for(i=0;i<students_number;i++)
for (i = 0; i < students_number; i++)
{
students_array[i] = (int*) malloc(grades_number*sizeof(int));
generate_array(students_array[i],grades_number);
students_array[i] = (int *)malloc(grades_number * sizeof(int));
generate_array(students_array[i], grades_number);
}
}
void generate_ranks(int** students_array, int students_number, int grades_number)
void generate_ranks(int **students_array, int students_number, int grades_number)
{
int i = 0;
int j = 0;
for(i=0;i<students_number;i++)
for (i = 0; i < students_number; i++)
{
students_array[i] = (int*) malloc(grades_number*sizeof(int));
for(j=0;j<grades_number;j++)
{
students_array[i] = (int *)malloc(grades_number * sizeof(int));
for (j = 0; j < grades_number; j++)
{
students_array[i][j] = -1;
}
}
}
}
void free_array(int** students_array, int students_number)
void free_array(int **students_array, int students_number)
{
int i = 0;
for(i=0;i<students_number;i++)
for (i = 0; i < students_number; i++)
{
free(students_array[i]);
}
}
void print_student_array(int** students_array, int students_number, int grades_number)
void print_student_array(int **students_array, int students_number, int grades_number)
{
int i = 0;
printf("----------------------\n");
for(i=0;i<students_number;i++)
for (i = 0; i < students_number; i++)
{
printf("Student %d : ",i);
print_array(students_array[i],grades_number);
printf("Student %d : ", i);
print_array(students_array[i], grades_number);
}
printf("----------------------\n");
}
int find_rank_student(int student_grade, int* grades_array, int students_number)
int find_rank_student(int student_grade, int *grades_array, int students_number)
{
int position = -1;
int i = 0;
bubblesort(grades_array,students_number);
for(i = students_number-1; i >= 0; i--)
for (i = students_number - 1; i >= 0; i--)
{
if(grades_array[i] == student_grade)
{
position = students_number-i;
break;
}
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)
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++)
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));
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 main(int argc, char **argv)
{
int** student_grades = NULL;
int** student_ranks = NULL;
int **student_grades = NULL;
int **student_ranks = NULL;
int students_length = 0;
int grades_length = 0;
int debug_mode = 0;
if(argc != 4)
if (argc != 4)
{
printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\n",argv[0]);
printf("Usage : %s <number of student> <number of grade per student> <debug mode : 0|1>\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)
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);
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_array(student_grades, students_length);
free_array(student_ranks, students_length);
free(student_grades);
free(student_ranks);
return 0;
}