Bonjours;

dans une matrice de taille m*n qui contient seulement des '0' et des '1', je veux calculer la succession des deux éléments dans chaque ligne.

Exemple:
Si la première ligne de la matrice est : 0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0
la première ligne de la matrice résultat doit être: 5 3 4 2 2
C'est-à-dire: 5 zéro, suivit de 3 un, suivit de 4 zéros, etc.…

et ainsi de suite pour chaque ligne

j'ai dèjà la reponse pour le cas d'un tableau:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
int main(int argc, char * argv[])
{ 
int k=0;
  //declaration & initialisation
    int *t=new int[ligne];
    int *resultat=new int[ligne];for(k=0; k<ligne; k++){resultat[k]=0;} 
 
//  remplir le tableau à partir d'un fichier
    t=loadTableau(fff,fichier,ligne);
 
 
    int current = 0;
    int current_pos = 0;
 
    for(k=0; k<ligne*colone; k++){
        if(t[k] == current)
            resultat[current_pos]++;
        else
        {
            resultat[++current_pos]++;
            current = t[k];
        }
    }
 
    k = 0;
 
//overture du fichier resultat
	finput=fopen(fichier_res,"a");
 
 
// ecriture du résultat
    while(k < ligne && resultat[k] > 0){
        fprintf(finput,"%d ",resultat[k]);
        k++;
    }fprintf(finput,"\n");
}
j'ai essayé de généraliser ce code pour le cas d'une matrice comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
int main(int argc, char * argv[])
{   
 
 int k=0,s=0;
 
int **t;
t=new int*[ligne ];
for(k=0; k<ligne ; k++){ t[k]=new int[colone];}
 
int **resultat;
resultat=new int*[ligne ];
for(k=0; k<ligne; k++){ resultat[k]=new int[colone];}
for(k=0; k<ligne; k++){for(s=0; s<colone; s++){resultat[k][s]=0;}} 
 
 
t=loadMatrice(f,fichier,ligne,colone);
 
    int current = 0;
    int current_pos = 0; 
 
    for(k=0; k<ligne; k++){
      for(s=0; s<colone; s++){
        if(t[k][s] == current)
            resultat[current_pos][s]++;
         else
        {
            resultat[++current_pos][s]++;
             current = t[k][s];
        }
		}}
 
    k = 0,s=0;
	finput=fopen(fichier_res,"a");
    while(k<ligne && s<colone && resultat[k][s] > 0){
 
        fprintf(finput,"%d %d %d\n ",k,s,resultat[k][s]); 
 
		 k++;s++;}fprintf(finput,"\n");
	system("pause");
	return 0;
}
malheureusement ça donne pas le bon résultat ! y a-t-il d'autre truc pour faire cette généralisation, ou autre idée qui répond au problème ?

cordialement