IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Vérification automatique de l'orthographe


Sujet :

C

  1. #1
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut Vérification automatique de l'orthographe
    Bonjour à tous

    j'ai un exercice qui s'avère être très velue (à mon niveau)

    si vous voulez bien m'aiguillez "step by step" ce serait génial
    je suivrais vos conseil et au fur et à mesures je pourrais achever ce programme

    actuellement vue l'ampleur je bloque complètement sur un point de détail et ça me brouille l'esprit

    tout d'abord comment créer ce fichier dico.dat


    je vais lister ci dessous les étapes que doit effectuer mon programme

    --------------------------------------------------------------------------------------
    tout d’abord les base de mon exo :
    un programme qui vérifie l'orthographe d'un texte en utilisant un dictionnaire de mot correct.
    texte et dictionnaire doivent être deux fichiers texte préalablement mémorisé.

    les mots du texte sont à comparé un par un et corriger avec la liste de mots valides, s'il en rencontre un mot inconnu, le programme proposera de l'inclure dans le texte

    le programme aura pour argument le nom du fichier texte à vérifier
    le fichier dictionnaire s'appelle dico.dat
    ------------------------------------------------------------------------------------------
    exécution du programme
    1) lecture des arguments du programmes : nom du fichier à traiter
    2) ouverture du fichier dico.dat en lecture
    3) lecture mot à mot de tout le fichier dico et stockage dans un tableau en mémoire
    4) fermeture du chier deco
    5)lire chaque mot du texte,
    supprimer la ponctuation,
    convertir les majuscules en minuscules
    recherche l mot dans le tableau dico avec la fonction dichotomique
    si le mot n'est pas trouvé, demander à l'utilisateur s'il désire l'ajouter au dictionnaire, si oui l'ajouter le mot àprès le dernier élément du tableau et retrier le tableau
    6) fermeture du fichier texte
    7)ouverture du fichier dico.dat en écriture
    8) écriture mot à mot des tous les éléments du tableau dico
    9) fermeture du fichier dictionnaire

    ----------------------------------------------------------------------------
    dichotomique
    si je cherche dans une liste le mot "cheval"
    j'ai la liste dans le dictionnaire :
    arbre, cheval, manger, seau, voiture

    on compare cheval avec le mot au milieu : manger
    cheval < manger, alors on compare avec la demi liste inférieur
    il reste 2 mot, arbre et cheval
    cheval=cheval
    comparaison réussi


    même principe avec le mot "voisin"
    voisin>manger, on compare avec la demi liste supérieur

    il reste plus que 2 éléments
    seau et voiture
    aucun ne correspond
    donc voisin n'est pas dans la liste
    -------------------------------------------------------------------------

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut bosk1000,

    Citation Envoyé par bosk1000 Voir le message
    j'ai un exercice qui s'avère être très velue (...) si vous voulez bien m'aiguillez (...) je suivrais vos conseils (...) les bases de mon exo (...) un dictionnaire de mots corrects. texte et dictionnaire doivent être deux fichiers texte préalablement mémorisés. les mots du texte sont à comparer un par un (...) on compare avec la demi liste inférieure il reste 2 mots, (...) comparaison réussie (...) on compare avec la demi liste supérieure
    c'est dommage l'orthographe ça va relativement, avec un correcteur grammatical et de conjugaison t'aurais lié l'utile à l'agréable
    et la cerise sur le gateau :
    fermeture du fichier deco


    sinon plus sérieusement, je vois pas trop en quoi on peut t'aider step-by-step, t'as toi même donné une marche à suivre qui semble convenir, reste à mettre en oeuvre je dirais.
    montre nous ce que tu as commencé à faire, un bout de code, on sera plus à même de pouvoir t'aider précisément à mon avis.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    tout d'abord comment créer ce fichier dico.dat
    Bonjour
    Tu l'ouvres avec un éditeur quelconque (notepad, gvim) et tu le remplis (avec de préférence un mot par ligne, c'est plus simple à traiter ensuite)...

    Citation Envoyé par bosk1000 Voir le message
    dichotomique
    si je cherche dans une liste le mot "cheval"
    j'ai la liste dans le dictionnaire :
    arbre, cheval, manger, seau, voiture

    on compare cheval avec le mot au milieu : manger
    cheval < manger, alors on compare avec la demi liste inférieur
    il reste 2 mot, arbre et cheval
    cheval=cheval
    comparaison réussi
    C'est aisé à faire si tes mots sont stockés dans un arbre binaire
       cheval
    arbre/     \manger
                         \seau
                               \voiture
    Tout nouveau mot à ajouter part vers la gauche s'il est plus petit que le mot stocké et vers la droite s'il est plus grand. Et quand il trouve une place vide il s'y met. Si l'arbre est bien équilibré, tu peux évaluer une liste de 1000 mots en seulement 10 opérations...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    pour les fautes d'orthographes...mea culpa ma dyslexie me poursuivra à vie..

    1) pour démarrer je me demande comment faire ce fichier dico.dat

    2)ensuite pour ouvrir les 2 fichiers, dois-je les placer dans le même dossier que le fichier main.c

    3) pour l'ouverture de ces 2 fichiers je compte pratiquer comme ceci :
    merci de m'indiquer les erreurs que vous allez décelez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <string.h>
     
    void main(void)
    {
        //creaton des pointers fichiers
        FILE *Pointeur_fichier_texte;
        FILE *Pointeur_fichier_dico;
     
        //tableau pour recuperer le nom du fichier
        char fichier_texte [20];
     
        //saisie du non du fichier
        printf("Veuillez saisir le fichier à ouvrir sans l'extantion :");
        scanf("%s",&fichier_texte);
        //concaténation du nom du fichier avec l'extention ".txt"
        strcat (fichier_texte,".txt");
     
     
        //ouverture du fichier
        Pointeur_fichier_texte=fopen(fichier_texte,"r"),
     
        if (Pointeur_fichier_texte == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier %s",fichier_texte);
        }
     
        Pointeur_fichier_dico=fopen(dico.dat,"r");
        if (Pointeur_fichier_dico == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier dico.dats");
        }
    }

  5. #5
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour
    C'est aisé à faire si tes mots sont stockés dans un arbre binaire
       cheval
    arbre/     \manger
                         \seau
                               \voiture
    Tout nouveau mot à ajouter part vers la gauche s'il est plus petit que le mot stocké et vers la droite s'il est plus grand. Et quand il trouve une place vide il s'y met. Si l'arbre est bien équilibré, tu peux évaluer une liste de 1000 mots en seulement 10 opérations...
    Merci, donc je crée mon fichier comme tu me l'explique au début, c'est à dire un mot par ligne.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    pour démarrer je me demande comment faire ce fichier dico.dat
    Avec un éditeur !!!

    Citation Envoyé par bosk1000 Voir le message
    ensuite pour ouvrir les 2 fichiers, dois-je les placer dans le même dossier que le fichier main.c
    Rien ne t'y oblige. Si tu connais l'emplacement du fichier tu peux l'ouvrir de n'importe-où...

    Citation Envoyé par bosk1000 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <string.h>
     
    void main(void)
    {
        //creaton des pointers fichiers
        FILE *Pointeur_fichier_texte;
        FILE *Pointeur_fichier_dico;
     
        //tableau pour recuperer le nom du fichier
        char fichier_texte [20];
     
        //saisie du non du fichier
        printf("Veuillez saisir le fichier à ouvrir sans l'extantion :");
        scanf("%s",&fichier_texte);
        //concaténation du nom du fichier avec l'extention ".txt"
        strcat (fichier_texte,".txt");
     
     
        //ouverture du fichier
        Pointeur_fichier_texte=fopen(fichier_texte,"r"),
     
        if (Pointeur_fichier_texte == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier %s",fichier_texte);
        }
     
        Pointeur_fichier_dico=fopen(dico.dat,"r");
        if (Pointeur_fichier_dico == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier dico.dats");
        }
    }
    Ben c'est pas gagné. Liste des erreurs en vrac
    • main n'est pas de type void
    • pas de "&" devant un nom de tableau (c'est déjà une adresse)
    • tu concatènes ".txt" à un nom qui contient peut-être déjà cette extension
    • dico.dat est utilisé en tant que variable (inexistante) ; et je ne comprends pas ce "s" à "dico.dats". Etre dyslexique c'est une chose, le laxisme en est une autre...
    • tu ne gères pas le premier fichier si le second s'ouvre mal (d'ailleurs on ne voit pas trop ce que tu veux faire si l'un des deux s'est mal ouvert)
    • tes noms de pointeurs sont super trop longs (c'est pas une erreur mais quand tu en sera à ta 30° ligne avec fgets(Pointeur_fichier_dico) tu te diras que ça risque de le devenir)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    N'écoute pas Sve@r

    Vu la tronche du fichier même un roxor qui touche sa bille galérera comme un damné pour formater un fichier "dico.dat" de cette façon (le roxor lui utilisera une base de données mais bon)

    Le plus simple: 1 mot par ligne
    arbre
    cheval
    manger
    veau
    voiture
    Et par conséquent, le parser est fort simple: tant que ce n'est pas une fin de ligne (*) on ajoute le caractère. Sinon, on stocke le mot courant et un nouveau est créé.
    Pour le tri: soit ton fichier est trié, soit il faudra trier ton tableau avant toutes opérations.


    Ou bien, si tu veux garder un arbre: les mots séparés par des ";" Exemple
    cheval
    arbre;manger
    ;;;seau
    ;;;;;;;voiture
    Et oui c'est avec les puissances de 2 pour un arbre binaire de recherche


    * -> Il me semble qu'il faut gérer le '\n' et le '\r'

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Citation Envoyé par Sve@r Voir le message
    Bonjour
    Tu l'ouvres avec un éditeur quelconque (notepad, gvim) et tu le remplis (avec de préférence un mot par ligne, c'est plus simple à traiter ensuite)...
    N'écoute pas Sve@r

    Vu la tronche du fichier même un roxor qui touche sa bille galérera comme un damné pour formater un fichier "dico.dat" de cette façon (le roxor lui utilisera une base de données mais bon)

    Le plus simple: 1 mot par ligne
    T'as raison, je dis que des conneries. Heureusement que t'es là pour redire la même chose...

    Citation Envoyé par foetus Voir le message
    Et par conséquent, le parser est fort simple: tant que ce n'est pas une fin de ligne (*) on ajoute le caractère. Sinon, on stocke le mot courant et un nouveau est créé.
    Oui. Ou bien on utilise fgets() qui lit une ligne entière d'un coup. Mais c'est vrai que c'est bien trop simple...

    Citation Envoyé par foetus Voir le message
    Ou bien, si tu veux garder un arbre: les mots séparés par des ";" Exemple
    Dans mon esprit, l'arbre était créé en mémoire au fur et à mesure que le fichier était lu. Seul ennui avec cette méthode: faut pas que les mots dans le fichier soient triés car sinon ça produit un arbre déséquilibré et donc avec des performances de recherche égales à celles d'une simple liste...

    Citation Envoyé par foetus Voir le message
    * -> Il me semble qu'il faut gérer le '\n' et le '\r'
    Vague souvenir de la façon dont sont enregistrés les fichiers textes ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Donc c'était stocké en mémoire et non pas dans un fichier:

    Parce que stocker dans un fichier sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          cheval
    arbre/      \manger
                       \seau
                            \voiture
    Pour le problème de peigne et arbre dégénéré, il faut utiliser un arbre équilibré

    Et enfin, pour la fin de ligne je suis prévoyant, c'est tellement le chantier:

  10. #10
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par Sve@r Voir le message

    • main n'est pas de type void
    • pas de "&" devant un nom de tableau (c'est déjà une adresse)
    • tu concatènes ".txt" à un nom qui contient peut-être déjà cette extension
    • dico.dat est utilisé en tant que variable (inexistante) ; et je ne comprends pas ce "s" à "dico.dats". Etre dyslexique c'est une chose, le laxisme en est une autre...
    • tu ne gères pas le premier fichier si le second s'ouvre mal (d'ailleurs on ne voit pas trop ce que tu veux faire si l'un des deux s'est mal ouvert)
    • tes noms de pointeurs sont super trop longs (c'est pas une erreur mais quand tu en sera à ta 30° ligne avec fgets(Pointeur_fichier_dico) tu te diras que ça risque de le devenir)...
    • j'ai mis int au lieu de void
    • J'ai retiré le &
    • je partais dans l'idée de ne saisir que le nom du fichier sans l'extention... du coup je retire cette ligne
    • pardon pour le s après dat, mauvaise relecture
    • je viens d'ajouté un simple return 0 après chacune des 2 ligne printf
    • j'ai modifié en mettant P au lieu de pointeur....
    • j'ai ajouté les guillemets à dico.dat


    j'ai donc mis un fichier dico.dat et un fichier avec du texte dans le même dossier que le main.c

    pour l'instant j'en suis donc à ouvrir les 2 fichiers

    je bug des la compilation
    j'ai un signal rouge sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        if (P_fichier_texte == NULL)
    expected expression before if
    et il me précise aussi sur la ligne 7
    variable 'P_fichier_texte' set but not used

    voici l’évolution du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
        //creaton des pointers fichiers
        FILE *P_fichier_texte;
        FILE *P_fichier_dico;
     
        //tableau pour recuperer le nom du fichier
        char fichier_texte [20];
     
        //saisie du non du fichier
        printf("Veuillez saisir le fichier à ouvrir sans l'extantion :");
        scanf("%s",fichier_texte);
     
     
     
        //ouverture du fichier
        P_fichier_texte=fopen(fichier_texte,"r"),
     
        if (P_fichier_texte == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier %s",fichier_texte);
            return 0;
        }
     
        P_fichier_dico=fopen("dico.dat","r");
        if (P_fichier_dico == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier dico.dat");
             return 0;
        }
    }
    j'ai bloqué la partie de vérification du fichier texte pour voir si la suite fonctionne et j'ai le message impossible d'ouvrir le fichier dico.dat

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    j'ai un signal rouge expected expression before if

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //ouverture du fichier
        P_fichier_texte=fopen(fichier_texte,"r"),
      if (P_fichier_texte == NULL)
    Le compilateur n'est qu'un robot. Tant qu'il lit et qu'il comprend, il ne dit rien. Jusqu'au moment où il ne comprend plus.
    Malheureusement ce moment arrive souvent bien après l'erreur de syntaxe initiale qui provoque l'incompréhension finale. En effet, l'erreur ne devient une erreur qu'au moment où la suite du code n'est plus compatible avec la syntaxe erronée, comme par exemple cette virgule à la ligne 6 au lieu du point-virgule qui est alors comprise comme opérateur séquentiel mais avec lequel le if suivant ne peut pas s'accorder.

    Donc quand tu as une erreur sur une ligne X, il faut alors toujours regarder la précédente (voire celle juste avant...). Ceci dit, dans l'absolu, l'erreur est vraiment sur la ligne 7 car on ne met pas d'alternative après un séquentiel. Si par exemple tu remplaces cette ligne par 2+2; if (P_fichier_texte == NULL) en rajoutant 2+2 en tant qu'instruction à "séquencer" alors ça compilera...

    Citation Envoyé par bosk1000 Voir le message
    pour l'instant j'en suis donc à ouvrir les 2 fichiers
    Tu devrais essayer de réfléchir plus profondément avant de coder. Que doit faire ton programme ? Comment tu vas implémenter les structures de travail ? Comment vas-tu découper tes actions ?
    Essaye de dessiner des boites en écrivant ce qu'elles doivent faire...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Tu devrais essayer de réfléchir plus profondément avant de coder. Que doit faire ton programme ? Comment tu vas implémenter les structures de travail ? Comment vas-tu découper tes actions ?
    Essaye de dessiner des boites en écrivant ce qu'elles doivent faire...
    heu la virgule ha oui..... évident pourtant...
    erreur rectifié
    oui il faut pensé à la ligne précédente.

    mon soucis pour cette exercice c'est que je n'ai d'avance pas les compétence pour faire tout cette exercice
    je vais devoir apprendre dans le dur

    j'ai en fait déjà un corrigé fourni avec, Educatel est si pourri qu'avec les exercice noté on te file les corrigé
    en gros tu fait le corrigé tu l'envoie comme si tu l'avais fait et on te donne 18/20
    super j'ai rien appris a par copié à la main un code

    donc je ne peux que le créer en voyant étape par étape
    déjà actuellement l'ouverture de mes fichiers ne fonctionne pas
    car lorque je tape l'argument "texte.txt", j'ai le message "Impossible d'ouvrir le fichier texte.txt"
    si je zap la vérification j'ai le message
    "Impossible d'ouvrir le fichier dico.dat"

    donc j'ai un soucis sur la direction pour ouvrir mes fichier
    j'ai fait un test avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      P_fichier_texte = fopen("C:dico.dat", "r");
        if (P_fichier_dico == NULL)
        {
            // On affiche un message d'erreur
            printf("Impossible d'ouvrir le fichier dico.dat\n");
             return 0;
        }
    en plaçant dico.dat dans la racine de C et la pas de soucis
    donc le cheminement à l'air de gêner

    quand j'arriverais à les ouvrir tous les deux sans soucis
    je devrais passer à l'étape suivante qui concerne à mettre dans un tableau tampon le dictionnaire

  13. #13
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ceci dit, dans l'absolu, l'erreur est vraiment sur la ligne 7 car on ne met pas d'alternative après un séquentiel.
    que veux tu dire par alternative et séquentiel?

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    j'ai en fait déjà un corrigé fourni avec, Educatel est si pourri qu'avec les exercice noté on te file les corrigé
    en gros tu fait le corrigé tu l'envoie comme si tu l'avais fait et on te donne 18/20
    super j'ai rien appris a par copié à la main un code
    Oui ben si ça fonctionne... ensuite ben tu apprendras au fil de l'eau...

    Citation Envoyé par bosk1000 Voir le message
    déjà actuellement l'ouverture de mes fichiers ne fonctionne pas
    car lorque je tape l'argument "texte.txt", j'ai le message "Impossible d'ouvrir le fichier texte.txt"
    si je zap la vérification j'ai le message
    "Impossible d'ouvrir le fichier dico.dat"
    Le mode "r" signifie "volonté de lire" donc implique que le fichier existe déjà...

    Citation Envoyé par bosk1000 Voir le message
    que veux tu dire par alternative et séquentiel?
    Alternative: faire un choix selon certains critères (le "if" quoi !!!)
    Séquentiel: Qui se suivent =>
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int a, b, c;
    fopen(fichier, "r")
    ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Techniquement, Svear, tes exemples de virgules ne sont pas l'opérateur séquentiel...
    Ce sont respectivement les séparateurs de déclaration et d'arguments.

    On peut parfois en trouver dans une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int palindrome(const char* mot, unsigned int longueur) {
        for(unsigned int i = 0, j=longueur; i<j; ++i, --j) {
            if (mot[i] != mot[j]) return 0;
        }
        return 1;
    }
    Sinon, dans des codes étranges, conçus spécialement pour perturber les utilisateurs, et espérer que le compilateur voudra bien inliner une fonction.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  16. #16
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui ben si ça fonctionne... ensuite ben tu apprendras au fil de l'eau
    je vais donc partir sur ton conseil et taper le corrigé


    je vais certainement revenir ici pour quelque question de compréhension sur ce que je vais taper

  17. #17
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Pour l'exercice, essaie d'améliorer le code.
    C'est à dire de chercher ce qui pourrait être amélioré, et comment.

    Et de la, prouve que ta correction ne casse pas tout.

    Avec ca, normalement, tu apprendras certainement.

    Puis viens nous en parler, et avec nos différents points de vue, on t'aidera à voir plus loin (du moins, j'espère )
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Techniquement, Svear, tes exemples de virgules ne sont pas l'opérateur séquentiel...
    Ce sont respectivement les séparateurs de déclaration et d'arguments.
    Hum... je te crois mais quelle différence cela a-t-il ??? Dans la mesure où ça place les déclarations et les arguments en séquence au même titre que celui de ta boucle place les initialisations et incréments en séquence de la même façon ; on peut alors les voir pareil non ? Deux choses semblables à une troisième sont alors semlables entre elles...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Membre averti Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Points : 367
    Points
    367
    Par défaut
    Merci
    je vais tout retaper
    travailler dessus et ensuite le mettre pour avoir vos avis

  20. #20
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Hum... je te crois mais quelle différence cela a-t-il ??? Dans la mesure où ça place les déclarations et les arguments en séquence au même titre que celui de ta boucle place les initialisations et incréments en séquence de la même façon ; on peut alors les voir pareil non ? Deux choses semblables à une troisième sont alors semlables entre elles...
    La différence, c'est qu'en temps qu'opérateur, la virgule définit une expression, et surtout possède la propriété que son opérande gauche est intégralement évalué avant que l'opérande droit commence à l'être. Donc, il y a effectivement une séquence.
    Ce n'est pas le cas avec les arguments d'une fonction.

    printf("%d", 1), printf(" %d", 2) affiche "1 2", tandis que int i = 0; printf("%d %d", ++i, ++i) est un "undefined behaviour" parce que justement les deux i++ ne sont pas ordonnés. Cela peut afficher "1 2", comme "2 1", ou encore "Vous avez utilisé un UB, j'ai formaté votre disque dur.".

    Pour l'initialisation des variables, je crois que la séquence est respectée (mais ca demande vérification)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Base de donnée] Vérification automatique MySQL
    Par remss02 dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/05/2015, 19h41
  2. Vérification automatique de programme shell
    Par kromei dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 14/03/2013, 16h57
  3. [AC-2003] vérification automatique commandes
    Par Expensive dans le forum Access
    Réponses: 3
    Dernier message: 08/11/2012, 18h49
  4. Programme de vérification d'orthographe
    Par phil23 dans le forum C
    Réponses: 7
    Dernier message: 05/10/2007, 17h13
  5. Outil pour vérification automatique des liens
    Par zazaraignée dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/01/2005, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo