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 :

Chercher le code en C pour trouver la valeur max dans un fichier texte


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut Chercher le code en C pour trouver la valeur max dans un fichier texte
    Bonjour à tous,
    J'ai cherché dans le forum le code pour trier et trouver la valeur max dans un fichier texte. J'en ai trouvé quelques un. Mais c'est pas en C. Quelqu'un peut me donner le code en C qui fait cela. C'est gentil. Merci beaucoup.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Qu'appelles tu la "valeur max dans un fichier texte" ?

    Ça dépend de la manière dont est organisé ton fichier, de la façon dont sont stockées les valeurs... En bref, de la façon par laquelle a été généré le fichier.

    Il faudrait que tu nous donnes plus d'informations pour qu'on puisse t'aider.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Citation Envoyé par mabu Voir le message
    Bonjour,

    Qu'appelles tu la "valeur max dans un fichier texte" ?

    Ça dépend de la manière dont est organisé ton fichier, de la façon dont sont stockées les valeurs... En bref, de la façon par laquelle a été généré le fichier.

    Il faudrait que tu nous donnes plus d'informations pour qu'on puisse t'aider.
    Par exemple, j'ai un fichier texte comme ci-dessous. Tu peux le metre dans l'ordre croissant et décroissant et trouver la valeur maximale de cette colone? Merci beaucoup.

    -1533.
    -1329.
    -1107.
    -828.
    -625.
    -76.
    -220.
    19.
    40.
    100.
    161.
    425.
    5648.
    5490.
    1589.
    1660.
    1705.
    4494.
    4365.
    4050.

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Ton fichier est déjà ranger dans l'ordre croissant/ décroissant ??

    Si oui alors soit tu lit la dernière ligne (ordre croissant) et tu auras la plus grande valeur. Dernière ligne si tu as un ordre décroissant.

    Sinon trie tout d'abords tes données et ensuite reprend les lignes du dessus dans le cas qui va bien :p

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Citation Envoyé par rilou Voir le message
    Ton fichier est déjà ranger dans l'ordre croissant/ décroissant ??

    Si oui alors soit tu lit la dernière ligne (ordre croissant) et tu auras la plus grande valeur. Dernière ligne si tu as un ordre décroissant.

    Sinon trie tout d'abords tes données et ensuite reprend les lignes du dessus dans le cas qui va bien :p
    Non, il n'est pas rangé dans l'ordre croissant ou décroissant. Je ne sais pas comment faire ça. Tu pourrais me donner le code en C qui fait ça?

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par codon21 Voir le message
    Tu pourrais me donner le code en C qui fait ça ?
    Alors, il y a toujours plusieurs façon de faire une chose en C, il n'y a pas UN code pour un problème.

    Dans ton cas, il faut :
    • Lire le fichier
    • Stocker les valeurs
    • Trier les valeurs
    • Les enregistrer triées dans un nouveau fichier
    • Donner la valeur maximum


    1- Lecture du fichier.

    Une lecture de fichier est assez simple en C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FILE * f = fopen("le_fichier.txt", "r");
    if(NULL == f) {
        perror("le_fichier.txt");
    } else {
       char buf[256];
       while(NULL != fgets(buf, sizeof buf, f) {
          printf("buf\n");
       }
       fclose(f);
    }
    2- stockage des valeurs :
    Dans ce qui suit, je n'affiche plus les valeurs à la lecture, mais les stocke et les affiche en toute fin.
    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
    int valeurs[100];
    FILE * f = fopen("le_fichier.txt", "r");
    if(NULL == f) {
        perror("le_fichier.txt");
    } else {
       int i, cnt = 0;
       char buf[256];
       while(NULL != fgets(buf, sizeof buf, f) {
          valeurs[cnt ] = strtol(buf, NULL, 10);
          ++cnt ;
          if(cnt  >= 100) {
              printf("Attention : trop de valeurs dans le fichier.\n");
              break;
          }
       }
       for(i = 0; i < cnt; ++i) {
          printf("valeur %d : %d\n", i, valeurs[i]);
       }
       fclose(f);
    }
    Et ainsi de suite.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    et le tri, ça doit être l'exercice qu'on t'a demandé de faire..

    Et que donc nous ne ferons pas à ta place

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    et le tri, ça doit être l'exercice qu'on t'a demandé de faire..

    Et que donc nous ne ferons pas à ta place
    Non, c'est pas ce que tu pensais. C'est pas un exercice. Je fais un programme pour tracer les données dans un fichier texte. Mais je ne sais pas comment le trier pour afficher la valeur max et min. C'est pour ça, j'ai besoin de votre aide.

  9. #9
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Dans ce cas commence par mettre sur papier (du vrai papier hein pas du papier WORD ni NOTEPAD et autre ) et ce grace à un crayon TES idées.

    Marque sur ce papier la succession d'étapes qui vont te permettre de trouver ton résultat final. Construit ainsi ton algorithme.

    Je suppose que plus de personnes seront prettes à t'aider si tu offre une petite ébauche, prouvant ainsi que tu as au moins tenter

    Exemple pour illustrer mes propos(de ce que tu devrait faire sur feuille pour ton cas ) :
    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
     
    ! COMMENTAIRE : Algorithme de mise en route d'un four micro onde
    1- Ouverture de la porte
    2- Mise en place de la viande
    3-
       Si viande congelée
             alors mettre sur "DEFROST"
       Sinon
             alors mettre sur 600 watt
       Fin Si
    4- Fermer la porte
    5- Suivant POIDS VIANDE
             Mettre le TEMPS de cuisson correct
        Fin Suivant
    6- Appuyer sur DEMARER
    Ce que j'ai écrit au dessus peut paraître stupide, mais certaine personne n'y pense même pas et ce lance parfois (moi tout le temps et c'est pas bien je sais) dans le programme sans vraiment penser aux différents problèmes que l'on risque de rencontrer.

    Essais de prendre en compte le NOMBRE MAXIMUM que tu devra trier et aussi le nombre minimum.

    Pense à comment tu ferais pour trier (et la je te met sur la route) :

    Prenons 4 verres et 1 bol.

    1 le bol est totalement vide.
    Les verres contiennent 3, 7, 2 et 1 billes (dans l'ordre).

    En te servant de ce bol comme de récipient provisoire pour tes billes, comment pourrais-tu trier dans l'ordre croissant le contenu des verres ?

    a- Prendre un verre au hazard
    b- Comparer le nombre de billes présente dans ce verre avec ceux contenu dans chacun des autres verres
    c- Si le nombre est plus grand (ou plus petit comme tu veux) échanger les contenu par l'intermédiaire du bol vide.
    d - etc... je te laisse deviner la suite

    Mais a aucun moment il ne faut poser les billes sur la table ! Le BOL est la pour empecher cela et servir de recipient PROVISOIRE !!!


    Bonne chance

  10. #10
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Apparemment, le but n'est pas de trier mais de trouver les valeurs minimum et maximum, ce qui est plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    - Définir deux variables min et max
    - Ouvrir le fichier et lire la première valeur. La mettre dans min et dans max
    - Tant qu'on n'est pas arrivé à la fin du fichier
      - lire une valeur
      - si cette valeur est inférieure à min, la mettre dans min
      - si cette valeur est supérieure à max, la mettre dans max
    - Fermer le fichier

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Merci de m'avoir aidé pour trouver la valeur max et min. Mais mon but est de trier le fichier texte et le mettre dans un nouveau fichier.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par codon21 Voir le message
    Merci de m'avoir aidé pour trouver la valeur max et min. Mais mon but est de trier le fichier texte et le mettre dans un nouveau fichier.
    dans ce cas l'algo est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    1) créer un tableau suffisamment grand pour pouvoir contenir toutes les données qui seront lues  => cf la fonction calloc()
     
    2) lire toutes les données => cf les fonctions fopen(), fgets() et strtod() (ou strtol() si tu n'as que des entiers) et les stocker dans ton tableau
     
    3) trier le tableau => cf un algo tri à bulle par exemple voir le net. Sinon tu as la fonction qsort qui fait le boulot.
     
    4) écrire toutes les données dans le nouveau fichier => cf les fonctions fopen() et fprintf()
     
    5) fermer les 2 fichiers => fclose()
     
    6) libérer la mémoire du tableau alloué => free()
    y a plus qu'à coder...

  13. #13
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ou une variation
    ...
    insérer dans le tableau à la bonne place directement comme cela, il n'y a pas à trier en fin de lecture
    ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Par défaut
    Si jamais t'es pas chaud du trie par insertion parceque tu ne vois pas comment le mettre en oeuvre.
    Tu peux utiliser un trie a bule particulierement simple a comprendre mais d'une lenteur proportionnel a sa simplicitee

    Et assure toi que les chiffres que tu dois trier ne sont pas trop grands ou trop petits pour rentrer dans un int

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/01/2015, 07h36
  2. [AC-2003] Code VBA pour trouver la valeur max
    Par jokair dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/08/2010, 09h47
  3. Comparaison de trois variables pour trouver min et max
    Par Wylwaryn dans le forum Assembleur
    Réponses: 1
    Dernier message: 19/03/2007, 10h20
  4. Réponses: 19
    Dernier message: 04/10/2006, 16h53
  5. [VBA-E]Methode pour trouver une valeur qui apparait plusieur fois
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/05/2006, 13h11

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