Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/02/2008, à 17:41

velderama

c++ Demande Aide Projet(simple)

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 lister et leurs positions en terme de caracteres par rapport au début du fichier!
Toutefois j'aurai pu 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 je ne c'est pas comment faire...
SI quelqun peut m'aider cela m'aiderait beaucoup.MERCI

Hors ligne

#2 Le 26/02/2008, à 17:54

slasher_fun

Re : c++ Demande Aide Projet(simple)

Tu veux quoi exactement ? Parce qu'on ne te fera pas ton projet toujours est-il..:rolleyes:

Hors ligne

#3 Le 27/02/2008, à 00:19

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

   Tiens, encore un étudiant qui veut qu'on lui fasse son exercice à sa place...

   Personne ici ne te donnera la solution pré-mâchée. Pour que nous t'aidions, il faut que tu nous donnes au moins un début de code.

   Cela dit, je ne suis pas chien : pour t'aider, je te conseille de jeter un œil au flux en C++ (voir l'en-tête iostream), les flux sur des fichiers (en-tête fstream et ici tu as besoin d'un ifstream) et les chaînes de caractères (en-tête et classe string). Les flux sur des chaînes (en-tête sstring et ici un istringstream pourra sans doute te servir) pourront t'être utiles. Tout cela est dans la bibliothèque standard. Tu vas voir, ce n'est pas plus compliqué qu'en Java.

   Cette page, consacré à la gestion des fichiers en C++, pourrait bien t'aider : http://www.siteduzero.com/tuto-3-18613- … -en-c.html. Celle-ci, consacré à la bibliothèque standard, t'aidera sans doute également : http://ipnweb.in2p3.fr/rayonnements-ene … e/stl.html.

   Un livre essentiel sur le C++ : Bjarne STROUSTRUP, le langage C++, Pearson Education. Bjarne STROUSTRUP est le créateur du C++.

   Bon courage !

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 27/02/2008, à 10:33)

Hors ligne

#4 Le 27/02/2008, à 09:31

Karl_le_rouge

Re : c++ Demande Aide Projet(simple)

Un livre essentiel sur le C++ : Bjarne STROUSTRUP, le langage C++, Pearson Education. Bjarne STROUSTRUP est le créateur du C++.

T'es complétement malade de conseiller ce bouquin à un débutant !

Hors ligne

#5 Le 27/02/2008, à 09:59

velderama

Re : c++ Demande Aide Projet(simple)

Je suis d'accord avec vous.
En premier j'essaie d'identifié mes classes.Donc je commence par les plus simples qui sont les tests sur les fichiers!

J'ai une classe VerificationFichiers qui contient des methodes booleenes et qui verifie les 2 fichiers passer en argument.Pour cela jai fait une classe VerificationFichiers.h et une classe VerificationFichiers.cpp

Hors ligne

#6 Le 27/02/2008, à 10:04

velderama

Re : c++ Demande Aide Projet(simple)

classe 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 EstOkFichier1(ifstream fichier);//Test si le fichier1 est bon
    bool EstOkFichier2(ifstream fichier);//Test si le fichier2 est bon
    //Constructeurs//
  VerificationFichiers();
  VerificationFichiers(ifstream f1,ifstream f2);
};
#endif

Hors ligne

#7 Le 27/02/2008, à 10:05

velderama

Re : c++ Demande Aide Projet(simple)

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)
   
   
//};

Hors ligne

#8 Le 27/02/2008, à 10:07

velderama

Re : c++ Demande Aide Projet(simple)

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;
}

Deja a ce niveau il veut pas de "VerificationFichiers.h"??

Hors ligne

#9 Le 27/02/2008, à 10:09

velderama

Re : c++ Demande Aide Projet(simple)

Donc vous voyez bien que je reste pas les bras croisés et que j'essaie quand meme. Si j'arrive a bien maitriser la gestion des classes je pense que pourrai y arriver mais on est pas encore la sad !
Merci quand meme de vos commentaires

Hors ligne

#10 Le 27/02/2008, à 10:09

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

Karl_le_rouge a écrit :

T'es complétement malade de conseiller ce bouquin à un débutant !

Non, c'est du bon sens. Je m'en suis d'ailleurs déjà expliqué dans ce fil de discussion : http://forum.ubuntu-fr.org/viewtopic.php?id=150438

   Le problème de C++, c'est qu'il est généralement extrêmement mal utilisé et enseigné. Les livres à son sujet sont généralement très mauvais, enseignant du C saupoudré de quelques ajouts C++. On se retrouve à faire une aberration : du C avec des petits morceaux de C++, des choses inefficaces : peu performantes et incompréhensibles.

   La seule référence à laquelle on peut faire confiance est le STROUSTRUP. De plus, pour avoir moi-même découvert le langage avec les premières éditions de ce livre et vu d'autre en faire autant, je trouve qu'il est vraiment progressif : les notions sont introduites chapitre par chapitre, avec de nombreux exemples et exercices. Surtout depuis la troisième édition. Par contre, il est certain que pour pouvoir l'aborder de manière fructueuse, il faut avoir déjà pratiqué la programmation par ailleurs. Justement, Velderama a déjà fait du Java, donc s'il est débutant en C++, ce n'est pas un débutant en programmation. Surtout que Java et C++ partage une syntaxe très similaire : il ne va pas être surpris.

   Je persiste et je signe : rien de tel que le STROUSTRUP.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Hors ligne

#11 Le 27/02/2008, à 10:20

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

velderama a écrit :

#include <stdlib.h>

Supprime ça : c'est un en-tête C. D'une part il n'y a rien que la bibliothèque standard de C++ ne propose déjà. D'autre part, il ne devrait être utilisé que lorsque tu ne peux pas faire autrement que d'inclure du C dans ton projet, ce qui n'est pas le cas pour ton cas. De toute façon, si tu as vraiment besoin de cette bibliothèque, utilise son encapsulation C++ :

#include <cstdlib>

De toute façon, ce n'est pas bienvenue dans ton exercice : ton objectif, c'est d'apprendre C++, pas C.

Deja a ce niveau il veut pas de "VerificationFichiers.h"??

Ah bon ? Si tu nous ne donnes pas le message d'erreur à la compilation, nous ne pourrons rien faire.

   Sinon, c'est vraiment très bien de t'assurer que les fichiers sont bons, tu as raison de le faire. Cependant, tu peux le faire de façon beaucoup plus simple. C++ supporte différents paradigmes de programmation, pas seulement l'objet. Sur cet exercice, je pense que tu peux t'en sortir de manière très propre et très efficace sans écrire de nouvelle classe : C++ n'est pas Java. Fait simple. Ta vérification ne devrait pas prendre plus de cinq lignes de code.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 27/02/2008, à 10:32)

Hors ligne

#12 Le 27/02/2008, à 10:33

velderama

Re : c++ Demande Aide Projet(simple)

Oui je sais que c'est possible "presque" directement de faire les tests mais vu que c'est un projet il faut plus ou moins que ca sois structuré et meme comme ca j'apprendrai a implementer les autres classes exemple tri,calcul distance etc.
Merci de vos commentaires

Hors ligne

#13 Le 27/02/2008, à 10:37

velderama

Re : c++ Demande Aide Projet(simple)

le bug entre autre c'est VerificationFichiers undeclared(first use this function)
a la ligne "VerificationFichiers vf;" dans le main sad

Hors ligne

#14 Le 27/02/2008, à 10:40

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Re-salut à tous !

velderama a écrit :

Oui je sais que c'est possible "presque" directement de faire les tests mais vu que c'est un projet il faut plus ou moins que ca sois structuré

Structuré ne signifie pas nécessairement avec des classes. C'est fort différent. Tu peux structurer avec des classes ou avec des fonctions ou encore de plein d'autres manières.

   Un projet ? Personnellement, je suis capable de le faire en une vingtaine de lignes, propre, lisible, efficace et pur C++. Je ne vois pas en quoi ça peu servir de projet... Cela dit, ce n'est pas moi qui fait ton module.

   En tout cas, la bonne façon de répondre à un exercice n'est pas de chercher à faire ultra compliqué juste pour montrer que tu en es capable, mais d'avoir une réponse approprié. Dans ton cas, c'est un problème simple qui peut être résolu simplement, donc fait simple.

comme ca j'apprendrai a implementer les autres classes exemple tri,calcul distance etc.

Pourquoi diable faire des classes pour ça ? En fait, c'est déjà fait dans la bibliothèque standard...

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Hors ligne

#15 Le 27/02/2008, à 10:43

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Re-re-salut à tous !

velderama a écrit :

le bug entre autre c'est VerificationFichiers undeclared(first use this function)
a la ligne "VerificationFichiers vf;" dans le main sad

Si tu copiais le message d'erreur, ce serait plus simple.

   Es-tu certain de n'avoir pas fait de faute de frappe quelque part dans les noms de fichiers ?

   À bientôt.

                                                                                                                                                Le Farfadet Spatial

Hors ligne

#16 Le 27/02/2008, à 10:46

velderama

Re : c++ Demande Aide Projet(simple)

voila la phrase:
dans le main

10 E:\Projet2008\Dev-Cpp\Projet\Main.cpp `VerificationFichiers' undeclared (first use this function)

Hors ligne

#17 Le 27/02/2008, à 10:47

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

   J'ai trouvé une erreur :

velderama a écrit :

#define VERIFICATIONFICHIERS_H
#ifndef VERIFICATIONFICHIERS_H

Donc, tu commences par définir VERIFICATIONFICHIERS_H. Ensuite, tu demandes au compilateur de faire quelque chose si VERIFICATIONFICHIERS_H n'est pas défini, donc il ne le fera jamais.

   C'est une bonne habitude de protéger ses en-têtes, mais fait le plutôt ainsi :

#ifndef NOMDELENTETE_HPP
#define NOMDELENTETE_HPP

// Ici ton code

#endif  // #ifndef NOMDELENTETE_HPP

Ça marchera beaucoup mieux.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Hors ligne

#18 Le 27/02/2008, à 10:52

Karl_le_rouge

Re : c++ Demande Aide Projet(simple)

Le Farfadet Spatial a écrit :

Salut à tous !

Karl_le_rouge a écrit :

T'es complétement malade de conseiller ce bouquin à un débutant !

Non, c'est du bon sens. Je m'en suis d'ailleurs déjà expliqué dans ce fil de discussion : http://forum.ubuntu-fr.org/viewtopic.php?id=150438

   Le problème de C++, c'est qu'il est généralement extrêmement mal utilisé et enseigné. Les livres à son sujet sont généralement très mauvais, enseignant du C saupoudré de quelques ajouts C++. On se retrouve à faire une aberration : du C avec des petits morceaux de C++, des choses inefficaces : peu performantes et incompréhensibles.

   La seule référence à laquelle on peut faire confiance est le STROUSTRUP. De plus, pour avoir moi-même découvert le langage avec les premières éditions de ce livre et vu d'autre en faire autant, je trouve qu'il est vraiment progressif : les notions sont introduites chapitre par chapitre, avec de nombreux exemples et exercices. Surtout depuis la troisième édition. Par contre, il est certain que pour pouvoir l'aborder de manière fructueuse, il faut avoir déjà pratiqué la programmation par ailleurs. Justement, Velderama a déjà fait du Java, donc s'il est débutant en C++, ce n'est pas un débutant en programmation. Surtout que Java et C++ partage une syntaxe très similaire : il ne va pas être surpris.

   Je persiste et je signe : rien de tel que le STROUSTRUP.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Les points sur lesquels on est d'accords:
* le C++ est mal enseignés.
* le Stroustrup est la référence (je nuancerais en disant pour ceux qui appréhendent bien le C++)

Ce que je reproche au Stroustrup c'est sa rédaction confuse, c'est un bouquin qui se destine à un public averti. C'est tout sauf un bouquin d'initiation, contrairement au K&R qui joue les deux rôles. Quant aux livres d'initiation en C++, il y en a des bons: le Delannoy (malgré quelques imprécisions mineures), Thinking in C++ par exemple.

Hors ligne

#19 Le 27/02/2008, à 10:56

velderama

Re : c++ Demande Aide Projet(simple)

Ouf enfin j'ai plus le bug il faut dire que l'entete que savait pas que l'ordre est important...merci wink
Toutefois nouveau bug
7 E:\Projet2008\Dev-Cpp\Projet\VerificationFichiers.h field `fichier1' has incomplete type ??
on ne declare pas comme ca un fichier?
ifstream fichier1; // Fichier1 en lecture

Hors ligne

#20 Le 27/02/2008, à 11:03

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

Karl_le_rouge a écrit :

contrairement au K&R qui joue les deux rôles.

C'est un livre qui enseigne C et n'a absolument rien à voir avec C++

Quant aux livres d'initiation en C++, il y en a des bons: le Delannoy (malgré quelques imprécisions mineures)

Je le déconseille : du C saupoudré de quelques nouvelles fonctionnalités.

Thinking in C++ par exemple.

À la rigueur, mais moins complet que le STROUSTRUP. Pourquoi s'adresse à ses saints, plutôt qu'à Dieu ?

   Quand à l'aspect confus de STROUSTRUP, je ne suis pas d'accord. Je constate par contre que c'est une remarque que font généralement ceux qui n'ont fait que le survoler.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Hors ligne

#21 Le 27/02/2008, à 11:07

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

velderama a écrit :

on ne declare pas comme ca un fichier?
ifstream fichier1; // Fichier1 en lecture

Essaye ça :

ifstream fichier1 (argv[1]);

Je te laisse trouver le bon endroit pour cette ligne de code.

   Au fait, pourquoi ne pas ajouter la gestion des exceptions, tant que tu y es ? Et une interface graphique ? Il y a plein de truc qui peuvent alourdir ton code !

   Bref : réfléchi simple, pense simple, fais plus simple !

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Hors ligne

#22 Le 27/02/2008, à 11:22

velderama

Re : c++ Demande Aide Projet(simple)

Merci mais Je ne pourrai pas le mettre dans la classe VerificationFichiers.h car je declare juste mes noms de fichiers dans cette classe puis je les initialise dans ma classe main.Je ne sais pas si vous comprenez l'idée.
Désolé d'insister pour le faire ainsi mais c'est dur de changer lorsqu'on est habitué de programmer d'une façon

Hors ligne

#23 Le 27/02/2008, à 11:31

Le Farfadet Spatial

Re : c++ Demande Aide Projet(simple)

Salut à tous !

velderama a écrit :

Merci mais Je ne pourrai pas le mettre dans la classe VerificationFichiers.h car je declare juste mes noms de fichiers dans cette classe puis je les initialise dans ma classe main.Je ne sais pas si vous comprenez l'idée.

Oui. Par contre, je désapprouve ton idée... De toute façon, tu ne peux pas écrire :

ifstream fichier;
fichier = nom;

Regarde plutôt la fonction membre open. Retourne sur les liens que je t'ai donnés au début.

Désolé d'insister pour le faire ainsi mais c'est dur de changer lorsqu'on est habitué de programmer d'une façon

Alors, si tu ne veux pas changer tes habitudes, fais du Java. Mais C++ n'est pas Java... Il va donc falloir que tu changes tes habitudes.

   Je te donne un exercice qui n'est pas facultatif : en utilisant la bibliothèque standard C++, écrit en moins de dix lignes un programme qui ouvre un fichier dont le nom est donné par l'utilisateur dans la ligne de commande et qui s'assure que ce fichier est lisible. Le programme doit être simple.

   De toute façon, si tu t'obstines à vouloir compliquer les choses, tu n'y arriveras tout simplement pas.

   À bientôt.

                                                                                                                                             Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 27/02/2008, à 11:35)

Hors ligne

#24 Le 27/02/2008, à 11:36

velderama

Re : c++ Demande Aide Projet(simple)

Tiens justement je l'avais fais:
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>

using namespace std;

int main(int argc, char *argv[])
{
    ifstream fichier; // Fichier en lecture
    fichier.open(argv[1], ios::in);// On ouvre le fichier en lecture
        if(fichier) 
        {
        fichier.seekg(0, ios::beg); //On se place au début du fichier
        string contenu;  //la ligne lue
         while(!fichier.eof())// On attend d'atteindre la fin du fichier
         {
         getline(fichier, contenu);  // on met dans "contenu" la ligne
         cout << contenu;  // on affiche la ligne                     
         }     
        fichier.close();
        }
        else
                cerr << "Impossible d'ouvrir le fichier !" << endl;
     
}

Hors ligne

#25 Le 27/02/2008, à 11:38

velderama

Re : c++ Demande Aide Projet(simple)

Vous voyez je peux faire le projet en un seul fichier mais comme j'ai dit avant j'ai des containtes qui sont de faire des classes séparées...
Merci quand meme

Hors ligne