begin process at 2012 05 29 03:19:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

gestion d'une bibliothèque


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gestion d'une bibliothèque

lundi 14 mars 2011 à 22:50:25 | gestion d'une bibliothèque

samanta26

slt, j'ai besoin d'aide SVP!!
j'ai un mini projet de gestion d'une bibliothèque!! je dois implémenter un ensemble de fonctions :saise, tri, recherche...et je dois aussi implémenter les livres de la bibliothèque sous forme d'un tableau de structure livre de dim 1 et de taille 100...
mon prblème c'est que le nombre de livre sur lequl j'effectue toutes ces opérations est variable du coup il faut travailler avec des pointeurs...j'ai programmé un code et ça se compile mais il me sort une erreur'la mémoire ne peut pas être read'....voici mon code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct livre
{
int num_inv;
int annee_edition;
char titre[20], nom_auteur[20];
};

livre saisie()
{
livre L;
printf("\n\n\t Veuillez saisir les donnees du livre \n\n");
printf("Entrer le numero d'inventaire :\n");
scanf("%d", &L.num_inv);
printf("Entrer le titre du livre :\n");
scanf("%s", &L.titre);
printf("Entrer le nom de l'auteur :\n");
scanf("%s", &L.nom_auteur);
printf("Entrer l'annee d'edition :\n");
scanf("%d", &L.annee_edition);
return(L);
}

void affichage(livre L)
{
printf("\t\n Les caracteristiques du livre sont: \n\t Le numero d'inventaire: %d \n\t Le titre du livre: %s \n\t Le nom de l'auteur: %s \n\t L'annee d'edition: %d",L.num_inv,L.titre,L.nom_auteur,L.annee_edition);
}

void recherche(livre *m)
{
int i,n;
int numr;
printf("\n\nveuillez entrer le numero d'inventaire du livre recherche :");
scanf("%d",&numr);
m = (livre *)malloc(n * sizeof(int));
for (i=0;i<n;i++)
{
if ((*(m+i)).num_inv==numr)
{
printf("le livre recherche est disponible");
affichage(*(m+i));
}
}
}
void tri(livre *p)
{
int i,j,n;
p = (livre *)malloc(n * sizeof(int));
livre x;
for (j=0;j<n;j++)
{
for (i=0;i<j;i++)
if ((*(p+i)).num_inv < (*(p+i+1)).num_inv)
{
x=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=x;

}

}
for (i=0;i<n;i++)

affichage(*(p+i));
}

main()
{int n;
printf("\n\n\n\t\t\t=> Gestion de bibliotheque <=\n\n\n");
printf("\n\n\n\t\Veuillez entrer le nombre de livre que vous voulez saisir : \n\n\n");
scanf("%d",&n);
livre tab[100];
int i;
for(i=0; i<n; i++)
{
*(tab+i)=saisie();
}
for(i=0; i<n; i++)
{
affichage(*(tab+i));
}
printf("\n\n\nles livres tries par numero d'inventaire décroissant:\n\n\n");
recherche( &tab[0]);
tri( &tab[0]);
free(tab);
getch();
}
Merci d'avance
mardi 15 mars 2011 à 08:43:40 | Re : gestion d'une bibliothèque

Chouchou182

Salut,

De nos jours, on a la chance de pouvoir compiler souvent. Aussi, construis ton programme petit à petit et teste au fur et à mesure chaque partie.

Je te conseille de commencer par l'affichage : définis ta structure, place deux ou trois éléments dans un tableau (statiquement : dans le code source écris la valeur de ces éléments), et écris une fonction main très simple qui affiche le contenu du tableau.

Une fois que cela fonctionne, tu pourras te pencher sur les fonctionnalités plus complexes, par exemple la saisie, et ainsi de suite.

Quelques remarques plus concrètes :

malloc et free ne semblent pas nécessaire dans ton programme : évite-les pour le moment

idem pour conio.h

Pour accéder à l'élément i du tableau m : m[i] est plus lisible que *(m+i) quoique équivalent.

* * *

J'ai à mon tour une question. Cela ressemble à un exercice scolaire. Dans le cadre de quel cours sont posés de tels exercices ? Algorithmique ? Programmation ? Structures de données ? Histoire ? Est-ce une punition ?

Bonne prog,
--
Chouchou.
mardi 15 mars 2011 à 14:07:11 | Re : gestion d'une bibliothèque

samanta26

slt, merci chouchou, j'ai deja essayé cela :) et pr repondre à ta question, c'est dans le cadre des structures de données...j'ai fais qlq modifications dans mon programme, mais ça marche pas:s SVP j'ai besoin d'aide, voici le code:
#include<stdio.h>
#include<conio.h>
#include<string.h>

struct livre
{
int num_inv;
int annee_edition;
char titre[20], nom_auteur[20];
};

livre saisie()
{
livre L;
printf("\n\n\t Veuillez saisir les donnees du livre \n\n");
printf("Entrer le numero d'inventaire :\n");
scanf("%d", &L.num_inv);
printf("Entrer le titre du livre :\n");
scanf("%s", &L.titre);
printf("Entrer le nom de l'auteur :\n");
scanf("%s", &L.nom_auteur);
printf("Entrer l'annee d'edition :\n");
scanf("%d", &L.annee_edition);
return(L);
}

void affichage(livre L)
{
printf("\t\n Les caracteristiques du livre sont: \n\t Le numero d'inventaire: %d \n\t Le titre du livre: %s \n\t Le nom de l'auteur: %s \n\t L'annee d'edition: %d",L.num_inv,L.titre,L.nom_auteur,L.annee_edition);
}

void recherche(livre *m, int N)
{
int i;
int numr, *p;
printf("\n\nveuillez entrer le numero d'inventaire du livre recherche :");
scanf("%d",&numr);

for (i=0;i<N;i++)
{
if ((*(m+i)).num_inv==numr)
{
printf("le livre recherche est disponible");
affichage(*(m+i));
}
}
}
void tri(livre *p, int N)
{
int i,j;
livre x;
for (j=0;j<N;j++)
{
for (i=0;i<j;i++)
if ((*(p+i)).num_inv < (*(p+i+1)).num_inv)
{
x=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=x;

}

}
for (i=0;i<N;i++)
{
affichage(*(p+i));
}
}

main()
{int n;
printf("\n\n\n\t\t\t=> Gestion de bibliotheque <=\n\n\n");
printf("\n\n\n\t\Veuillez entrer le nombre de livre que vous voulez saisir : \n\n\n");
scanf("%d",&n);
livre tab[100];
int i;
for(i=0; i<n; i++)
{
*(tab+i)=saisie();
}
for(i=0; i<n; i++)
{
affichage(*(tab+i));
}
printf("\n\n\nles livres tries par numero d'inventaire décroissant:\n\n\n");
recherche( &tab[0], n);
tri( &tab[0],n);
getch();
}

Merci d'avance!!!
mardi 15 mars 2011 à 15:47:22 | Re : gestion d'une bibliothèque

Chouchou182

Salut.

Ça marche pas, dis-tu. Il faudrait être un peu plus clair.

Il y a des soucis dans la fonction de tri. Il me semble qu'un i < N - j s'est changé en i < j.

Bonne prog,
--
Chouchou.
mardi 15 mars 2011 à 17:21:41 | Re : gestion d'une bibliothèque

samanta26

slt, merci chouchou pr ta remarque!!! mon prblème c'est qu'il n'effectue aucun tri et concernant la recherche, il m'affiche le livre recherché 2 fois et il m'affiche tous les autres livres!!
mardi 15 mars 2011 à 17:38:41 | Re : gestion d'une bibliothèque

Chouchou182

Hello,

Il affiche tous les livres parce qu'à la fin de la fonction tri, tu demandes d'afficher tous les livres (ce qui n'est pas le rôle d'une fonction de tri).

As-tu essayé de corriger la condition de la boucle interne (sur i) dans la fonction de tri ?

Pour y voir plus clair, remplace

*(tab + i) par tab[i]
&tab[0] par tab

Bonne prog,
--
Chouchou.
mardi 15 mars 2011 à 17:47:58 | Re : gestion d'une bibliothèque

samanta26

slt, j'ai déja essayé ça mais ça marche pas aussi :s:s!!!! En fait le problème d'affichage j'arrive pas à le résoudre!!!SVP si tu px me montrer comment afficher seulement les livres triés et comment afficher seulement le livre recherché!!!!
Merci d'avance!!!!
mercredi 16 mars 2011 à 08:52:24 | Re : gestion d'une bibliothèque

Chouchou182

Bonjour,

Relis ma première remarque : « fais en sorte que l'affichage fonctionne avant de passer à la suite.» Aussi il ne devrait pas y avoir de soucis d'affichage maintenant !

D'abord, une fonction pour afficher tout le tableau :

Code C/C++ :
void afficherN(livre L[], int N)
{
  int i ;
  for (i = 0 ; i < N ; ++i)
    affichage(L[i]);
}


Ensuite il faut retirer la boucle d'affichage de la fonction de tri.

Enfin tu peux envisager un main comme celui qui suit :

Code C/C++ :
int
main()
{
  int n;
  printf("Veuillez entrer le nombre de livre que vous voulez saisir : ");
  scanf("%d",&n);
  livre tab[100];
  int i;
  for(i=0; i<n; i++)
  {
    tab[i] = saisie();
  }

  printf("Tous les livres :\n");
  afficherN(tab, n);

  recherche(tab, n);

  printf("\nLes livres tries par numero d'inventaire décroissant:\n");
  tri(tab,n);
  afficherN(tab,n);
  return 0;
}


1° une phase de saisie
2° un affichage pour montrer que la saisie a bien fonctionné
3° on cherche un élément et on en affiche les caractéristiques si il est trouvé.
4° on trie et affiche tout le tableau trié.

Une fois que ça fonctionne, il y a moult façons d'améliorer ce code :
* programmer un vrai algorithme de tri (pas un truc folklorique) ;
* permettre à l'utilisateur de se tromper lors de la saisie ;
* ne pas passer des structures entre fonctions par valeur (i.e. copie).

Bonne prog,
--
Chouchou.
jeudi 17 mars 2011 à 21:24:10 | Re : gestion d'une bibliothèque

samanta26

merci chouchou pour ton aide j'ai déja resolu le problème, maintenant je veux implémenter une fonction ajout et retrait...SVP concernant les façons d'améliorer le code, je voulais te demander si tu as déja un exemple de ces trucs!! est ce que tu px me le passer :) !!!
maerci d'avance


Cette discussion est classée dans : int, printf, scanf, entrer, livre


Répondre à ce message

Sujets en rapport avec ce message

problème de fonction [ par norton ] voila j'aimerai savoir pk mon compilateur me dit :"ain.cpp(41) : warning C4551: function call missing argument list"je débute en C++ voila mon code :# programme en C [ par graminach ] on a un pb pour la question 2b!le programme ne tourne pas en boucle et affiche meme en cas de valeur correcte erreurmerci d'avancehttp://www-ipst.u-st tri d'un tableau de struct [ par sdiri_med ] Salut à tous j'ai un petit problème de tri d'un tableau de structurede but d'extraire l'employer le plus âgé Pouvez-vous m'aider s.v.p a résoudre se scanf d'une structure imbriqée [ par sdiri_med ] Bonsoir, j'ai rencontré beaucoup des problèmes avec les structures je voudrai vous demander comment faire un appel d'une structure dans une autre pou tri d'un tableau de structure [ par sdiri_med ] bonjour pour tout le monde j'ai un petit problème de trie par age d'un tableau des employées voila mon code: [code] #include #include recherche comment faire fonctionner ce code via une interface graphique (pilotage port //) [ par cedpic ] voici le code que j ai creer qui marche tres bien en mode console mais je souhaiterais les piloter par une interface graphique en remplacent les bouto trier un tableau de stucture en c [ par peli20 ] [^^happy13]salut, j ai un petit probleme en c ,j espere que vous m aidiez.. bon, j essaie d elaborer un programme faisant la gestion des contact, le r STRUCTURE EN C++ [ par smar ] VOICI MOT CODE EN C++ #include struct date {int jour; int mois; int annee; }; struct Etudiant { char nom[50]; char prenom[50]; int cin; date d; int ni Erreur [ par IMFM ] Bonjour, mon compilateur me donne ce message "type name expected" a chaque fois que je fais la compilation. je vais vous laisser mes codes. //Declarat probleme en "switch" [ par imoum ] [code=cpp]void gestion_du_domaine(TabGestion *gestDomaine,int variable,int *nbre_etudiant,int *nbre_enseignant,struct etudiant liste_etudiant[100],str


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales