Aller au contenu

Recherche et tri de caractères en C


pacpis

Messages recommandés

Ta variable trouve ne sert à rien.
oui, mais non

s'il veut afficher le resultat apres le while, il devra refaire un test de comparaison sur les 2 chaines de caracteres (couteux en temps surtout sur des chars)

Il suffit de comparer index_tab et nbr_mot et de mettre un break dans le while, ce qui évitera des comparaisons justement. Sans compter que j'ai un doute sur le fait que index_tab est incrémenté deux fois.

je suis d'accord pour index_tab incremente 2 fois

la partie entre {} est à supprimer

while (strcmp(tab[index_tab++], mot) && index_tab<nbr_mot);
{
 if(tab[index_tab]==mot)
  trouve=1;
  else {
	 index_tab++; }
}
if(trouve==1)
  printf("Le mot cherché est à la ligne %d", index_tab);

il faudrait un truc (à tester) :

index_tab = 0;
while ( index_tab<nbr_mot)
  if strcmp(tab[index_tab++], mot) 
  {
	  printf("Le mot cherché est à la ligne %d", index_tab);
	  break;
  }

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 69
  • Créé
  • Dernière réponse
  • 2 semaines après...

Refaire le code n'est pas une mauvaise idée sachant que ton code ne fait pas ce que tu veux faire. Utilisation d'un char** pour stocker tes strings, essayer de faire des fonctions pour structurer tout ca (par exemple, une qui rempli et une qui cherche...).

Enfin voila bonne chance :eeek2:

Mon problème se complique un peu, on me demande de gerer tout les quatres fonctions dans un programme principal à l'aide d'un menu :ouioui: Quelqu'un a -t-il une idée qui pourai m'aider? ;)

Lien vers le commentaire
Partager sur d’autres sites

Je te donne un exemple de switch case :

int choix = 0;

/*
* modification de choix comme, par exemple, lui donner la valeur qu'a entré l'utilisateur au clavier.
*/

switch
{
 case 1 : printf("vous avez entré 1\n");
 break;
 case 2 : printf("vous avez entré 2\n");
 break;
 case 3 : printf("vous avez entré 3\n");
 break;

 default : printf("vous avez entré le choix par défaut (0)\n");
}

dans chacun des case au lieu d'appeler la fonction printf(), tu peux appeler tes propres fonctions (ou même carrément les deux) :francais:

Lien vers le commentaire
Partager sur d’autres sites

Merci encore Lorinc, je vais suis entrain de faire les fonctions, puis je ferai le programme principal avec le switch case; ensuite je vous tiens au courant.

P.S : Savez vous ce qui provoque les erreurs de segmentation en C(sous Linux)? :cartonrouge:

J'installe devC++ sous Windows pour tester car ca m'enerve ces erreurs.

Edit:

dans chacun des case au lieu d'appeler la fonction printf(), tu peux appeler tes propres fonctions (ou même carrément les deux)

J'ai une idée, puis -je mettre toute les fonctions dans le meme programme en gérant le tout avec switch(Je ne sais pas si c'est possible ou non)?? ;)

Lien vers le commentaire
Partager sur d’autres sites

c'est quand tu écris à un endroit où tu n'a pas le droit d'écrire. Par exemple, quand tu débordes d'un tableau :

char tab[5];
int i;
for(i = 0; i < 10; i++)
 tab[i] = i;

ou bien plus généralement avec des pointeurs;

char * p; /* p pointe vers une adresse au hasard */
*p = 'c' /* erreur ! *p n'est pas une adresse valide */

on vois très bien ce genre de chose avec un debugueur. Essayes ddd ou bien kdbg sous linux ;)

Lien vers le commentaire
Partager sur d’autres sites

je suis entrain de travailer sous Windows avec DevC++, car mon linux ne voit pas ma nouvelle carte graphique et je n'ai pas le temps de configurer pour le moment car je dois terminer mon exo pour demain. merci je vais prendre note et essayer des remedier les erreurs de segmentation ;)

j'ai édité mon message précédent, personne n'a de reponse à cette question??

Lien vers le commentaire
Partager sur d’autres sites

Ben rien t'empeche de mettre tout dans le même fichier .c mais c'est moche ;)

Le mieux c'est de faire un .h ou tu mets le prototype de tes fonctions, les headers que tu utilise, les structures de donnée que tu utilises, un .c avec tes fonctions et .c avec ton main...

Mais comme je le dis rien ne t'empeche de faire tout dans le même fichier :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Ben rien t'empeche de mettre tout dans le même fichier .c mais c'est moche :zarb:

Le mieux c'est de faire un .h ou tu mets le prototype de tes fonctions, les headers que tu utilise, les structures de donnée que tu utilises, un .c avec tes fonctions et .c avec ton main...

Mais comme je le dis rien ne t'empeche de faire tout dans le même fichier :mdr:

Ce que tu dis la est un peu trop compliqué pour moi, je crois que je vais faire le tout dans un meme fichier car je n'ai plus assez de temps :roll::roll:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...