Urgence SVP [Résolu]

Signaler
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
salut,
 j'ai u fichier txt qui contient des chaine de caracté, exemple :

CDFX = RFRPAD7
CDFX = RFRPAD8/A8
CDFX = CDXRTD3/A3
CDFX = FGDTRE2
CDFX = ATZRSD5/A5

je veux savoir si il existe une fonction en c++ qui me permet  d'avoir le resultat suivant:

CDFX = RFRPAD7
CDFX = RFRPAD8
CDFX = RFRPAA8
CDFX = CDXRTD3/A3
CDFX = CDXRTA3
CDFX = FGDTRE2
CDFX = ATZRSD5/A5
CDFX = ATZRSA5

maximus

11 réponses

Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Comme je te l'ai dit en MP, il n'y a une fonction unique mais une combinaison de fonctions.
Inspires-toi du code que j'ai déjà posté en réponse à ta question: il y a juste 2 ou 3 choses à arranger.
Un indice: il faut également utilisé les fonctions find_first_of() et substr().

Aller, un peu de courage, ce n'est pas si compliqué...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Re,
Bon, tu n'es pas loin...
Tu as détecté le slash, donc tu sais s'il est là ou pas. Ensuite, ce que tu veux, c'est reprendre la chaine de gauche et remplacer les 2 derniers caractères:

string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);

Avec ça, tu devrais t'en sortir...

NB: Ne le prend pas mal...mais tu as un gros problème de réflexion quand même. Ou bien une grosse flemme...Mais bon, dans les 2 cas, il vaut mieux trouver la solution par soi-même (c'est plus gratifiant, et tu comprends mieux) plutôt que d'attendre la soluce sur un forum...

@+

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Si on a un double, on supprime le 2e donc.
Dit autrement: si sousligne1 est identique à sousligne2, on ne garde que sousligne1 (ou la 2, suivant le cas).

C'est tout ce que je dirais. A toi de trouver les fonctions adéquates...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Hum....presque, mais c'est pas tout à fait ça mais tu n'a pas l'air de faire le moindre effort...
Je te renvoie à ton nouveau topic.

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

maximus #include <string>
#include <fstream>
#include
using namespace std;
int main()
{
    ifstream fichier("slash.txt");


    if (fichier)
    {
        string ligne;


       
        while (getline(fichier,ligne))
        {


   size_t pos=ligne.find_first_of("-");


    string sousligne1=ligne.substr(0,pos);
     
    string sousligne2=ligne.substr(pos+1);


    string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);
  
    if (sousligne1.compare(sousligne2))
    {
    cout<< sousligne1 << " " << sousligne3 << endl;
    }
    else
    {
    cout << ligne << endl;
    }
  }
 }


    fichier.close();
}
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

salut, désolé j'ai fais une erreur tot aleur.
 j'ai u fichier txt qui contient des chaine de caracté, exemple :

CDFX = RFRPAD7
CDFX = RFRPAD8/A8
CDFX = CDXRTD3/A3
CDFX = FGDTRE2
CDFX = ATZRSD5/A5

je veux savoir si il existe une fonction en c++ qui me permet  d'avoir le resultat suivant:

CDFX = RFRPAD7
CDFX = RFRPAD8
CDFX = RFRPAA8
CDFX = CDXRTD3
CDFX = CDXRTA3
CDFX = FGDTRE2
CDFX = ATZRSD5
CDFX = ATZRSA5

maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi, je vais esséyé :).
maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

salut,
j'ai u fichier txt qui contient des chaine de caracté, exemple :

RFRPAD7
RFRPAD8/A8
CDXRTD3/A3
FGDTRE2
ATZRSD5/A5

bon voila le code que j'ai mais ça donne pas le resultat que je veux obtenir.
ça donne un truc commça :

RFRPAD7 RFRPAD7
RFRPAD8 A8
CDXRTD3 A3
FGDTRE2 FGDTRE2
ATZRSD5 A5

maximus #include <string>
#include <fstream>
#include
using namespace std;
int main()
{
 
    ifstream fichier("slash.txt");    if (fichier)
    {
        string ligne;       
        while (getline(fichier,ligne))
        {
               
            size_t pos=ligne.find_first_of("-");
            string sousligne1=ligne.substr(0,pos);
   string sousligne2=ligne.substr(pos+1);           
   cout<< sousligne1 << " " << sousligne2 << endl;        }
    }    fichier.close();
}

mais sais pas ce que je veux avoir comme resultat
le resultat que je cherche c'esyt ça :

RFRPAD7
RFRPAD8
RFRPAA8
CDXRTD3
CDXRTA3
FGDTRE2
ATZRSD5
ATZRSA5
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi, mais
exemple

RFRPAD7
RFRPAD8/A8

avec le programme que vous m'avez fillé, j'obtient

RFRPAD7 RFRPAD7  // ça se double
RFRPAD8 RFRPAA8

le resultat que je doit avoir c'est le suivant :

RFRPAD7
RFRPAD8 RFRPAA8
maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

ok, je pense que j'ai compris. 

maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

j'ai esséyé avec ce code mais ça me donne tjr la meme chose

#include <string>
#include <fstream>
#include
using namespace std;
int main()
{
    ifstream fichier("slash.txt");


    if (fichier)
    {
        string ligne;


       
        while (getline(fichier,ligne))
        {


   size_t pos=ligne.find_first_of("-");


    string sousligne1=ligne.substr(0,pos);


    string sousligne2=ligne.substr(pos+1);


    string sousligne3=sousligne1.substr(0,sousligne1.size()-2).append(sousligne2);
   
  
    if (sousligne1.compare(sousligne3)) 
    {
     cout<< sousligne1 << " " << sousligne3 << endl;
    }


    else
    {
      cout << ligne << endl;
    }
   
        }
    }


    fichier.close();
}




maximus