Le code C pour trouver la valeur max ?

Bonjour,
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. Par exemple, j'ai un fichier texte comme ci-dessous. Tu peux le mettre dans l'ordre croissant et décroissant et trouver la valeur maximale de cette colonne? Merci beaucoup.

-1329.
-1533.
-1107.
19.
-828.
-625.
-76.
40.
-220.
100.
161.
425.
5648.
5490.
1589.
1660.
1705.
4494.
4365.
4050.
Configuration: Windows Vista
Firefox 3.0.3

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Lucie merci de ta contribution mais tu as oublié de donné un nom à ta fonction et ça ne répond pas vraiment au problème.

    Voici comment faire :
    #include <stdio.h>
    #include <limits.h>
    
    int main(int argc,char *argv[0]){
        char buffer[255];
        char *filename;
        double x,max;
        int first_max_set = 0;
        FILE *fp;
    
        if(argc<2){
            fprintf(stderr,"usage: %s filename\n",argv[0]);
            return 1;
        }
        filename = argv[1];
        fp = fopen(filename,"r");
        if(!fp){
            fprintf(stderr,"%s: can't read %s\n",argv[0],filename);
            return 2;
        }
        while(fgets(buffer,255,fp)){
            if(sscanf(buffer,"%lf",&x) == 1){
                if(!first_max_set){
                    first_max_set = 1;
                    max = x;
                }else if(x > max) max = x;
            }
        }
        fclose(fp);
        printf("max = %lf\n",max);
        return 0;
    }

    Bonne chance
    1. une petite fonction qui cherche le max entre 2 elements passé en argument :
      int (int a, int b){
      if(a>b){
      return(a);
      }else{
      return(b);
      }

      a et b etant les chiffre à recuperer dans le fichier

      pour trier, il existe plusieur alogrithme de tri que tu peux trouver en cherchant sur google. le principale étant de recuperer les entiers qui sont dans ton fichier et de les mettre dans un tableau
      1. Contributeur
        Salut,
        Il manque un nom à ta fonction ;-)))
        Cdlt
    2. Contributeur
      Salut,
      Voici un programme qui te permettra de récupérer le contenu de ton fichier dans un tableau.
      Il te reste plus qu'à trouver le maximum et à trier ton tableau. Ca je te laisse faire, c'est du classique ;-))).

      #include <stdio.h>
      #include <stdlib.h>
      
      #define MAX 50
      
      int main(void){
          FILE *fp=fopen("tmp.log","r");
          if(fp==NULL){
              fputs("erreur ouverture fichier\n",stderr);
              return 0;
          } else{
              //remplissage tableau
              char buffer[12];
              double tab[MAX];
              size_t nbElt=0;
              while(fgets(buffer,sizeof buffer,fp)){
                  tab[nbElt++]=strtod(buffer,NULL);
              }
              fclose(fp),fp=NULL;
      
              //affichage
              for(size_t i=0;i<nbElt;i++){
                  printf("%.0f ",tab[i]);
                  fflush(stdout);
              }
         
              putchar('\n');
          }
          
          return 0;
      }
      


      Cdlt
      1. suffit qu'il integre la fonction que j'ai ecrite, en y rajoutant un nom bien sur que j'ai oublié, dans son programme principale, plutot que d'ecrire un gros bloc avec tout dedans.
        @+
        1. Contributeur
          Voici sa question :
          pour trier et trouver la valeur max dans un fichier texte

          Ton fonction retourne juste le maximum entre deux nombres.
      2. a inclure dans un programme qui recupere les nombres dans le fichier, et qu'il suffira de passer en paramettre de la fonction. je n'ai pas dit que ça repondait entierement a sa question. je vais pas lui ecrire tout le programme non plus.
        bye