Select Git revision
lib_alloc.c
lib_alloc.c 2.70 KiB
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdint.h>
#include <string.h>
#include <time.h>
#include "lib_alloc.h"
int nb_alea(int max){
int nb = rand() % max+1;
return nb;
}
void fill_tab(int *tab, int size){
for (int i = 0; i < size; i++)
{
//count += 1;
tab[i] = rand() % size+1;
}
}
void print_tab(int *tab, int size){
for (int i = 0; i < size; i++)
{
int tmp = tab[i];
printf("%d -- %d\n", i, tmp);
}
}
void change(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
}
void permu_alea(int *tab, int size){
for(int i = size -1; i> 0; i--){
int j = rand() % (i+1);
change(&tab[i], &tab[j]);
}
print_tab(tab, size);
}
void permu_cyclique(int *tab, int size, int deca){
int32_t *tmp = malloc(size * sizeof(int32_t));
for (int32_t i = 0; i < size; i++)
{
tmp[(i+deca)%size] = tab[i];
}
for (int32_t i = 0; i < size; i++)
{
tab[i] = tmp[i];
}
free(tmp);
print_tab(tab, size);
}
void min_to_last(int *tab, int size){
int i_min = 0;
int min = tab[0];
for(int i = 0; i < size; i++){
if(tab[i]<min){
tab[i] = min;
i_min = i;
}
}
int i_end = size-1;
int val_end = tab[i_end];
tab[i_end] = min;
tab[i_min] = val_end;
print_tab(tab, size);
}
void max_to_min(int *tab, int size){
int tmp;
for(int i = 1; i < size; i++){
int j = i;
while(j > 0 && tab[j-1] < tab[j]){
tmp = tab[j];
tab[j] = tab[j-1];
tab[j-1] = tmp;
j--;
}
}
print_tab(tab, size);
}
void nb_count(int *tab, int size, int nb_counter){
int count = 0;
//on trie d'abord
max_to_min(tab, size);
for(int i = 0; i< size; i++){
if(tab[i]<nb_counter){
count += 1;
}
}
printf("Il y a %d plus petit que %d", count, nb_counter);
}
void sum(int *tab, int *tab_two, int *tab_three, int size){
for(int i = 0; i<size; i++){
tab_three[i] = tab[i] + tab_two[i];
}
print_tab(tab_three, size);
}
void multi_element(int *tab_three, int *tab_four, int size, int n){
for(int i = 0; i<size; i++){
tab_four[i] = tab_three[i] * n ;
}
print_tab(tab_four, size);
}
void tab_double(int *tab_four, double *tab_five, int size){
for(int i = 0; i< size; i++){
tab_five[i] = (double)tab_four[i];
}
print_tab_double(tab_five, size);
}
void print_tab_double(double *tab, int size){
for (int i = 0; i < size; i++)
{
double tmp = tab[i];
printf("%d -- %lf\n", i, tmp);
}
}