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
Vous vous compliquez la vie
encore plus simple
qui dit mieux :
il fautdrait rajouter l'inclusion de la librairie :
#include "strutils.hpp"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AnsiString A = Edit1->Text; //chaine à traiter Label2->Caption = AnsiReplaceStr(A,"11111","111110");
Salut !
C'est la solution qui tue !
Donc chez moi, également comme ceci :
A plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TReplaceFlags Flags = Flags << rfReplaceAll; Label2->Caption = StringReplace(Edit1->Text, //Chaine à traiter "11111", "111110", Flags);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager