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:
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 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"); }
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 ?
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; }
cordialement
Partager