Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2283 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  recherche d'un mot dans une chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recherche d'un mot dans une chaine

n°1503396
Meloo
Posté le 15-01-2007 à 22:37:13  profilanswer
 

Bonsoir,
J'ai un petit programme à faire en C++ qui n'est pas très dur de prime abors. Le seul probleme est que je n'ai pas le droit d'utiliser de fonction de la classe string... Et la tout se complique  :sweat:  
Explication du programme :  
On lance le programme avec un parametre (un mot).
Le programme demande à l'utilisateur de saisir une phrase (sur plusieurs lignes).
On recupere chaque ligne une par une jusqu'a une ligne X qui contiendra le mot passé en parametre.
 
Bref, sommes toutes un exercice sans grande difficulté... Si on avait le droit aux string... Parce que la, je n'ai aucune idée de la facon de comparer mon mot avec ma ligne, puis d'arreter la saisie s'il est égal... Quelqu'un aurait-il une idée ???
Merci d'avance, et bonne soirée :hello:  
Meloo

mood
Publicité
Posté le 15-01-2007 à 22:37:13  profilanswer
 

n°1503477
Taz
bisounours-codeur
Posté le 16-01-2007 à 09:59:21  profilanswer
 

Ton prof qui a décrété le pas le droit à la classe string est un sinistre idiot.

n°1503484
franceso
Posté le 16-01-2007 à 10:08:46  profilanswer
 

...sauf si le but est justement de reprogrammer des fonctionnalités semblables à celles de std::string :spamafote:
 
Meloo: que devez-vous utiliser ? qu'avez-vous vu en cours ?


---------------
TriScale innov
n°1503522
Joel F
Real men use unique_ptr
Posté le 16-01-2007 à 10:57:37  profilanswer
 

franceso a écrit :

sauf si le but est justement de reprogrammer des fonctionnalités semblables à celles de std::string


 
Ce qui n'a un iteret pédagogique que au sein d'un cours d'ALGORITHMIE et non de C++ ...
string, comme vector, devraient etre enseignés comme faisant partis des types atomiques du  
langage afin d'eviter ces kilometres d'horreur que sont l'utilsiation des pointeurs pour gérer tableaux  
et chaine de caracteres en C++.

n°1503538
franceso
Posté le 16-01-2007 à 11:18:11  profilanswer
 

Joel F a écrit :

Ce qui n'a un iteret pédagogique que au sein d'un cours d'ALGORITHMIE et non de C++ ...

J'ai maheureusement l'impression que de plus en plus de gens apprennent l'algorithmie en faisant du C++ (ou plutôt un truc qu'on pourrait appeler C+, qui ressemble à du C dans lequel on remplace printf par cout)


---------------
TriScale innov
n°1503569
Joel F
Real men use unique_ptr
Posté le 16-01-2007 à 12:09:57  profilanswer
 

franceso a écrit :

J'ai maheureusement l'impression que de plus en plus de gens apprennent l'algorithmie en faisant du C++ (ou plutôt un truc qu'on pourrait appeler C+, qui ressemble à du C dans lequel on remplace printf par cout)


 
Je préconise le retour au supllice du pal pour ces gens là :o

n°1503606
straffo
Posté le 16-01-2007 à 13:28:03  profilanswer
 

Joel F a écrit :

Je préconise le retour au supllice du pal pour ces gens là :o


 
On le plante dans leur Cin ?


Message édité par straffo le 16-01-2007 à 13:28:27
n°1503608
Elmoricq
Modérateur
Posté le 16-01-2007 à 13:33:02  profilanswer
 

Un cours d'algorithmie en plus d'un cours de C++, ça a un std::cout.
 
Sinon, pour répondre à la question, il y a la fonction standard strstr() qui peut t'aider. Mais je plussoie, c'est une stupidité que de devoir utiliser des fonctions C pour remplacer des trucs courants en C++.

n°1503625
capitainei​gloo
Posté le 16-01-2007 à 13:53:15  profilanswer
 

bah c'est des cours donnés par d'anciens profs de C qui n'ont jamais mis les pieds dans une entreprise. On leur a appris comme ca donc c'est comme ca qu'il l'enseigne

n°1503675
franceso
Posté le 16-01-2007 à 15:17:28  profilanswer
 

capitaineigloo a écrit :

bah c'est des cours donnés par d'anciens profs de C qui n'ont jamais mis les pieds dans une entreprise. On leur a appris comme ca donc c'est comme ca qu'il l'enseigne

 :non: Dans mon école, il s'agit d'un choix raisonné, l'objectif étant de permettre aux élèves de « s'affranchir de la syntaxe contraignante du C pour pouvoir se concentrer sur les problèmes d'algorythmie ». Finalement, les élèves utilisent new / delete au lieu de malloc / free, mais ne connaissent pas la STL :/
 
Quand je repasse derrière pour leur expliquer que non, ils ne connaissent pas vraiment le C++ et que oui, std::vector<int> est plus sûr que int*, c'est un peu galère...


---------------
TriScale innov
mood
Publicité
Posté le 16-01-2007 à 15:17:28  profilanswer
 

n°1503799
Meloo
Posté le 16-01-2007 à 17:44:04  profilanswer
 

Bonjour ^^
En fait, j'ai fait du C++ et de l'algo pendant un an l'an dernier (donc on a appris les bases quoi...).
La on refais du systeme, et ils nous ont donné des exercices de revisions... Donc on est sencé savoir le faire :S.
 

Citation :

Meloo: que devez-vous utiliser ? qu'avez-vous vu en cours ?


On a vu les tableaux, les pointeurs, allocation dynamique, les strings^^, les arbres, les listes chainées, les classes etc etc...
 
 
Pour strstr() ou même pour la fonction strlen() dans le man http://man.developpez.com/man3/strstr.3.php, elles sont écrit appartenant à la classe string  

Code :
  1. SYNOPSIS
  2. #include <string.h>
  3. char *strstr (const char *meule_de_foin, const char *aiguille);


Donc ca veut dire que je ne peux pas les utiliser ? :S Ou bien ca veut dire que ce sont des fonctions qui sont reprises dans la classe string ??? (parce que bon, si strlen ne fonctionne pas, il faut encore faire une boucle pour connaitre la taille du mot recherché etc etc :S)
 
En tout cas, merci de vos réponses  :pt1cable:  
bonne soirée
meloo

n°1503804
Elmoricq
Modérateur
Posté le 16-01-2007 à 17:49:04  profilanswer
 

Non, pas la "classe" string, ces fonctions sont définies dans l'en-tête string.h (qui définit une partie de la libc).

 

Tu peux les utiliser, c'est standard (ed : mais ça reste très laid [:manust])


Message édité par Elmoricq le 16-01-2007 à 17:52:55
n°1503816
Meloo
Posté le 16-01-2007 à 18:17:25  profilanswer
 

Héhé, bon ok c'est laid... Donc si j'ai le droit à strstr(), strlen(), strcpy()..ca me donne le petit programme :

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. using namespace std;
  5. int main(int argc, char **argv){
  6. int i, nbCarSais, nbCarTotal;
  7. char motDeFin[80];
  8. char bufferLigne[80]; // Une ligne ne peut etre de taille superieure a 80 caracteres  
  9. char buffer[1000];
  10. bool motTrouve = false;
  11. bool carTrouve = false;
  12. if (argc !=2) {
  13.  cerr << "Veillez écrire un argument." << endl;
  14.  exit (1);
  15. }
  16. i=0;
  17. // Si strcat interdit
  18. // while (argv[1][i] != NULL){
  19. //  motDeFin[i] = argv[1][i++];
  20. // }
  21. strcpy(motDeFin, argv[1]);
  22. // motDeFin[i]='\0';
  23. cout << "Le mot de fin est : " << motDeFin << endl;
  24. cout << endl << endl << "Veuillez saisir une phrase." << endl;
  25. nbCarTotal=nbCarSais=0;
  26. while (!motTrouve){
  27.  cin.getline(bufferLigne,80);
  28.  if (strstr(bufferLigne, motDeFin)!=NULL)
  29.   motTrouve=true;
  30.  nbCarSais = strlen(bufferLigne);
  31.  for (i=0; i<nbCarSais; i++) {
  32.   buffer[nbCarTotal]=bufferLigne[i];
  33.   bufferLigne[i]='.';
  34.   nbCarTotal++;
  35.  }
  36. // strcat(buffer,bufferLigne);
  37.  buffer[nbCarTotal]='\n';
  38.  nbCarTotal++;
  39. }
  40. buffer[nbCarTotal]=NULL;
  41. cout << "La phrase copiée est : " << endl << buffer ;
  42. return 0;
  43. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  recherche d'un mot dans une chaine

 

Sujets relatifs
Faire une seule recherche de 2 types de chaine de caractère[resolu] [batch] recherche chaine avec findstr
recherche dichotomique sur chaîne de caractères[Algo] Recherche de sous chaîne
recherche dans une chaine de caractères. un peu d'aide SVPrecherche rang d un caractere dans chaine
recherche négative d'une chaîne de caractères sous unixAller à la derniere ligne d'un fichier texte et recherche chaine
[php] recherche d'un mot 'exact' ds une chainerecherche de chaine de caractere
Plus de sujets relatifs à : recherche d'un mot dans une chaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR