Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1624 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C]prob de tri

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]prob de tri

n°304421
amstaff
Posté le 08-02-2003 à 09:51:55  profilanswer
 

bon voila g un programme ki doi lir dan un fichier des noms et des notes, pui les tries par ordre alphabetique et les afficher
mai le prob c ke ma fonction tri marche po et je c po pkoi
help me plz !  :)  
voici le code :
 
 
 
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define maxi 10
 
 
/* D?claration de la structure de type candidat*/
 
 typedef struct Candidat{
        char nom[20];
        int note;
         }Candidat ;
 
 
void main()
{
 
 
 
 Candidat tab[maxi];
 int compt=0;
 FILE *fichier;
 int i=0;
 char NOM[20];
 int NOTE;
 //int LG_NOM;
 void affichage(Candidat*TAB,int j);
 
 
 
 fichier = fopen("C:\\result.don","r" );
 
 
 
/* verification de l'existence du fichier */
 
 if(fichier==NULL)
 {
  printf("Erreur fichier introuvable\n" );
  exit(-1);
 }
 
/**********************************************/
 
 else
 {
  while(!feof(fichier))
  {
   fscanf(fichier,"%s%d",&NOM, &NOTE);
   tab[i].note=NOTE;
   strcpy(tab[i].nom,NOM);
   compt=compt+1;
   i++;
 
  }
   
  fclose(fichier);
 }
 tri(tab,compt);
 affichage(tab,i);
}
 
 
void affichage(Candidat *TAB,int j)
{
   int k=0;
  while(k!=j)
 
   {
  printf("Nom du candidat : %s\nNote : %d\n",TAB[k].nom,TAB[k].note);
  k++;
   }
 
  fflush(stdin);
  getchar();
 
}
 
void tri(struct Candidat *tab, int nombre)
{
 int i,j;
 struct Candidat cle;
 
 for(i=1;i<nombre;i++)
 {
  cle=tab[i];
  for(j=i-1;(j>=0)&&(strcmp(cle.nom,tab[j].nom)<0);j--)
  tab[j+1]=tab[j];
  tab[j+1]=cle;
 }
}
 
marchi pour votre aide :)

mood
Publicité
Posté le 08-02-2003 à 09:51:55  profilanswer
 

n°304425
Taz
bisounours-codeur
Posté le 08-02-2003 à 10:38:46  profilanswer
 

c'est une histoire d'algo c'est tout.
- petites ramrques: utlise cpp comme balise
- fflush(stdin) n'as tout simplement aucun effet
- le while(!feof)) tu le ranges vite fait (fait une recherche sur le forum, j'ai abordé le problème y a pas longtemps)
 
- int k=0;
 while(k!=j)
 
  {
 k++;
  }  
 
c'est tout simplement un for(k=0; k<j; ++k)
 
- evites les macros, les pseudo-constantes sont la:préfères un "const int max=10;" plutot qu'un #define
 
- compt=compt+1; ou mieux compt++ ou ++compt
- en cas d'aerreur, y a mieux que le printf, y perror
perror("erreur d'ouverture" ) qui t'affiche ton message plus la derniere erreur systeme sur stderr
 
-si tu peut peut-etre utliser un fichier binaire plutot que texte, ça serait plus simple. sinon, pourquoi passer par NOTE et NOM plutot que passer directement par la structure. d'ailleurs, NOM est déjà un pointeur, donc pas de &
 
- dans ta boucle de lecture, à quoi sert i? tu as déjà compt

n°304442
amstaff
Posté le 08-02-2003 à 11:38:49  profilanswer
 

oki thx pour les ptites astuces ki me permetteront d ameliorer mon prog  
mai en ce ki concerne mon tri par odre alfabetik elle est ou l erreur car ma fonction marche (tou le reste marche sof le tri :/ )

n°304446
schumacher
Posté le 08-02-2003 à 11:42:28  profilanswer
 

++Taz a écrit :

- fflush(stdin) n'as tout simplement aucun effet


 
Tout dépend du type de variable concerné.
 
Avec des entiers : inutile/
 
Avec des caractère : obligatoire si on veut éviter les mauvaises surprises ;)

n°304449
Taz
bisounours-codeur
Posté le 08-02-2003 à 11:47:55  profilanswer
 

Schumacher a écrit :


 
Tout dépend du type de variable concerné.
 
Avec des entiers : inutile/
 
Avec des caractère : obligatoire si on veut éviter les mauvaises surprises ;)

quoi tout dépend des variables? sur les flux d'entrée, ça n'a aucun effet ./

n°304781
Musaran
Cerveaulté
Posté le 09-02-2003 à 08:27:03  profilanswer
 

++Taz a écrit :

sur les flux d'entrée, ça n'a aucun effet.

Soyons précis, ça a un effet indéterminé.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°304786
Taz
bisounours-codeur
Posté le 09-02-2003 à 09:30:22  profilanswer
 

Musaran a écrit :

Soyons précis, ça a un effet indéterminé.

ben moi je lis mon K&R et je lis mon man et je vois plus qu'indéterminé: non-défini. et quelque chose qui n'est pas défini peut tres bien ne pas exister

n°305209
Musaran
Cerveaulté
Posté le 10-02-2003 à 05:40:33  profilanswer
 

'undefined', indéfini. C'est juste un petit problème de traduction.
 
Lu je-sais-plus-où :
Quand un comportement est dit 'undefined' c'est qu'il pourrait avoir n'importe quoi comme conséquence.
Par exemple, il pourrait utiliser le modem pour appeler votre belle-mère et l'inviter à dîner.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°305241
amstaff
Posté le 10-02-2003 à 09:13:21  profilanswer
 

Pour ma fonction tri jdoi fair koa alor ?! :)

n°305914
Taz
bisounours-codeur
Posté le 10-02-2003 à 22:40:44  profilanswer
 

Amstaff a écrit :

Pour ma fonction tri jdoi fair koa alor ?! :)

ben tu sors ton crayon HB et tu nous ponds un joli algo, tu le déroules à la main, puis tu essayes de traduire en C (et trouves mieux que le tri a bulles, c'es tle pire de tous. moi j'aime bien le tri par sélection min-max)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C]prob de tri

 

Sujets relatifs
un petit prob avec visual.netchtit prob
ptit prob d'instanciation de paquetageun petit prob de noob
prob avec mes variables...Prob sous Access 2000
[Java] Prob de connection a une base Oracle [Resolu][C] Petit prob quand je compile :/ besoin d'aide
prob avec packageProb de Date
Plus de sujets relatifs à : [C]prob de tri


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR