Skip to content
Snippets Groups Projects
Commit 12c4bf8d authored by gawen.ackerman's avatar gawen.ackerman :robot:
Browse files

réalisation de l'exercice

parent d56c6ce3
No related branches found
No related tags found
No related merge requests found
*.o
tp_allocation_dynamique
\ No newline at end of file
{
"files.associations": {
"*.bin": "code-text-binary",
"time.h": "c"
}
}
\ No newline at end of file
Makefile 0 → 100644
LIB=-lm
PARAM=-Wall -Wextra
EXEC=tp_allocation_dynamique
main: main.o array.o
gcc $^ ${PARAM} -o ${EXEC} ${LIB}
main.o: main.c
gcc ${PARAM} -c $^
array.o: array.c
gcc ${PARAM} -c $^
clean:
rm -f *.o ${EXEC}
array.c 0 → 100644
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
void fill_array_with_int(int32_t* array, int32_t size) {
for (int32_t i = 0; i < size; i++) {
array[i] = i;
}
}
void cyclic_permutation(int32_t* array, int32_t size, int32_t n) {
for (int32_t i = size - 1; i > 0; i--) {
int32_t index = (i + n) % size;
int32_t tmp = array[index];
array[index] = array[i];
array[i] = tmp;
}
}
void insert_lowest_at_end_of_array(int32_t* array, int32_t size) {
int32_t lowest_value = (int32_t)pow(2, 32 - 1);
for (int32_t i = 0; i < size; i++) {
if (lowest_value >= array[i]) {
lowest_value = array[i];
int32_t tmp = array[size - 1];
array[size - 1] = lowest_value;
array[i] = tmp;
}
}
}
void sort_desc(int32_t* array, int32_t size) {
for (int32_t i = 0; i < size; i++) {
find_greatest_element_index(array, size, i);
}
}
int32_t find_greatest_element_index(int32_t* array, int32_t size, int32_t start_index) {
int32_t biggest_value = (int32_t)(pow(2, 32 - 1)) * (-1);
int32_t index = start_index;
for (int32_t i = index; i < size; i++) {
if (array[i] > biggest_value) {
biggest_value = array[i];
index = i;
place_biggest_number_at_start_of_array(array, i);
}
}
return index;
}
int32_t find_user_number_index(int32_t* array, int32_t size, int32_t user_number) {
int32_t index = 0;
for (int32_t i = index; i < size; i++) {
if (array[i] == user_number) {
index = i;
break;
}
}
return index;
}
void place_biggest_number_at_start_of_array(int32_t* array, int32_t index_biggest_value) {
int32_t tmp_first = array[0];
int32_t tmp_biggest = array[index_biggest_value];
array[0] = tmp_biggest;
array[index_biggest_value] = tmp_first;
}
void random_index_permutation(int32_t* array, int32_t size) {
int32_t index_1 = (rand() % size);
int32_t index_2 = (rand() % size);
int32_t tmp = array[index_1];
array[index_1] = array[index_2];
array[index_2] = tmp;
}
void randomize_array(int32_t* array, int32_t size) {
fill_array_with_int(array, size);
for (int32_t i = 0; i < size; i++) {
random_index_permutation(array, size);
}
}
void sum_of_arrays(int32_t* array_1, int32_t* array_2, int32_t* array_3, int32_t size) {
for (int32_t i = 0; i < size; i++) {
array_3[i] = array_1[i] + array_2[i];
}
}
void product_of_arrays_element(int32_t* array_1, int32_t* array_2, int32_t size, int32_t user_number) {
for (int32_t i = 0; i < size; i++) {
array_2[i] = array_1[i] * user_number;
}
}
void convert_int32t_to_double_array(int32_t* array_1, double* array_2, int32_t size) {
for (int32_t i = 0; i < size; i++) {
array_2[i] = (double)array_1[i];
}
}
void display_int_array(int32_t* array, int32_t size) {
for (int32_t i = 0; i < size; i++) {
printf("%d\t", array[i]);
}
printf("\n");
}
void display_double_array(double* array, int32_t size) {
for (int32_t i = 0; i < size; i++) {
printf("%lf\t", array[i]);
}
printf("\n");
}
\ No newline at end of file
array.h 0 → 100644
#ifndef HEADER_ARRAY
#define HEADER_ARRAY
#include <stdbool.h>
#include <stdlib.h>
void fill_array_with_int(int32_t size);
void display_int_array(int32_t* array, int32_t size);
void randomize_array(int32_t* array, int32_t size);
void random_index_permutation(int32_t* array, int32_t size);
void cyclic_permutation(int32_t* array, int32_t size, int32_t n);
void sort_desc(int32_t* array, int32_t size);
void insert_lowest_at_end_of_array(int32_t* array, int32_t size);
int32_t find_greatest_element_index(int32_t* array, int32_t size);
int32_t find_user_number_index(int32_t* array, int32_t size, int32_t user_number);
void place_biggest_number_at_start_of_array(int32_t* array, int32_t index_biggest_value);
void sum_of_arrays(int32_t* array_1, int32_t* array_2, int32_t* array_3, int32_t size);
void product_of_arrays_element(int32_t* array_1, int32_t* array_2, int32_t size, int32_t user_number);
void convert_int32t_to_double_array(int32_t* array_1, double* array_2, int32_t size);
void display_double_array(double* array, int32_t size);
#endif
main.c 0 → 100644
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "array.h"
const int MAX_SIZE = 15;
int main() {
srand(time(NULL));
int32_t size, user_number;
for (int32_t i = 0; i < 100; i++) {
//scanf("%d", &size);
size = (rand() % MAX_SIZE) + 5;
int32_t* tab = malloc(sizeof(int32_t) * size);
int32_t* tab_two = malloc(sizeof(int32_t) * size);
int32_t* tab_three = malloc(sizeof(int32_t) * size);
int32_t* tab_four = malloc(sizeof(int32_t) * size);
double* tab_five = malloc(sizeof(double) * size);
randomize_array(tab, size);
randomize_array(tab_two, size);
randomize_array(tab_three, size);
printf("TAB 1:\n");
display_int_array(tab, size);
printf("TAB 2:\n");
display_int_array(tab_two, size);
printf("CYCLIC PERMUTATION TAB 1:\n");
cyclic_permutation(tab, size, 1);
display_int_array(tab, size);
printf("LOWEST AT END TAB 1:\n");
insert_lowest_at_end_of_array(tab, size);
display_int_array(tab, size);
printf("SORT DESC TAB 1:\n");
sort_desc(tab, size);
display_int_array(tab, size);
printf("Choissisez un nombre entre 0 et %d:\n", size - 1);
//scanf("%d", &user_number);
user_number = (rand() % size);
printf("L'index de l'élément (%d) est [%d]\n", user_number, find_user_number_index(tab, size, user_number));
printf("SUM OF ARRAYS 1 & 2:\n");
sum_of_arrays(tab, tab_two, tab_three, size);
display_int_array(tab_three, size);
printf("PRODUCT OF ARRAYS ELEMENT TAB 1:\n");
printf("Choissisez la valeur par laquelle les éléments du tableau seront multipliés:\n");
//scanf("%d", &user_number);
user_number = (rand() % size);
product_of_arrays_element(tab, tab_four, size, user_number);
display_int_array(tab_four, size);
printf("CONVERT TAB 1 TO DOUBLE ARRAY:\n");
convert_int32t_to_double_array(tab, tab_five, size);
display_double_array(tab_five, size);
free(tab);
free(tab_two);
free(tab_three);
free(tab_four);
free(tab_five);
}
return EXIT_SUCCESS;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment