1

bonjour!
si quelqu'un pourra m'aider à résoudre ce problème !
il s'agit d'écrire un prog.C qui cherche une chaine de carctère mot1 dans un autre mot2 et returne mot1 si trouvé..
j'ai essayé et ca n'a pas marché sad

2

C'est quoi ton algorithme déjà...

3

/*voici mon algorithme:*/

#include<stdio.h>
#include<string.h>
#include<conio.h>


void recherche (char ch1[],char ch2[])
{
int i=0;int j=0;
if(strlen(ch1)<=strlen(ch2))
{
while(( (i<strlen(ch1)) && (j<=strlen(ch2)) || (i<=strlen(ch1)) ))
{
if(ch1[i]==ch2[j])
{
i++;
j++;
}
else
{
i=0;
j++;
}

}
printf("i= %d j= %d\n",i,j);
if (i-1==strlen(ch1))
printf("le mot est trouve");
else printf("le mot n'est pas trouve");
}
else
printf("chaine courte");
}


int main()
{
char mot[10];
char motsource[20];
printf("donner la chaine source:\n");
gets(motsource);
printf("donner le mot a rechercher:\n");
gets(mot);
recherche(mot,motsource);

getch();

}


4

/*voici mon algorithme:*/

#include<stdio.h>
#include<string.h>
#include<conio.h>


void recherche (char ch1[],char ch2[])
{
   int i=0;int j=0;
   if(strlen(ch1)<=strlen(ch2))
   {
      while(( (i<strlen(ch1)) && (j<=strlen(ch2)) || (i<=strlen(ch1)) ))
      {
         if(ch1[i]==ch2[j])
         { 
            i++;
            j++;
         }
         else 
         { 
            i=0;
            j++;
         }                                 
      }
      printf("i= %d j= %d\n",i,j);

      if (i-1==strlen(ch1))
         printf("le mot est  trouve");
      else
         printf("le mot  n'est pas   trouve");
   }
   else
      printf("chaine courte");
}


int main()
{
   char mot[10];
   char motsource[20];
   printf("donner la chaine source:\n");
   gets(motsource);
   printf("donner le mot a rechercher:\n");
   gets(mot);
   recherche(mot,motsource);
 
   getch();
    
}


déja "if (i-1==strlen(ch1))" est semantiquement foireux..
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

De deux, c'est pas un algorithme, c'est un code.
De trois, c'est bizarre qu'il y ait pas strcmp...

6

ben pourquoi utiliser strcmp ? c'est ce qu'il est sensé faire
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

7

alors la toute première chose qu'il faut remarquer, c'est que ta méthode ne peut pas marcher telle quelle : si le mot que tu cherches est "coucou !", ton algorithme ne pourra pas le trouver dans la chaîne "ah que coucoucou !" -- pourquoi ? quand il va commencer à lire "coucoucou !", il va prendre le premier "cou", se rendre compte que c'est bien le début de "coucou !", il va prendre le deuxième "cou", se rendre compte que c'est bien la suite de "coucou !", mais arrivé au troisième "cou", ça ne correspond plus à la suite de "coucou !", donc il va revenir au début de la chaîne -- manque de bol, il reste plus que "cou !" dans la chaîne, donc il va pas trouver "coucou !" en entier alors qu'il était bien dans la chaîne de départ...

comment est-ce que tu pourrais l'adapter, à ton avis ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

8

Pollux (./7) :
alors la toute première chose qu'il faut remarquer, c'est que ta méthode ne peut pas marcher telle quelle : si le mot que tu cherches est "coucou !", ton algorithme ne pourra pas le trouver dans la chaîne "ah que coucoucou !" -- pourquoi ? quand il va commencer à lire "coucoucou !", il va prendre le premier "cou", se rendre compte que c'est bien le début de "coucou !", il va prendre le deuxième "cou", se rendre compte que c'est bien la suite de "coucou !", mais arrivé au troisième "cou", ça ne correspond plus à la suite de "coucou !", donc il va revenir au début de la chaîne -- manque de bol, il reste plus que "cou !" dans la chaîne, donc il va pas trouver "coucou !" en entier alors qu'il était bien dans la chaîne de départ...



C'est ce que je voulais expliquer, mais, j'arrivais pas a le formuler ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

Et raté !

godzil@localhost ~ $ cat strsrch.c
#include<stdio.h>
#include<string.h>


void recherche (char ch1[],char ch2[])
{
  int i=0;int j=0;
  if(strlen(ch1)<=strlen(ch2))
  {
    while(  (i<strlen(ch1)) && (j<strlen(ch2))  )
    {
      if(ch1[i]==ch2[j])
      {
        i++;
        j++;
      }
      else
      {
        i=0;
        j++;
      }

    }
    printf("i= %d j= %d\n",i,j);
    if ( i==strlen(ch1))
      printf("le mot est  trouve");
    else
      printf("le mot  n'est pas   trouve");
  }
  else
    printf("chaine courte");
}


int main()
{
  char chaine[] = "coucoucou !";
  char mot[] = "coucou !";

  recherche(mot, chaine);
}
godzil@localhost ~ $ gcc strsrch.c
godzil@localhost ~ $ ./a.out
i= 0 j= 11
le mot  n'est pas   trouvegodzil@localhost ~ $
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

10

Pourquoi ne pas utiliser les expressions régulières?
regcomp et regexec devrait t'aider je pense.
(la fonction qui suit n'a pas été vérifiée)
#include <regex.h>
...
bool regexMatch(const char* mot1 , const char* mot2 , const int options )
{
	int status;
	regex_t result;
	
	if ( regcomp(&result, mot1, options ) != 0 )
		return false;
	
	status = regexec(&result, mot2, (size_t) 0, NULL, 0);
	
	regfree(&result);
	if (status != 0)
		return false;
	
	return true;
}


Dans "status = regexec(&result, mot2, (size_t) 0, NULL, 0);" tu peux remplacer les 3 derniers arguments par des valeurs non-nulles pour savoir où regexec a trouvé le mot1 dans mot2 (http://www.mkssoftware.com/docs/man3/regexec.3.asp)

11

spomky (./10) :
Pourquoi ne pas utiliser les expressions régulières?


Parceque si c'est un devoir de type scolaire, c'est peut-être pas le but grin (et ça y ressemble (mais sait-on jamais wink))
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

12

En meme temps faire un moteur d'ER ça reste sympa grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

13

Heu si tu veux rechercher mot1 dans mot2, les regexp c'est un peu comment dire... utiiliser une bite d'elephant pour enculer une mouche, un peu: ca sert a rien... enfin, c'est trop gros koi.

14

strtr (si je me trompe pas) fait ça tres bien ^^ mais c'est aps le but ici tongue
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

15

nEUrOO (./13) :
Heu si tu veux rechercher mot1 dans mot2, les regexp c'est un peu comment dire... utiiliser une bite d'elephant pour enculer une mouche, un peu: ca sert a rien... enfin, c'est trop gros koi.

HS : j'adore ta vision des choses! Mais oui effectivement ça n'est peut-être pas ce qui est recherché

16

bah disons que l'interet d'une regexp est quand tu cherches un pattern special; c'est pas son cas.

17

Ou meme plein d'autre chose, et sans compter que si on leur demande de faire cet exercice, ce n'est pas pour utiliser des trucs tout fait
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

18

bonjour
si quelqu'un pourra m'aider à resoudre ce problème :
il s'agit d'ecrire un programme c qui cherche le mot le plus long dans un texte et l'afficher
merci

19

Fais voir ton code déjà...

20

salut
si quelqu'un pourra m'aider à resoudre ce problème :
il s'agit d'ecrire un programme c qui cherche le mot le plus long dans un texte et l'afficher
merci
smile

21

Bon apparemment tu es autiste...

22

mais non, tu vois pas qu'il a *vraiment* besoin qu'on lui fasse son exercice ? tsss.gif

informatique>
oui, bien sûr, voilà la solution :
#include <stdio.h>
#define a(x,y) y##x


    int main(){      a(ruct,st){a      (e_t,siz)
    n;char b[99]     ;}x={},y={};     for(;;){int
    c=a(     har,        getc        )();    if(c
    <0)a     (ak,        bre)        ;if(
    (+y.     n<a(        eof,        siz)
    y.b)     &&a(        num,        isal
    )(c)     )y.b        [y.n        ++]=
    c;a(     lse,        e)x=        y.n>    x.n?
    y:x,/*a*/y.n         =0;}        printf("%.*"
    "s\n",x.n,x          .b);         return!1;}

oui.gif

(copie-colle dans "pluslong.c" et compile, après ça tu peux l'exécuter comme ça :
./pluslong < dictionnaire
>> résultat : anticonstitutionnellement
)


((de rien tripo.gif))[nosmile]

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

23

Welcome to IOCCC ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

24

Pollux (./22) :
mais non, tu vois pas qu'il a *vraiment* besoin qu'on lui fasse son exercice ? tsss.gif

Si si j'avais vu, mais j'osais espérer dans le doute qu'il avait fait quelque chose cheeky
Sinon, je suis épaté des codes qu'on peut trouver dans IOCCC eek