Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define N 10
- #define NBiter 3
- int MAT[N][N];
- typedef struct information
- {
- int val;
- int col_int;
- int count;
- }information;
- typedef struct elt_liste
- {
- information i;
- struct elt_liste* suiv;
- }elt_liste;
- void affich(int m[N][N]);
- void ajouter(elt_liste** liste, information i);
- elt_liste* List_ligne(int numLigne);
- void affich_line_list(int numLigne, elt_liste* liste);
- int main(int argc, char const *argv[])
- {
- int z;
- srand(time(NULL));
- for(z = 0; z < NBiter; z++){
- printf("---------- Iteration %d ----------\n",z+1);
- int i,j;
- elt_liste* ligne = NULL;
- elt_liste* Tete_tab[N];
- for (i = 0; i < N; i++) //Lignes
- {
- for (j = 0; j < N; j++) //Colonnes
- {
- MAT[i][j] = rand() % 2;
- }
- }
- printf("Matrice\n");
- affich(MAT);
- printf("\n");
- for(i = 0; i < N; i++){
- Tete_tab[i] = List_ligne(i);
- }
- for(i = 0; i < N; i++){
- printf("Ligne %d\n",i+1);
- affich_line_list(i,Tete_tab[i]);
- printf("\n");
- }
- }
- return 0;
- }
- void affich(int m[N][N]){
- int i,j;
- for (i = 0; i < N; i++) //Lignes
- {
- for (j = 0; j < N; j++) //Colonnes
- {
- printf("%d ",m[i][j]);
- }
- printf("\n");
- }
- }
- void ajouter(elt_liste** liste, information i){
- elt_liste *tmp = (elt_liste*) malloc(sizeof(elt_liste));
- if (!tmp){printf("Erreur malloc ajouter");exit(0);}
- tmp->i.val = i.val;
- tmp->i.col_int = i.col_int;
- tmp->i.count = i.count;
- tmp->suiv = (*liste);
- (*liste) = tmp;
- }
- elt_liste* List_ligne(int numLigne){
- int i, v, ind, cnt;
- elt_liste *tmp = NULL;
- v = MAT[numLigne][0];
- ind = 0;
- cnt = 1;
- for (i = 1; i < N; i++)
- {
- if (MAT[numLigne][i] == v){
- cnt++;
- }
- else{
- information inf = {v,ind,cnt};
- //printf("%d,%d,%d\n",inf.val,inf.col_int,inf.count);
- ajouter(&tmp,inf);
- v = MAT[numLigne][i];
- ind = i;
- cnt = 1;
- }
- }
- information inf = {v,ind,cnt};
- //printf("%d,%d,%d\n",inf.val,inf.col_int,inf.count);
- ajouter(&tmp,inf);
- return tmp;
- }
- void affich_line_list(int numLigne, elt_liste* liste){
- int i;
- elt_liste* tmp = liste;
- for (i = 0; i < N; i++)
- {
- printf("%d ",MAT[numLigne][i]);
- }
- printf("\n");
- for (tmp; tmp != NULL; tmp = tmp->suiv)
- {
- printf("[%d,%d,%d] <-- ",tmp->i.val,tmp->i.col_int,tmp->i.count);
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement