2 Commits

Author SHA1 Message Date
lucas 485d289e95 correction null toolbox.c 2026-04-13 00:38:39 +02:00
lucas 35b04e088e correction boucl inf toolbox.c 2026-04-13 00:33:20 +02:00
+20 -9
View File
@@ -5,20 +5,24 @@
#include <stdlib.h> #include <stdlib.h>
struct array *sort(struct array *arr, comparator f) struct array *sort(struct array *arr, comparator f)
{ {
if(!arr || !f) return NULL;
void *temp = malloc(arr->elem_size); void *temp = malloc(arr->elem_size);
if(!temp) return NULL;
for(size_t index1 = 0; index1 < arr->len - 1; index1 ++ ){ if (arr->len > 0) {
for(size_t index1 = 0; index1 < arr->len - 1; index1 ++ ){
for(size_t index2 = index1; index2 < arr->len; index2 ++){ for(size_t index2 = index1; index2 < arr->len; index2 ++){
void *data1 = arr->data + index1 * arr->elem_size; void *data1 = arr->data + index1 * arr->elem_size;
void *data2 = arr->data + index2 * arr->elem_size; void *data2 = arr->data + index2 * arr->elem_size;
if(f(data1,data2) > 0){ if(f(data1,data2) > 0){
memcpy(temp, data2, arr->elem_size); memcpy(temp, data2, arr->elem_size);
memcpy(data2, data1, arr->elem_size); memcpy(data2, data1, arr->elem_size);
memcpy(data1, temp, arr->elem_size); memcpy(data1, temp, arr->elem_size);
}
} }
} }
} }
@@ -30,6 +34,8 @@ struct array *sort(struct array *arr, comparator f)
struct array *map(struct array *arr, size_t output_size, mapper f) struct array *map(struct array *arr, size_t output_size, mapper f)
{ {
if(!arr || !f)return NULL;
void *data = calloc(arr->len, output_size); void *data = calloc(arr->len, output_size);
if(!data) return NULL; if(!data) return NULL;
@@ -51,6 +57,8 @@ struct array *map(struct array *arr, size_t output_size, mapper f)
struct array *filter(struct array *arr, predicate f) struct array *filter(struct array *arr, predicate f)
{ {
if(!arr || !f) return NULL;
size_t index = 0; size_t index = 0;
int flon = 0; int flon = 0;
while(index != arr->len){ while(index != arr->len){
@@ -65,8 +73,8 @@ struct array *filter(struct array *arr, predicate f)
index = 0; index = 0;
void *data1 = calloc(flon, arr->elem_size); void *data1 = calloc(flon, arr->elem_size);
if(!data1 && flon > 0) return NULL; if(!data1 && flon > 0) return NULL;
size_t index2 = 0;
size_t index2 = 0;
while(index != arr->len){ while(index != arr->len){
void *cur = arr->data + index * arr->elem_size; void *cur = arr->data + index * arr->elem_size;
@@ -87,6 +95,8 @@ struct array *filter(struct array *arr, predicate f)
void *reduce(struct array *arr, void *start_value, reducer f) void *reduce(struct array *arr, void *start_value, reducer f)
{ {
if(!arr || !start_value || !f) return NULL;
void *rslt = start_value; void *rslt = start_value;
size_t index = 0; size_t index = 0;
@@ -102,6 +112,7 @@ void *reduce(struct array *arr, void *start_value, reducer f)
void foreach(struct array *arr, acceptor f) void foreach(struct array *arr, acceptor f)
{ {
if(!arr || !f) return;
// arr.data est un array de x valeurs // arr.data est un array de x valeurs
size_t index = 0; size_t index = 0;