Aller au contenu

Recherche et tri de caractères en C


pacpis

Messages recommandés

Posté(e)
  woodystable a dit :
  mogwai93 a dit :
  woodystable a dit :
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;
  }

  • Réponses 69
  • Créé
  • Dernière réponse
Posté(e)

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 :cartonrouge:

  • 2 semaines après...
Posté(e)
  Soulfly_tribe90 a dit :

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? ;)

Posté(e)
  Quarky a dit :

Une idée en or : travailler ;)

Je n'ai pas besoin de réponse idiote comme celle-ci, je ne demande pas le code mais juste des idées qui pouraient m'aider, donc :ouioui: (en attendant) :eeek2:

Posté(e)
  Soulfly_tribe90 a dit :

Ben je viens de t'en donner une lol

Pour faire des menus en mode console --> switch case...

Merci pour ton aide, j'avais entendu parler de switch case, mais je croyais qu'il y aurait plus rapide et plus facile. Donc je vais faire avec. ;)

Posté(e)

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:

Posté(e)

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:

  Citation
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)?? ;)

Posté(e)

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 ;)

Posté(e)

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??

Posté(e)
  Soulfly_tribe90 a dit :

Ta question je la comprend pas en fait : mettre toutes tes fonctions dans le même programme --> dans le même fichier .c ou se situe ton main ?

Oui c'est ce que je veux, mettre tout dans le meme fichier .c

Posté(e)

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:

Posté(e)
  Soulfly_tribe90 a dit :

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:

Posté(e)
  lorinc a dit :

c'est pas grave pour le moment. Tu auras largement le temps d'apprendre à découper tes projets en plusieurs fichiers plus tard :yes:

Exactement :transpi:

Une fois appris on ne fait que ca lol --> bientôt il va peut être nous pondre des makefiles :zarb:

Archivé

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

×
×
  • Créer...