Bonjours a tous je possede sa au depart 101010111110100 et le but ce que je doit mettre un 0 quand il y a cinq 1 d'affiler c'est a dire d'apres l'exemple 1010101111100100
voila je voi pas comment faire
Bonjours a tous je possede sa au depart 101010111110100 et le but ce que je doit mettre un 0 quand il y a cinq 1 d'affiler c'est a dire d'apres l'exemple 1010101111100100
voila je voi pas comment faire
Tu place ta suite de 0 et de 1 dans une AnsiString
Tu la parcours avec une boucle for, tu teste si c'est egale a 1 si oui tu incremante une variable
Quand cette variable attein 5 tu remplace le caractére par 0
je doit pas le remplacer mais en ajouter un
look bien exemple
L'ajout dans un AnsiString est simple avec la méthode Insert![]()
Bon c'est pas optimisé
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 AnsiString asBuffer = "101010111110100 "; int iTaille; int iCpt = 0; iTaille = asBuffer.Length(); for(int i = 1; i<iTaille+1; i++) { if(i == 1) { if(asBuffer[i] == '1') iCpt++; } else { if( (asBuffer[i] == '1' && (asBuffer[i-1] == '1' || iCpt ==0))) iCpt++; else iCpt = 0; } if(iCpt == 5) { asBuffer.Insert("0",i+1); iCpt = 0; i--; iTaille ++; } } Label1->Caption = asBuffer;
Mais jai fais sa vite fait, pour te donner une piste
Salut !
Ca pouvait se rédiger plus simplement (ce que pottiez suggère dans sa réponse) :
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 AnsiString A = Edit1->Text; //chaine à traiter AnsiString S; int j; for(j = 1; j <= (A.Length()-4); j++) { S = A.SubString(j, 5); if(S == "11111") { A = A.Insert('0', j+5); j = j + 5; } } //Label2->Caption = A; //Echo du résultat
Partager