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

 


Dernière réponse
Sujet : pb avec ma fonction trier et ma fonction chargement
Carbon_14 Ce n'est qu'un extrait ? Le tableau (structure disc), il est bien dimensionné qq part, j'espère. Les champs "auteur", ils sont de longueur fixe ou variable selon la longueur de la chaîne (+1 pr le \0 terminal)?
 
Vu leur code ASCII, les noms en MAJUSCULE précèdent TOUS les noms en Minuscules, sait pas si ça peut aider...
Si on veut que "toto1" précède "TOTO2", faut comparer la version "majuscule" de chaque chaîne.
 
Pour éviter toutes ces recopies, un moyen plus "léger" serait (c'est ce que je fais pour des bases de données (chimie/formules/) de structure perso), c'est d'avoir un tableau d'int qui donne le rang de l'enregistrement. On manipule que ce tableau et non chaque enregistrement.  :)  
En en ayant un autre qui donne le numéro d'objet par rapport à sa place, on a accès dans tous les sens (quelle place a le disque x dans la base, quel est le y-ième disque de la base).
 
Si c'est un exercice, faut pas changer la méthode.. :D

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Carbon_14 Ce n'est qu'un extrait ? Le tableau (structure disc), il est bien dimensionné qq part, j'espère. Les champs "auteur", ils sont de longueur fixe ou variable selon la longueur de la chaîne (+1 pr le \0 terminal)?
 
Vu leur code ASCII, les noms en MAJUSCULE précèdent TOUS les noms en Minuscules, sait pas si ça peut aider...
Si on veut que "toto1" précède "TOTO2", faut comparer la version "majuscule" de chaque chaîne.
 
Pour éviter toutes ces recopies, un moyen plus "léger" serait (c'est ce que je fais pour des bases de données (chimie/formules/) de structure perso), c'est d'avoir un tableau d'int qui donne le rang de l'enregistrement. On manipule que ce tableau et non chaque enregistrement.  :)  
En en ayant un autre qui donne le numéro d'objet par rapport à sa place, on a accès dans tous les sens (quelle place a le disque x dans la base, quel est le y-ième disque de la base).
 
Si c'est un exercice, faut pas changer la méthode.. :D
zed255 bonjour a tous
 
je suis assez novice en c, je rencontre 2 problemes :
 
[g]1--dans ma fonction trie ci jointe quand je rentre des elements du tableau
en majuscule et en minuscule, la fonction ne trie pas- elle trie uniquement
si ce sont que des majuscules uniquement ou des minuscules

//les fonctions trier[/g]
void permute(disc *tableau,int i,int j);
void trier(disc *tableau,int nbdisc)
 {
        int i,j,min=0,tmp=0;
 
  for(i=0;i<nbdisc;i=i+1)
  // if(islower(tableau[i].auteur) !=0)
    //toupper(tableau[i].auteur);
  {
   min=i;
 
   for(j=i;j<nbdisc;j=j+1)
   {
    if(strcmp(tableau[min].auteur,tableau[j].auteur)>0)
 
     min=j;
   }
     if(min !=i)
     permute(tableau,i,min);
 
  }
}
 
 
void permute(disc* tableau,int i,int min)
{
 char temp[NBRE];
  int tmp;
 
  strcpy (temp,tableau[min].auteur);
  strcpy(tableau[min].auteur,tableau[i].auteur);
  strcpy(tableau[i].auteur,temp);
 
  tmp=tableau[min].annee_album;
  tableau[min].annee_album=tableau[i].annee_album;
  tableau[i].annee_album=tmp;
 
  tmp=tableau[min].reference;
  tableau[min].reference=tableau[i].reference;
  tableau[i].reference=tmp;
 
 
}
 
2--dans ma fonction chargement et sauvegarde lorsque je ferme mon programme
mon fichier est vide , mon programme efface tout lors de la fermeture.......

 
#include "discotheque.h"
 
 
/*prototype fonction sauvegarde BD*/
int sauvegarde_fichier(disc *tableau,int nbdisc)
{
 int i;
 FILE *fp;
 
 
  fp=fopen("discotheque.dat","w" );
   if(fp==NULL)
 
 { printf("erreur lors de la sauvegarde %s",fp);
   return -1;}
 
 for(i=0;i<nbdisc;i++)
 {
  fprintf(fp,"%s\t %d\t %d\t",tableau[i].auteur,&tableau[i].annee_album
  ,&tableau[i].reference);
 }
 printf("La sauvegarde est faites \n" );
 fclose(fp);
 return 0;
}
 
//prototype chargement
int chargement_fichier(disc* tableau, int *pt_nbdisc)
{
 int i;
 //char buffer;
 FILE *fp;
 
 fp=fopen("discotheque.dat","r" );
  if(fp==NULL)
 {
 printf("erreur lors du chargement %s",fp);
 return -1;
 }
 
 for(i=0;i<(*pt_nbdisc);i++)
 // while((fgets(buffer,*pt_nbdisc,fp)!=NULL) && (i<NBRE_DISC))
 {
  fscanf(fp,"%s\t %d\t %d\t",tableau[i].auteur,&tableau[i].annee_album
  ,&tableau[i].reference);
 
 }
 
 printf("Le chargement est fait \n" );
 fclose(fp);
 return 0;
}
merci pour votre aide

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)