Chaine de caractere!!

Résolu
Bonjour,
Salut à tous le monde..Je cherche un algo qui me permet de determiner le nombre et la position d'une sous-chaine dans une chaine.Ex: on dans fonction:en position 1 et 6.
Voici ce que j'ai fait et cepedant le compilateur m'a signalé 5 petites erreurs dont j'arrive pas à me debarrasser:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#define n 100

{ char chaine[100],sousch[100];

int tab[n],i,j,k,lgch,lgsch,lg,cont;

printf("Veuillez saisir la chaine principale\n");
scanf("%s",&chaine);
fflush(stdin);
lgch=strlen(chaine);

printf("Veuillez saisir la sous-chaine\n");
scanf("%s",&sousch);
fflush(stdin);
lgsch=strlen(sousch);

i=0;j=0;k=0;lg=0;cont=0;

while(i<lgch)
{
do
{
if(sousch[j]==chaine[i])
{ cont=1;
i=i+1;
j=j+1;
lg=lg+1;
}
else
cont=0;
}
while((j<lgsch) && (cont==1));

if(lg==lgsch)
{
tab[k]=i-lg;
k++;
i--;
}

i++;
lg=0;
j=0;
}
if(k==0)
{
printf("Y a pas de sous-chaine\n");
}
else
{
printf("La sous-chaine se trouve à la position:\n");
for(i=0;i<k;i++)
printf("%d",tab[i]);

}
getch();
}

SVP je vous en prie aidez-moi.
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Je t'aurais bien aidé mais je connais pas c quoi ce language, alors je me suis permis de refaire l'indentation :)

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #define n 100
    {
    char chaine[100],sousch[100];
    int tab[n],i,j,k,lgch,lgsch,lg,cont;
    printf("Veuillez saisir la chaine principale\n");
    scanf("%s",&chaine);
    fflush(stdin);
    lgch=strlen(chaine);

    printf("Veuillez saisir la sous-chaine\n");
    scanf("%s",&sousch);
    fflush(stdin);
    lgsch=strlen(sousch);

    i=0;
    j=0;
    k=0;
    lg=0;
    cont=0;

    while(i<lgch){
    do{
    if(sousch[j]==chaine[i]){
    cont=1;
    i=i+1;
    j=j+1;
    lg=lg+1;
    }
    else cont=0;
    }
    while((j<lgsch) && (cont==1));
    if(lg==lgsch){
    tab[k]=i-lg;
    k++;
    i--;
    }
    i++;
    lg=0;
    j=0;
    }
    if(k==0){
    printf("Y a pas de sous-chaine\n");
    }
    else{
    printf("La sous-chaine se trouve à la position:\n");
    for(i=0;i<k;i++)
    printf("%d",tab[i]);
    }
    getch();
    }
    1. C'est en c. Au fait t'as fait quasiment la même chose.ou bien c'est moi qui me suis trmpoé.
  2. ben oui, en fait il y a un virage des espaces en debut de ligne quand on poste... C'était plus joli ce que j'avais fait!
    1. moi c plutot Java mais on peu regarder, tu peux balancer les messages du compilateur aussi?
      1. Voici les erreurs signalées par le compilateur(tclite):
        erreur c:\tclite\bin\ngtp\chaine.c 8: declaration was expected
        erreur c:\tclite\bin\ngtp\chaine.c 13 : ) expected
        erreur c:\tclite\bin\ngtp\chaine.c 14 : ) expected
        erreur c:\tclite\bin\ngtp\chaine.c 15 : ) expecte
        \bin\ngtp\chaine.c 63 : ) fonction should return a value in fonction fflush()
    2. Je crois qu'il te manque une accolade ouvrate apres le deuxieme while
      while((j<lgsch) && (cont==1));
      1. Pas du tout!!Ce while dont tu parle est pour la boucle do-while. L'erreur ne se trouve pas ici mais quelque part dans le programme.
    3. tu es sur de la déclaration de ta macro ?
      1. Bien sur que j'en suis sur!!!
    4. il manque pas un truc du genre: void chaine()
      désolé, j'espère qu'un céiste pourra s'occuper de toi au plus vite!
      1. l'erreur c'est parce que dans ton programme tu as oublié de mettre l'entete du main...
        int main()
        et pour garder les indextions quand vous postez votre code il faut utiliser les balises "code" qui se trouver en haut a gauche du cadre ou vous ecrivez entre le souligné et la petite planete, vous mettez votre code entre les deux balise et puis voila ;)
        1. Ah bon merci beaucoup Mype, c'est vraiment gentille da ta part!!J'y ai trop reflechy la dessu et quand même je m'en suis pas rendu !!Et graçe à toi j'ai reussi à m'en debarresser....Um kandandu à angolais....