Les Snippets

Connexion

chaine de battage (fonction qui renvoie 1 si la chaine3 est une chaine de battage de la chaine 1 et de la chaine 2)

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 15/12/2007 10:35:00 et initié par coucou747 [Liste]
Date de mise à jour : 11/01/2008 13:59:36
Vue : 2562
Catégorie(s) : Algorithme, Chaîne de caractères
Langages dispo pour ce code :
- C
- VB6, VBA
- VB 2005
- Delphi 5
- Voir tous les langages pour ce code snippet



Langage : C
Date ajout : 15/12/2007
Posté par coucou747 [Liste]
DateMAJ : 09/01/2008

Soient deux chaînes de caractères s1 et s2. On appelle battage de s1 et s2 toute chaîne s composée de tous les caractères de s1 et de s2, 
telle que l'ordre des caractères de s1 et l'ordre des caractères de s2 ne soit pas modifié dans s, et que les caractères de s1
et les caractères de s2 n'apparaissent qu'une fois dans s.

int battage(const char *s1, const char *s2, const char *s, int strlen1, int strlen2, int strlen3)
{
  int i;
  if(strlen1==0) {
    for(i=0; i<strlen2; i++) {
      if(s2[i]!=s[i]) return 0;
    }
    return 1;
  }
  if(strlen2==0) {
    for(i=0; i<strlen1; i++) {
      if(s1[i] != s[i]) return 0;
    }
    return 1;
  }
  if(s[0]==s1[0]) {
    if(battage(s1+1, s2, s+1, strlen1-1, strlen2, strlen3-1)) return 1;
  }
  if(s[0]==s2[0]) {
    if(battage(s1, s2+1, s+1, strlen1, strlen2-1, strlen3-1)) return 1;
  }
  return 0;
}

Remarque :
test :
  char *s1, *s2, *s;
  int l1, l2, l3;
  scanf("%d", &l1);
  s1 = (char *)malloc(l1 + 1);
  scanf("%s", s1);
  scanf("%d", &l2);
  s2 = (char *)malloc(l2 + 1);
  scanf("%s", s2);
  scanf("%d", &l3);
  s = (char *)malloc(l3 + 1);
  scanf("%s", s);
  printf("%d\n", battage(s1, s2, s, l1, l2, l3));

Snippets en rapport avec : Chaine, String, Battage



Codes sources en rapport avec : Chaine, String, Battage

{C / C++ / C++.NET} MYSTRING, CLASSE TRAITANT DES CHAÎNES DE CARACTÈRES
Ceci est une classe tout ce qu'il y'a de plus banal traitant des chaines de caractères. Commentée ai...

{Delphi} DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN VB
Découpe une chaîne délimitée en ses éléments pour remplir un tableau dynamique passé en paramètre. U...

{C / C++ / C++.NET} [C/WIN32] GÉNÉRATEUR DE CODE POUR UNE INITIALISATION SPÉCIALE DE CHAINE DE CARACTÈRES.
Yop, Voici BNMgenerator, à comprendre BruNews Method Generator. J'espère qu'il me pardonnera ce n...

{Visual Basic, VB6, VB.NET, VB 2005} CRYPTAGE ET DÉCRYPAGE D'UNE CHAÎNE DE CARACTÈRES
Bonjour, Je débute en VB.Net et c'est la première source que je dépose sur Vbfrance. J’attends be...

{Delphi} DISTANCE LEVENSHTEIN (DISTANCE ENTRE DEUX CHAINES)
Une implémantation de la distance Levenshtein. Plus de renseignemant ici : http://fr.wikipedia.org/w...

{Visual Basic, VB6, VB.NET, VB 2005} RÉCUPÉRER UNE CHAINE DE CARACTÈRE À PARTIR DE SON POINTEUR D'ADRESSE MÉMOIRE
Bonjour à tous, Voilà rien d'exceptionnel, tous les codeurs d'api en ont une comme ça, mais j'ai ...

{C / C++ / C++.NET} CRÉATION D'UNE CLASSE CL_STRING (GESTION DES CHAÎNES)
Je sais qu'il existe une class string.h mais j'ai voulu recréer comme exercice une classe qui fait ...

{C / C++ / C++.NET} SUPPRIME CHAINE DANS FICHIER (WIN32)
CHAINE A SUPPRIMER: - De 1 à 4095 octets maxi. - Tout ce qui est dans zone de texte, sauts de li...

{C / C++ / C++.NET} SUPPRIMER UNE CHAINE DE CARACTERES D'UN FICHIER
En réponse à de nombreuses questions, voici un code qui supprime une ligne dans un fichier....

{C / C++ / C++.NET} SPLIT/EXPLODE D'UNE CHAINE DE CARACTERE EN C
Suite à la question que j'ai posé sur le forum, j'ai fait une petite fonction qui découpe une chain...