Aide C++ : Structure & Fichier
Louise
-
10fer -
10fer -
Bonjour tout le monde! Je suis une débutante en programmation C++ et j'ai un exercice à faire qui est assez difficile pour moi. Voici l'énoncé de cela:
Concevoir un programme en C++ qui lit le fichier dinfo.txt , réalise un tri en ordre alphabétique sur le champ nom et sauvegarde le résultat dans un autre fichier appelé dinfo_apres_tri.txt . On suppose que le contenu du fichier dinfo.txt ne dépasse jamais 10 000 lignes.
En fait, le fichier dinfo.txt est une structure qui comporte une colonne de Nom, de Prénom, de Type, de Type d'appareil, de #extension téléphonique, de Bureau, de #prise, de #inventaire, d'adresse physique et d'adresse IP. Chaque colonne est séparée par un espace ou une tabulation, tous les champs sont remplis et ce fichier est sous format texte.
Voici ce que j'ai fait jusqu'à maintentant, mais je suis bloquée et je n'arrive pas à poursuivre... :
#include <iostream>
#include <fstream>
using std::cout;
using std::ifstream;
struct Info {
char Nom [30] ;
} ;
Lire_element (ifstream Fichier) {
Info Etudiant ;
Fichier >> Etudiant.Nom ;
Return Etudiant ;
}
main () {
ifstream Lecture ;
Info Membre ;
Lecture.open("dinfo.txt") ;
Membre = Lire_element (Lecture) ;
while ( ! Lecture.eof() ) {
for (i=0 ; i<strlen(Nom) ; i++) {
J'espère tellement que vous pourriez m'aider à me débloquer. Merci beaucoup!
Concevoir un programme en C++ qui lit le fichier dinfo.txt , réalise un tri en ordre alphabétique sur le champ nom et sauvegarde le résultat dans un autre fichier appelé dinfo_apres_tri.txt . On suppose que le contenu du fichier dinfo.txt ne dépasse jamais 10 000 lignes.
En fait, le fichier dinfo.txt est une structure qui comporte une colonne de Nom, de Prénom, de Type, de Type d'appareil, de #extension téléphonique, de Bureau, de #prise, de #inventaire, d'adresse physique et d'adresse IP. Chaque colonne est séparée par un espace ou une tabulation, tous les champs sont remplis et ce fichier est sous format texte.
Voici ce que j'ai fait jusqu'à maintentant, mais je suis bloquée et je n'arrive pas à poursuivre... :
#include <iostream>
#include <fstream>
using std::cout;
using std::ifstream;
struct Info {
char Nom [30] ;
} ;
Lire_element (ifstream Fichier) {
Info Etudiant ;
Fichier >> Etudiant.Nom ;
Return Etudiant ;
}
main () {
ifstream Lecture ;
Info Membre ;
Lecture.open("dinfo.txt") ;
Membre = Lire_element (Lecture) ;
while ( ! Lecture.eof() ) {
for (i=0 ; i<strlen(Nom) ; i++) {
J'espère tellement que vous pourriez m'aider à me débloquer. Merci beaucoup!
44 réponses
Je suis sous Windows, chez moi. Le fichier texte n'est pas dans mon ordi, c'est gérer par l'école. Moi, j'utilise SSH Secure Shell Arabica LabUnix qui est géré par l'école alors je n'ai aucune idée. Puisque vous me dites que le programme fonctionne... C'est bien du deuxieme que vous me parliez ou du premier (avec le tri alphabétique)?... Si c'est le premier, je vous fais confiance et je vais le laisser comme ça et ne plus vous faire perdre du temps... Si non, je ne sais pas quoi faire...
Oui c'est le deuxième. Puisque tu fais du ssh je suppose que ssh secure est un peu comme putty, une sorte de console qui se loggue en ssh. Si c'est le cas, place toi dans le répertoire de ton programme, tape ls, donne moi le résultat, tape la commande que tu lances pour éxécuter, et donne moi le résultat.
Bonne chance
Bonne chance
Comment puis-je savoir dans quel répertoire se trouve mon programme pour me placer dedans? (Quand j'ouvre SSH Secure Shell, je loggue sous un code d'utilisateur donné par l'école en tant qu'étudiante... Donc, j'entre automatiquement dans mon dossier à moi et je fais mon programme à partir de là, avec la commande emacs...)
Utilise la commande ls pour voir le contenu du répertoire courant. Donne moi le résultat de cette commande.
Ensuite donne moi les lignes que tu tapes pour compiler et exécuter le programme et leur résultat.
Exemple :
Bonne chance
Ensuite donne moi les lignes que tu tapes pour compiler et exécuter le programme et leur résultat.
Exemple :
(mando@silk) (~) $ ls plop.c plop (mando@silk) (~) $ g++ -Wall -W plop.cpp (mando@silk) (~) $ ls plop.c plop a.out (mando@silk) (~) $ ./a.out plop aaa bbb ccccc ddd
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon... test.cpp c'est notre deuxieme programme pour tester la première (celle du tri alphabétique)...
arabica(hk691353)[1] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[2] /usagers/hk691353
% g++ test.cpp -o test.exe
arabica(hk691353)[3] /usagers/hk691353 % test.exe
usage : test.exe filename
arabica(hk691353)[4] /usagers/hk691353
arabica(hk691353)[1] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[2] /usagers/hk691353
% g++ test.cpp -o test.exe
arabica(hk691353)[3] /usagers/hk691353 % test.exe
usage : test.exe filename
arabica(hk691353)[4] /usagers/hk691353
arabica(hk691353)[3] /usagers/hk691353 % test.exe usage : test.exe filename
Quand je lis ça je me dis que tu n'as même pas essayé de comprendre le programme que je t'ai préparé et quelque part ça me fatigue. D'autant plus que je t'ai explicitement dit qu'il fallait mettre derriere le nom de l'exécutable le nom du fichier à lire.
Moi je veux bien t'aider mais fais un effort parce que je ne ferai pas ton travail à ta place, je pense que tu peux le comprendre...
Bonne chance
J'suis désolée si j'ai l'ai bête mais j'essaie vraiment de m'appliquer dans tout ça... Pour la dernière fois, j'ai mal lu, désolé... Bon j'ai refait ce que vous m'aviez dit mais je vois que le fichier que je veux lire (dinfo_apres_tri.txt) n'est même pas présent dans mon répertoire courant...
arabica(hk691353)[1] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[2] /usagers/hk691353 % g++ test.cpp -o test.exe
arabica(hk691353)[3] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[4] /usagers/hk691353
% dinfo_apres_tri.txt test.cpp
dinfo_apres_tri.txt: Permission refusée.
arabica(hk691353)[5] /usagers/hk691353 %
arabica(hk691353)[1] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[2] /usagers/hk691353 % g++ test.cpp -o test.exe
arabica(hk691353)[3] /usagers/hk691353 % ls
#d65.cpp# d82.cpp repertoire.txt
#d66.cpp# d82.cpp~ sec.cpp
#d93.cpp# d82.exe* sec.cpp~
#fibo.cpp# d83.cpp sec.tpp*
#hk691353# d83.cpp~ temp
#test3.cpp# d83.exe* test/
#TP1a.cpp# d91.cpp test.cpp
#tp1c.cpp# d91.cpp~ test.cpp~
#tp333.cpp# d91.exe* test.exe*
add.cpp d92.cpp test.g*
add.cpp~ d92.cpp~ test.gg*
add.exe* d92.exe* test1.cpp
d101.cpp demo01/ test1.cpp~
d101.cpp~ demo02/ test1.gg*
d101.exe* demo52.cpp test2.cpp
d102.cpp demo52.cpp~ test2.cpp~
d102.cpp~ demo52.exe* test2.g*
d102.exe* demo52.tpp~ test2.gg*
d103.cpp demo522.cpp test2.ggg*
d103.cpp~ demo522.cpp~ test3.cpp
d104.cpp demo522.exe* test3.cpp~
d104.cpp~ demo53.cpp test3.gg*
d1044.cpp demo53.cpp~ tp/
d1044.cpp~ demo53.exe* tp0
d64.cpp demo53.tpp~ tp1
d64.exe* demo54.cpp tp1~
d65.cpp demo54.exe* TP1a.cpp
d65.cpp~ demo61.cpp tp1a.cpp
d65.exe* demo61.cpp~ TP1a.cpp~
d655.cpp demo61.exe* tp1a.cpp~
d655.cpp~ demo61.tpp~ TP1a.exe*
d655.exe* demo62.cpp tp1a.exe*
d66.cpp demo62.cpp~ tp1b.cpp
d66.cpp~ demo62.exe* tp1b.cpp~
d66.exe* demo622.cpp tp1b.exe*
d71.cpp demo622.cpp~ tp1c.cpp
d71.cpp~ demo622.exe* tp1c.cpp~
d71.exe* demo63.cpp tp1c.exe*
d711.cpp demo63.cpp~ tp1d.cpp
d711.cpp~ demo63.exe* tp1d.cpp~
d711.exe* dinfo_apres_tri.txt tp1d.exe*
d72.cpp essai tp2a.c~
d72.cpp~ essai.cpp tp2a.cpp
d72.exe* essai.exe* tp2a.exe*
d73.cpp essai~ tp2b.cpp
d73.cpp~ fibo.cpp tp2b.cpp~
d73.exe* fibo.cpp~ tp2b.exe*
d74.cpp fibo.exe* tp2c.cpp
d74.cpp~ hymne_canada.txt tp2c.cpp~
d74.exe* inf3172/ tp2c.exe*
d75.cpp iostream.h~ tp3
d75.cpp~ nb.tpp tp3.cpp
d75.exe* nb.tpp~ tp3.cpp~
d81.cpp Prog1.cpp tp3.exe*
d81.cpp~ Prog1.cpp~ tp4/
d81.exe* Prog1.exe* tp9
arabica(hk691353)[4] /usagers/hk691353
% dinfo_apres_tri.txt test.cpp
dinfo_apres_tri.txt: Permission refusée.
arabica(hk691353)[5] /usagers/hk691353 %
La commande à taper est dans ton cas
Et il faut que se fichier soit dans le même répertoire que plop.exe sinon ça ne marchera pas.
./test.exe dinfo_apres_tri.txt
Et il faut que se fichier soit dans le même répertoire que plop.exe sinon ça ne marchera pas.
Je viens de faire la commande que vous m'aviez dites pour que le fichier soit dans le même répertoire que test... Cependant, quand je tape la commande pour pouvoir lire dinfo_apres_tri.txt, c'est écrit permission refusée!
....
....
Ah c'est bizarre. Peux tu faire un
Il se peut que les droits en lectures soient refusés.
Auquel cas fait un :
Bonne chance
ls -l dinfo_apres_tri.txt
Il se peut que les droits en lectures soient refusés.
Auquel cas fait un :
chmod +r dinfo_apres_tri.txt
Bonne chance
Non les droits en lectures sont bien là...Mais est-ce que ça se pourrait que le premier programme de tri en ordre alphabétique ne fonctionne pas bien c'est pour cela que mon fichier dinfo_apres_tri.txt est vide (parce que je vois un zéro «0» pour la taille du fichier...) ?!
% ls -l dinfo_apres_tri.txt
-rw------- 1 hk691353 etudiant 0 avr 26 07:41 dinfo_apres_tri.txt
% ls -l dinfo_apres_tri.txt
-rw------- 1 hk691353 etudiant 0 avr 26 07:41 dinfo_apres_tri.txt
Visiblement ton fichier est effectivement vide. Tu peux afficher son contenu en tapant :
Je suis presque sûre que tu te prends un permission denied parce que tu tentes d'éxecuter ce fichier. Par exemple, ceci (cf un de tes posts) n'a aucun sens :
Cela voudrait dire que tu exécutes la commande dinfo_apres_tri.txt avec pour paramètre test.cpp.
En fait, plus on avance et moins je comprends ta démarche. Si tu veux juste regarder le contenu d'un fichier, tu peux te contenter de l'ouvrir avec un editeur texte (nano, vim, emacs...). Moi je pensais que tu voulais débugger ton premier programme et mettre dans ta boucle un affichage pour voir ce que faisait ton programme au fur et à mesure... Du coup je ne comprends pas pourquoi tu fais un programme à part.
Je voudrais pas paraître méchante mais je pense qu'il est vraiment urgent que tu demandes de l'aide à ton prof ou que tu regardes un tutoriel qui reprend les bases du C++, car sinon tu n'en t'en sortira jamais...
Je te conseille donc de jeter un oeil aux excellents tutoriels suivants :
https://c.developpez.com/cours/
https://openclassrooms.com/fr/courses
Même si tu dis ne pas l'avoir en cours je t'invite aussi à regarder comment marche la STL car au risque d'insister c'est vraiment du masoschisme de pas utiliser les maps... A défaut de te servir pour cet exercice ça te servira sans doute plus tard si tu es amenée à programmer en C++...
Bonne chance
more dinfo_apres_tri.txt
Je suis presque sûre que tu te prends un permission denied parce que tu tentes d'éxecuter ce fichier. Par exemple, ceci (cf un de tes posts) n'a aucun sens :
% dinfo_apres_tri.txt test.cpp dinfo_apres_tri.txt: Permission refusée.
Cela voudrait dire que tu exécutes la commande dinfo_apres_tri.txt avec pour paramètre test.cpp.
En fait, plus on avance et moins je comprends ta démarche. Si tu veux juste regarder le contenu d'un fichier, tu peux te contenter de l'ouvrir avec un editeur texte (nano, vim, emacs...). Moi je pensais que tu voulais débugger ton premier programme et mettre dans ta boucle un affichage pour voir ce que faisait ton programme au fur et à mesure... Du coup je ne comprends pas pourquoi tu fais un programme à part.
Je voudrais pas paraître méchante mais je pense qu'il est vraiment urgent que tu demandes de l'aide à ton prof ou que tu regardes un tutoriel qui reprend les bases du C++, car sinon tu n'en t'en sortira jamais...
Je te conseille donc de jeter un oeil aux excellents tutoriels suivants :
https://c.developpez.com/cours/
https://openclassrooms.com/fr/courses
Même si tu dis ne pas l'avoir en cours je t'invite aussi à regarder comment marche la STL car au risque d'insister c'est vraiment du masoschisme de pas utiliser les maps... A défaut de te servir pour cet exercice ça te servira sans doute plus tard si tu es amenée à programmer en C++...
Bonne chance
Bon ok...Laisse faire pour le 2e programme...Cependant, montravail est à remettre dans moins de 12 heures...Et j'ai quand même fait quelque chose dans tout ça, j'ai écrit un programme (celui du tri en ordre alphabétique) avec mes connaissances et vous m'aviez aidé et corrigé. Maintenant, avec ce même programme, j'aimerais savoir qu'est-ce qui ne va pas. J'aimerais ce qui fait qu'une fois le programme exécuté, pourquoi mon fichier dinfo_apres_tri.txt est vide? Pourriez-vous me corriger pour une dernière fois SVP?
J'ai oublié de mentionner que c'est pour celui-là:
#include <iostream>
#include <fstream>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::ifstream;
using std::ofstream;
struct Utilisateur {
char Nom[20] , Prenom[20] , Type_appareil[10] , Extension_telephonique[5] ;
char Bureau[10] , Prise[20] , Inventaire[10] , Adresse_physique[20] ;
char Adresse_Ip[20] ;
};
Utilisateur Lire_Element (ifstream Fichier) {
Utilisateur Un_utilisateur;
Fichier >> Un_utilisateur.Nom ;
Fichier >> Un_utilisateur.Prenom ;
Fichier >> Un_utilisateur.Type_appareil ;
Fichier >> Un_utilisateur.Extension_telephonique ;
Fichier >> Un_utilisateur.Bureau ;
Fichier >> Un_utilisateur.Prise ;
Fichier >> Un_utilisateur.Inventaire ;
Fichier >> Un_utilisateur.Adresse_physique ;
Fichier >> Un_utilisateur.Adresse_Ip ;
return Un_utilisateur;
}
main () {
ifstream Infos ;
ofstream Nouveau ;
Utilisateur User ;
Infos.open("dinfo.txt") ;
Nouveau.open("dinfo_apres_tri.txt") ;
if (Infos) {
std::string Ligne1;
std::string Ligne2;
std::getline (Infos , Ligne1) ;
while ( ! Infos.eof() ){
while ( strcmp (User.Nom , Ligne1.c_str() ) < 0) {
Ligne2 = Ligne1 ;
Ligne1 = User.Nom ;
}
Nouveau << Ligne1 << endl;
}}
Infos.close();
Nouveau.close() ;
return 0;
}
Merci...
#include <iostream>
#include <fstream>
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::ifstream;
using std::ofstream;
struct Utilisateur {
char Nom[20] , Prenom[20] , Type_appareil[10] , Extension_telephonique[5] ;
char Bureau[10] , Prise[20] , Inventaire[10] , Adresse_physique[20] ;
char Adresse_Ip[20] ;
};
Utilisateur Lire_Element (ifstream Fichier) {
Utilisateur Un_utilisateur;
Fichier >> Un_utilisateur.Nom ;
Fichier >> Un_utilisateur.Prenom ;
Fichier >> Un_utilisateur.Type_appareil ;
Fichier >> Un_utilisateur.Extension_telephonique ;
Fichier >> Un_utilisateur.Bureau ;
Fichier >> Un_utilisateur.Prise ;
Fichier >> Un_utilisateur.Inventaire ;
Fichier >> Un_utilisateur.Adresse_physique ;
Fichier >> Un_utilisateur.Adresse_Ip ;
return Un_utilisateur;
}
main () {
ifstream Infos ;
ofstream Nouveau ;
Utilisateur User ;
Infos.open("dinfo.txt") ;
Nouveau.open("dinfo_apres_tri.txt") ;
if (Infos) {
std::string Ligne1;
std::string Ligne2;
std::getline (Infos , Ligne1) ;
while ( ! Infos.eof() ){
while ( strcmp (User.Nom , Ligne1.c_str() ) < 0) {
Ligne2 = Ligne1 ;
Ligne1 = User.Nom ;
}
Nouveau << Ligne1 << endl;
}}
Infos.close();
Nouveau.close() ;
return 0;
}
Merci...
Je viens de revoir à fond tout ce programme et je pense que la boucle du tri en ordre alphabétique a quelque chose de défectueux... Pourriez-vous me corriger? Ça sera ma dernière demande JE VOUS EN PRIE!!!
Et si on faisait comme ceci pour la comparaison en ordre alphabétique? (en gardant la même chose en-haut du main)
main () {
ifstream Infos ;
ofstream Nouveau ;
Utilisateur User ;
Infos.open("dinfo.txt") ;
Nouveau.open("dinfo_apres_tri.txt") ;
if (Infos) {
std::string Ligne;
std::string Line;
int i = 0;
Ligne = fgets(;
while ( ! Infos.eof() ){
while ( strcmp (User.Nom , Ligne.c_str() ) < 0) {
Line = Infos.seekg(i) ;
Ligne = User.Nom ;
Nouveau.seekg(i);
Nouveau << Line << endl;
i++;
}}
Infos.close();
Nouveau.close() ;
return 0;
}
main () {
ifstream Infos ;
ofstream Nouveau ;
Utilisateur User ;
Infos.open("dinfo.txt") ;
Nouveau.open("dinfo_apres_tri.txt") ;
if (Infos) {
std::string Ligne;
std::string Line;
int i = 0;
Ligne = fgets(;
while ( ! Infos.eof() ){
while ( strcmp (User.Nom , Ligne.c_str() ) < 0) {
Line = Infos.seekg(i) ;
Ligne = User.Nom ;
Nouveau.seekg(i);
Nouveau << Line << endl;
i++;
}}
Infos.close();
Nouveau.close() ;
return 0;
}
Il y a un opérateur de tri lexicographique pour l'objet string :
De plus pour faire un ensemble tri d'élément tu peux utiliser un set si chaque élément est unique, et un multiset s'il peut être en plusieurs exemplaires :
Je rappelle que les map c'est pratique aussi... franchement faire des strcmp c'est vraiment s'emm*** pour rien ;)
Bonne chance
#include <string>
int main(){
std::string
s1="plop",
s2="tapir";
std::cout << (tapir < plop) << std::endl;
return 0;
}
De plus pour faire un ensemble tri d'élément tu peux utiliser un set si chaque élément est unique, et un multiset s'il peut être en plusieurs exemplaires :
#include <set>
int main(){
std::string
s1="plop",
s2="tapir";
std::set<std::string> ensemble;
ensemble.insert.s1;
ensemble.insert.s2;
//Affichage du set
std::set<std::string>::const_iterator
eit(ensemble.begin()),
eend(ensemble.end());
for(;eit!=eend;++eit){
std:cout << *eit << std::endl;
}
return 0;
}
Je rappelle que les map c'est pratique aussi... franchement faire des strcmp c'est vraiment s'emm*** pour rien ;)
Bonne chance
bsr tout monde,
voila jai un exercice pour demain dont l'enoncé est:
ecrire au c++(c) une classe qui comporte les fonctions membres suivantes:
-creer un fichier
-ouvrir un fichier
-inserer en fin de fichier
-fermer un fichier
-ajouter une fonction'mean'qui affiche un menu à l'utilisateur ,afin de lui permettre d'executer une fonction de la classe(structure).
merci d'avance de m'avoir aidé.
voila jai un exercice pour demain dont l'enoncé est:
ecrire au c++(c) une classe qui comporte les fonctions membres suivantes:
-creer un fichier
-ouvrir un fichier
-inserer en fin de fichier
-fermer un fichier
-ajouter une fonction'mean'qui affiche un menu à l'utilisateur ,afin de lui permettre d'executer une fonction de la classe(structure).
merci d'avance de m'avoir aidé.
Ton programme corrigé :
Ton erreur se situait au niveau du while, qui ne faisait pas de getline (et donc n'avançait pas dans le fichier, entraînant une boucle infinie).
Petites recommandations :
- évite les majuscules en C++ c'est a priori réservé pour les #define et les paramètres templates.
- pense à mettre un type de retour à ton main (int en l'occurence)
- tu peux ouvrir directement un stream via le constructeur
- un fichier ne doit être fermé que s'il a été ouvert avec succès
- tu peux utiliser directement des std::string dans ta structure utilisateur
Bonne chance
#include <iostream>
#include <fstream>
#include <string>
struct utilisateur {
char nom[20] , prenom[20] , type_appareil[10] , extension_telephonique[5] ;
char bureau[10] , prise[20] , inventaire[10] , adresse_physique[20] ;
char adresse_ip[20] ;
};
int main () {
std::ifstream infos("dinfo_apres_tri.txt") ;
if (infos){
std::string ligne;
for(std::getline(infos,ligne);!infos.eof();std::getline(infos,ligne)){
std::cout << ligne << std::endl;
}
infos.close();
}
return 0;
}
Ton erreur se situait au niveau du while, qui ne faisait pas de getline (et donc n'avançait pas dans le fichier, entraînant une boucle infinie).
Petites recommandations :
- évite les majuscules en C++ c'est a priori réservé pour les #define et les paramètres templates.
- pense à mettre un type de retour à ton main (int en l'occurence)
- tu peux ouvrir directement un stream via le constructeur
- un fichier ne doit être fermé que s'il a été ouvert avec succès
- tu peux utiliser directement des std::string dans ta structure utilisateur
Bonne chance