Le code C pour trouver la valeur max ?
codon21
Messages postés
26
Statut
Membre
-
lucieb31 Messages postés 363 Statut Membre -
lucieb31 Messages postés 363 Statut Membre -
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.
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
-
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 -
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 -
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 -
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.
@+ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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