Skip to content
Snippets Groups Projects
Select Git revision
  • f1ffd7006f07e5da5755b87fef1aeb1afd19e2c0
  • main default protected
2 results

lib_alloc.c

Blame
  • 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);
        }
    }