C++ classe fichiers Pour 1 semaine

Résolu/Fermé
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 26 févr. 2008 à 17:07
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 28 févr. 2008 à 11:19
Bonjour a tous.
Je dois réaliser un projet qui etant donné 2 fichiers texte passés en parametres , de comparer tous les mots de plus de 3 caracteres présents dans les 2 fichiers de les ainsi que leurs positions en terme de caracteres par rapport au début du fichier!
Toutefois j'aurai penser pouvoir le faire en java mais on nous impose de le faire sous c++.
Je sais ça ne doit pas etre compliqué mais vu que j'ai jamais fait de C++ et qu'on a une semaine
je ne c'est pas comment faire...
SI quelqun peut m'aider cela m'aiderait beaucoup.MERCI
A voir également:

10 réponses

<yassou> Messages postés 589 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juin 2015 74
26 févr. 2008 à 17:28
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 09:49
Merci mais moi c'est plutot les manipulations de classes (importation d'une classe exterieur,methodes exterieur...)
J'ai essayé mais c'est vraiment different du java que je connais mieux.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2008 à 10:02
Je voi le problème : trop de style java pour le C++.
Oublie la notion d'importation de class. En C++ il faut redéclarer à chaqu foi l'ensemble de la class, ce qui est facilité par l'emploi de #include <machin.h>.
Pour avoir discuter avec un programmeur Java, il faut voir qu'en C++ il y a pas mal de choses qui existent en dehors de class (si si c'est possible), en particulier des fonctions.
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 10:23
Bon je mettre où jen suis.La je veux faire 2 classes au debut pour tester si le fichier est bon!
une classe VerificationFichiers.cpp(avec sa classe séparée "header"VerificationFichiers.h) et une classe main qui lance le programme:

VerificationFichiers.h

#define VERIFICATIONFICHIERS_H
#ifndef VERIFICATIONFICHIERS_H
using namespace std;
class VerificationFichiers
{
public :
ifstream fichier1; // Fichier1 en lecture
ifstream fichier2; // Fichier2 en lecture
VerificationFichiers();
bool EstOkFichierRef(ifstream fichier);//Test si le fichier1 est bon
bool EstOkFichierOcr(ifstream fichier);//Test si le fichier2 est bon
//Constructeurs//
VerificationFichiers();
VerificationFichiers(ifstream f1,ifstream f2);
};
#endif
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 10:24
Puis la classe VerificationFichiers.cpp

#include "VerificationFichiers.h"
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
class VerificationFichiers
{


public :
bool VerificationFichiers::EstOkFichier1(ifstream fichier){
fichier.open(fichier1, ios::in);// On ouvre le fichier en lecture
if(fichier) return true;
else
return false;

fichier.close();}//EstOkFichier1(ifstream fichier)


};
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 10:26
Puis le main

#include <iostream>
#include <string>
#include "VerificationFichiers.h"
#include <fstream>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
VerificationFichiers vf;
vf.fichier1=argv[1];
vf.fichier2=argv[2];
return 0;
}
Elle est pas encore finie mais deja elle veut pas de VerificationFichiers.h a la compilation???
J'ai du mal avec les classes en c++
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
27 févr. 2008 à 11:17
https://cpp.developpez.com/faq/cpp/?page=Les-classes-en-Cplusplus#CLASS_header_cpp

ici il y a une explication asssez claire de la règle pour inclure les fichiers.

Il faut que le compilateur connaisse tout pour chaque fichier. Or par exemple dans ton .H tu utilises un "ifstream" (qui est déclaré dans <fstream> il me semble) mais il n'est pas inclus.
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
27 févr. 2008 à 11:29
Merci ca a enlever certains bugs
tu peux me dire c'est quoi ce bug?
11 E:\Projet2008\Dev-Cpp\Projet\Main.cpp no match for 'operator=' in 'vf.VerificationFichiers::fichier1 = *(argv + 4u)'
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011
27 févr. 2008 à 13:13
vf.VerificationFichiers::fichier1 = *(argv + 4u)

moi aussi je te répondrait la meme chose que ton compilateur :o) : tu veux dire quoi avec cette ligne de code ?

fichier1 est un "ifstream" et *(argv + 4u) est euhh.... je ne sais plus trop : une chaine de caractère normalement, mais en tout cas pas un ifstream. donc ton "=" n'a pas de sens pour le compilateur. Il faut créer un ifstream à partir de ton nom de fichier comme char sniper l'a fait plus bas (N°11):
blabla::fichier1 = ifstream( *(argv + 4u) );
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2008 à 11:52
Houlà...
** remarque sur ton .h :
tu met deux foi le constructeur VerificationFichiers();
par contre, pour tes fichier1 et fichier2, tu utilise ifstream. Or tu les les utilise plutôt comme des char*
Comme il a été dit, il manque #include <fstream>
** remarque sur ton verif*.cpp
Les include c'est bien. Par contre, ça ne ser à rien de refaire un "class verificationfichier { ..." puisque la déclaration à déjà été faite dans ce fichier pa l'ajoue de #include "verificationfichiers.h"
l'ajoue de VerificationFichier:: devant estOkFichier1 est suffisant pour résudre la portée
** remarque sur le main
Tu essai d'affecté un char* à un ifstream dans les deux lignes
vf.fichier1=argv[1];
vf.fichier2=argv[2];
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 12:10
Oui ca été enlever merci abus surement de copie-coller...
donc comment resoudre le probleme

Tu essai d'affecté un char* à un ifstream dans les deux lignes
vf.fichier1=argv[1];
vf.fichier2=argv[2];

Je suis débutant donc je cale beaucoup.Merci quand meme tout le monde
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2008 à 12:34
Je pense qu'il faut revoir ton programme entièrement.
Je suis malheuresement assez mal à l'aise avec les ifstream.
Je dirai :
vf.fichier1=ifstream(argv[1]);
et
bool VerificationFichiers::EstOkFichier1(){
//fichier1.open(ios::in);fichier déjà ouvert
if(fichier1) return true; // if(!fichier1.fail())
else
return false;
Masource d'info : https://en.cppreference.com/w/
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 13:42
vf.fichier1=ifstream(argv[1]); marche pas !?

Le truc c'est comment recuperer un fichier passer en argument. car le fichier type ifstream et argument type char* !
Je
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
27 févr. 2008 à 14:01
bon, ba il faut passer par des pointeur :
class verif...{
ifstream* fichier1;
}
puis :
vf.fichier1=new ifstream(argv[1]);
Et on appel fichier1->fail();
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 14:18
Ca a l'air detre bon ya plus de bug donc je vais essayer de continuer.
Par contre j'ai pas compris "Et on appel fichier1->fail();"?
Merci beaucoup il va falloir que je sache utiliser les pointeurs du moins pour fichier1 et fichier 2 pour la suite?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297 > velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011
27 févr. 2008 à 17:08
oui, en effet, il va falloir passer par les pointeurs. à moins que...
VerificationFichiers.h

#define VERIFICATIONFICHIERS_H
#ifndef VERIFICATIONFICHIERS_H
#include <fstream>
#include <string>
using namespace std;
class VerificationFichiers
{
public :
ifstream fichier1; // Fichier1 en lecture
ifstream fichier2; // Fichier2 en lecture
string nomF1,nomF2;
bool EstOkFichierRef(string fichier);//Test si le fichier1 est bon
bool EstOkFichierOcr(string fichier);//Test si le fichier2 est bon
//Constructeurs//
VerificationFichiers();
VerificationFichiers(string f1,string f2);
};
#endif

VerificationFichiers.cpp

#include "VerificationFichiers.h"
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
bool VerificationFichiers::EstOkFichierRef(string fichier){
     fichier1.open(fichier, ios::in);// On ouvre le fichier en lecture
      if(fichier1) return true;
      else
         return false;
      fichier1.close();
}//EstOkFichier1(ifstream fichier)
Et min.cpp
#include <iostream>
#include <string>
#include "VerificationFichiers.h"
#include <fstream>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
VerificationFichiers vf;
vf.nomF1=argv[1];
vf.nomF2=argv[2];
vf.EstOkFichierRef(vf.nomF1);
return 0;
} 
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
27 févr. 2008 à 15:50
Vous auriez pas un lien pour le cours sur le "map" Merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
28 févr. 2008 à 09:31
https://cpp.developpez.com/faq/cpp/?page=La-STL#STL_choix_conteneur

c'est pas sur les map mais sur les conteneurs de la bibliotheque standard de modèle (STL) en général.

Pour les map voici un lien aussi, mais je trouve que ça manque un peu d'infos et d'exemples, j'ai pas mieux sous la main :

http://www.cplusplus.com/reference/map/map/
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
28 févr. 2008 à 11:13
Merci Pacorabanix t'aurai pas un exemple d'utilisation stp.
Car la j'essaie d'inserer chaque mots de plus de 3 caracteres du fichier et sa postion
avec key=mot et value = position ?
Merci
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
28 févr. 2008 à 11:19
J'ai revu mon probleme initial autrement :
J'ai principalement 3 classes :

-main qui lit les fichiers en parametre et lance les autres classes

-classe CreationListe avec des fonctions:
insererMotLue();//ajoute le mot et sa position
affichageListe();//affiche le fichier qui contient les mots lus e tleur position!
...
Donc est ce que faire un map c'est utile ici et comment proceder?
Merci
0