Advertisement
Guest User

Mini projet

a guest
Dec 6th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N       10
  5. #define NBiter  3
  6.  
  7. int MAT[N][N];
  8. typedef struct information
  9. {
  10.     int val;
  11.     int col_int;
  12.     int count;
  13. }information;
  14.  
  15. typedef struct elt_liste
  16. {
  17.     information i;
  18.     struct elt_liste* suiv;
  19. }elt_liste;
  20.  
  21. void affich(int m[N][N]);
  22. void ajouter(elt_liste** liste, information i);
  23. elt_liste* List_ligne(int numLigne);
  24. void affich_line_list(int numLigne, elt_liste* liste);
  25.  
  26. int main(int argc, char const *argv[])
  27. {
  28.     int z;
  29.     srand(time(NULL));
  30.     for(z = 0; z < NBiter; z++){
  31.         printf("---------- Iteration %d ----------\n",z+1);
  32.         int i,j;
  33.         elt_liste* ligne = NULL;
  34.         elt_liste* Tete_tab[N];
  35.        
  36.         for (i = 0; i < N; i++) //Lignes
  37.         {
  38.             for (j = 0; j < N; j++) //Colonnes
  39.             {
  40.                 MAT[i][j] = rand() % 2;
  41.             }
  42.         }
  43.        
  44.         printf("Matrice\n");
  45.         affich(MAT);
  46.         printf("\n");
  47.        
  48.         for(i = 0; i < N; i++){
  49.             Tete_tab[i] = List_ligne(i);
  50.         }
  51.        
  52.         for(i = 0; i < N; i++){
  53.             printf("Ligne %d\n",i+1);
  54.             affich_line_list(i,Tete_tab[i]);
  55.             printf("\n");
  56.         }
  57.     }
  58.     return 0;
  59. }
  60.  
  61. void affich(int m[N][N]){
  62.     int i,j;
  63.     for (i = 0; i < N; i++) //Lignes
  64.     {
  65.         for (j = 0; j < N; j++) //Colonnes
  66.         {
  67.             printf("%d ",m[i][j]);
  68.         }
  69.         printf("\n");
  70.     }
  71. }
  72.  
  73. void ajouter(elt_liste** liste, information i){
  74.     elt_liste *tmp = (elt_liste*) malloc(sizeof(elt_liste));
  75.     if (!tmp){printf("Erreur malloc ajouter");exit(0);}
  76.     tmp->i.val = i.val;
  77.     tmp->i.col_int = i.col_int;
  78.     tmp->i.count = i.count;
  79.     tmp->suiv = (*liste);
  80.     (*liste) = tmp;
  81. }
  82.  
  83. elt_liste* List_ligne(int numLigne){
  84.     int i, v, ind, cnt;
  85.     elt_liste *tmp = NULL;
  86.  
  87.     v = MAT[numLigne][0];
  88.     ind = 0;
  89.     cnt = 1;
  90.  
  91.     for (i = 1; i < N; i++)
  92.     {
  93.         if (MAT[numLigne][i] == v){
  94.             cnt++;
  95.         }
  96.         else{
  97.             information inf = {v,ind,cnt};
  98.             //printf("%d,%d,%d\n",inf.val,inf.col_int,inf.count);
  99.             ajouter(&tmp,inf);
  100.  
  101.             v = MAT[numLigne][i];
  102.             ind = i;
  103.             cnt = 1;
  104.         }
  105.     }
  106.     information inf = {v,ind,cnt};
  107.     //printf("%d,%d,%d\n",inf.val,inf.col_int,inf.count);
  108.     ajouter(&tmp,inf);
  109.     return tmp;
  110. }
  111.  
  112. void affich_line_list(int numLigne, elt_liste* liste){
  113.     int i;
  114.     elt_liste* tmp = liste;
  115.  
  116.     for (i = 0; i < N; i++)
  117.     {
  118.         printf("%d ",MAT[numLigne][i]);
  119.     }
  120.     printf("\n");
  121.     for (tmp; tmp != NULL; tmp = tmp->suiv)
  122.     {
  123.         printf("[%d,%d,%d] <-- ",tmp->i.val,tmp->i.col_int,tmp->i.count);
  124.     }
  125.     printf("\n");  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement