C++ urgence svp
Résolu/Fermé
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
4 juil. 2008 à 16:54
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 juil. 2008 à 16:06
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 juil. 2008 à 16:06
31 réponses
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
4 juil. 2008 à 16:59
4 juil. 2008 à 16:59
je ne crois pas mais bon je suis novice en C++ je serai toi je lirai mon fichier texte je le mettrai dans un buffer a chaque retour chariot je lis et j'enregistre.Je compare les caractère avec un / et si jamais c'est pareil alors le rajoute une ligne je copie ce que j'ai lu moins 2 caractère puis j'ajoute ce qu'il y a après le / plus facile a dire qu'a faire je te l'accorde.
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
4 juil. 2008 à 16:56
4 juil. 2008 à 16:56
Bonjour, même avec un bon éditeur de texte, tu peux faire une macro pour ça, ou alors avec sed ou awk ; je te laisse le soin de regarder la documentation de awk qui est un utilitaire assez puissant pour cela !
purplerainman
Messages postés
70
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
7 juillet 2008
3
4 juil. 2008 à 16:57
4 juil. 2008 à 16:57
bien sûr que c'est faisable je t'enverrai peut-être en mp la réponse si j'ai le temps..
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
4 juil. 2008 à 17:00
4 juil. 2008 à 17:00
Salut,
Pourquoi pas ici?
Pourquoi pas ici?
purplerainman
Messages postés
70
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
7 juillet 2008
3
>
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
4 juil. 2008 à 17:07
4 juil. 2008 à 17:07
parce que ça déborde du cadre de l'intervention "vite fait". Il faut expliquer etc. Maintenant si tu veux le faire, je te laisse le soin... D'ailleurs je dois y aller,
a+
a+
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
>
purplerainman
Messages postés
70
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
7 juillet 2008
4 juil. 2008 à 17:10
4 juil. 2008 à 17:10
Ben non pourquoi ça dépasse le cadre de l'intervention? :-)
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
4 juil. 2008 à 17:04
4 juil. 2008 à 17:04
avec vim, si tu tapes exactement (<Esc> représente la touche Échap, et les retours à la ligne représentent Entrée)
/\/
qay0ni
<Esc>PxxXnq@a@a@a@a
etc. pour répéter la macro, tu peux aussi faire 100@a pour la répéter 100 fois p.ex.
/\/
qay0ni
<Esc>PxxXnq@a@a@a@a
etc. pour répéter la macro, tu peux aussi faire 100@a pour la répéter 100 fois p.ex.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
4 juil. 2008 à 17:07
4 juil. 2008 à 17:07
Petite précision : à la fin, pour enregistrer le fichier et quitter, taper ZZ.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 juil. 2008 à 17:24
4 juil. 2008 à 17:24
je ne pense pas.
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 01:22
7 juil. 2008 à 01:22
merçi les gas mais j'ai tjr ce problém, et j'ai pa trouvé de solution
j'ai esséyé avec le code suivant mais ça me donne rien
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
// le constructeur de ifstream permet d'ouvrir un fichier en lecture
ifstream fichier("test.txt");
if (fichier) // ce test échoue si le fichier n'est pas ouvert
{
string ligne; // variable contenant chaque ligne lue
// cette boucle s'arrête dès qu'une erreur de lecture survient
while (getline(fichier,ligne))
{
// afficher la ligne à l'écran
cout << ligne << endl;
// Récupération de la position du slash
size_t pos=ligne.find_first_of("/");
// la sous-chaine de gauche donne le 1er entier
int a=atoi(ligne.substr(0,pos).data());
// la sous-chaine de droite, le second
int b=atoi(ligne.substr(pos+1).data());
// supression du surplus
string sousligne=ligne.substr(0,pos);
// Affichage du résultat
cout << a << " " << b << endl;
}
}
fichier.close();
}
j'ai esséyé avec le code suivant mais ça me donne rien
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
// le constructeur de ifstream permet d'ouvrir un fichier en lecture
ifstream fichier("test.txt");
if (fichier) // ce test échoue si le fichier n'est pas ouvert
{
string ligne; // variable contenant chaque ligne lue
// cette boucle s'arrête dès qu'une erreur de lecture survient
while (getline(fichier,ligne))
{
// afficher la ligne à l'écran
cout << ligne << endl;
// Récupération de la position du slash
size_t pos=ligne.find_first_of("/");
// la sous-chaine de gauche donne le 1er entier
int a=atoi(ligne.substr(0,pos).data());
// la sous-chaine de droite, le second
int b=atoi(ligne.substr(pos+1).data());
// supression du surplus
string sousligne=ligne.substr(0,pos);
// Affichage du résultat
cout << a << " " << b << endl;
}
}
fichier.close();
}
purplerainman
Messages postés
70
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
7 juillet 2008
3
7 juil. 2008 à 01:29
7 juil. 2008 à 01:29
tu comprends pourquoi je te disais que ça ne se ferait pas comme ça? T'as pas daigné m'écouter et me contacter et là tu rames et lundi approche...
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
>
purplerainman
Messages postés
70
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
7 juillet 2008
7 juil. 2008 à 02:28
7 juil. 2008 à 02:28
Youhou! C'est un forum communautaire, on ne fait pas d'aide privée ici. Pourquoi ne pas répondre dans cette discussion? Au contraire il a bien fait de ne pas te contacter. La réponse devrait profiter à d'autres qui pourraient avoir des problèmes similaires.
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 02:13
7 juil. 2008 à 02:13
Si tu regardais mon code avec vim ? Il marche, je l’ai testé.
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 04:58
7 juil. 2008 à 04:58
Bon, je te donne une deuxième méthode avec awk :
1. Télécharge awk pour windows ici : http://gnuwin32.sourceforge.net/packages/gawk.htm
2. Crée un fichier dans le même dossier que ton fichier original, et qui contient ceci (fais un copier-coller)
3. Ouvre la ligne de commande et va dans le répertoire (dossier) de tes deux fichiers : je suppose que tu sais utiliser la commande cd
4. Tape
où Fichier_script est le fichier contenant le code du point 2, fichier_texte est ton fichier de départ, et fichier_sortie est le fichier final.
Bon, là j’espère que tu t’en sortiras. Si tu as des notions de ligne de commande ça devrait te poser aucun problème, et j’ai testé, ça marche.
1. Télécharge awk pour windows ici : http://gnuwin32.sourceforge.net/packages/gawk.htm
2. Crée un fichier dans le même dossier que ton fichier original, et qui contient ceci (fais un copier-coller)
BEGIN { nc=2 FS="/" ; } NF==1 { print } NF>1 { print $1 i = 2 ; while (i <= NF) { print substr($1, 1, length($1) - nc) $i; i++ ; } }
3. Ouvre la ligne de commande et va dans le répertoire (dossier) de tes deux fichiers : je suppose que tu sais utiliser la commande cd
4. Tape
awk -f FICHIER_SCRIPT FICHIER_TEXTE > FICHIER_SORTIE
où Fichier_script est le fichier contenant le code du point 2, fichier_texte est ton fichier de départ, et fichier_sortie est le fichier final.
Bon, là j’espère que tu t’en sortiras. Si tu as des notions de ligne de commande ça devrait te poser aucun problème, et j’ai testé, ça marche.
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 10:39
7 juil. 2008 à 10:39
salut, je vous remercie mais moi je doit travailél avec c++ alor si quelqu'un peux m'aidé, parsque le code que j'esséye d'ecrir doit fonctioné mais je comprend pas ou ça cloche ?!!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 juil. 2008 à 10:55
7 juil. 2008 à 10:55
Salut.
tu ne vérifie pas que find a trouver quelque chose (dans ton cas utilise find plutot que find_first_of).
C'est quoi cet accès à .data() ??
Je ne comprends pas l'intéret de atoi().
tu ne vérifie pas que find a trouver quelque chose (dans ton cas utilise find plutot que find_first_of).
C'est quoi cet accès à .data() ??
Je ne comprends pas l'intéret de atoi().
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 12:40
7 juil. 2008 à 12:40
Bonjour,
j'ai un fichier txt, avec ce code j'obtien pour une chaine comme ça
AFRZSA2-D2
ADDSEA3
le resultat
AFRZSA2 AFRZSD2
ADDSEA3 ADDSEA3 // je veux pas que cette chaine ce double je veux avoir ADDSEA3 ça doit se fair avec une boucle mais j'arrive pas de le faire !!
mon code :
#include <string>
#include <fstream>
#include <iostream>
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);
cout<< sousligne1 << " " << sousligne3 << endl;
}
}
fichier.close();
}
j'ai un fichier txt, avec ce code j'obtien pour une chaine comme ça
AFRZSA2-D2
ADDSEA3
le resultat
AFRZSA2 AFRZSD2
ADDSEA3 ADDSEA3 // je veux pas que cette chaine ce double je veux avoir ADDSEA3 ça doit se fair avec une boucle mais j'arrive pas de le faire !!
mon code :
#include <string>
#include <fstream>
#include <iostream>
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);
cout<< sousligne1 << " " << sousligne3 << endl;
}
}
fichier.close();
}
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 12:41
7 juil. 2008 à 12:41
svp si ya quelqu'un qui pourrai m'aidé pour fair la boucle parsque je bloque...
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 juil. 2008 à 14:00
7 juil. 2008 à 14:00
tu n'as qu'à lire ce que je t'ai écris !
find et pas find_first_of
vérifie le résultat de ton find(), car si tu as des lignes sans tiret, c'est normal que ça foire.
au lieu de rabacher "aidez moi" réfléchi un peu à ce que tu fais.
find et pas find_first_of
vérifie le résultat de ton find(), car si tu as des lignes sans tiret, c'est normal que ça foire.
au lieu de rabacher "aidez moi" réfléchi un peu à ce que tu fais.
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 12:45
7 juil. 2008 à 12:45
Salut yanlou, inspire toi de mon code avec awk, parce que là, tu brûles en C.
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 12:49
7 juil. 2008 à 12:49
salut, bein tu sais mnt je bloque totalment !!!
si ta une solution alor à l'aide !!
si ta une solution alor à l'aide !!
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 12:53
7 juil. 2008 à 12:53
indice : si ça ne trouve pas le tiret, find_first_of("-") devrait renvoyer -1. Teste cette valeur.
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 13:10
7 juil. 2008 à 13:10
je trouve tjr pa la solution, ya quelqu'un qui peux m'aidé !!!
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 13:40
7 juil. 2008 à 13:40
Bonjour.
j'ai rajouter ce test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
cout<< sousligne1 << " " << sousligne3 << endl;
}
mais tjr j'ai le meme resultat
j'ai rajouter ce test :
if (sousligne1 == sousligne3) {
cout << sousligne1 << endl;
}
else {
cout<< sousligne1 << " " << sousligne3 << endl;
}
mais tjr j'ai le meme resultat
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 13:44
7 juil. 2008 à 13:44
Bonsoir Yanlou, ça serait une idée, mais sousligne1 et sousligne3 sont des pointeurs. Pour comparer les chaînes de caractères utilise
if (strcmp(sousligne1, sousligne3)) {…}
if (strcmp(sousligne1, sousligne3)) {…}
yanlou
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
13
7 juil. 2008 à 13:46
7 juil. 2008 à 13:46
j'ai mis if (strcmp(sousligne1, sousligne3)) {…} est ça m'adonné l'erreur suivante :
F:\stage\slach.cpp(26) : error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
F:\stage\slach.cpp(26) : error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
7 juil. 2008 à 13:48
7 juil. 2008 à 13:48
ah, ce sont des objets string… pardon dans ce cas :
if (sousligne1.compare(sousligne3)) {
//… si pas égales
}
else {
//… si égales
}
if (sousligne1.compare(sousligne3)) {
//… si pas égales
}
else {
//… si égales
}
4 juil. 2008 à 17:03
http://www.iut-orsay.fr/dptinfo/Pedagogie/Roger.Astier/divers/clString.html