La fonction affichage
Wicky-james
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je voudrais afficher tout la liste de toute les enregistrement de la structure vente et achat donc je n'arrive pas a aficher toute les enregistrement;
je voudrais afficher tout la liste de toute les enregistrement de la structure vente et achat donc je n'arrive pas a aficher toute les enregistrement;
#include <stdio.h> #include <stdlib.h> #define MAX 30 #include <string.h> #include <windows.h> int i, nb; // declaration de la structure typedef struct Vente{ char description_article[MAX]; float prix_unitaire; float montant; int quantite; //le montant, discompte = [montant]*(15%), le montant total soit [montant] - [discompte] char nom_client[MAX]; char nom_fournisseur; }; struct Vente vt[MAX]; typedef struct Achat{ char description_article[MAX]; float prix_unitaire; int quantite; int discompte; float montant; float montant_total; char nom_fournisseur[30]; }; struct Achat ach[MAX]; #include "entete.h" // declaration variable pour creer le fichier reel char fichier[30] = "client.txt"; //notre fichier pour les stockage entrant char four[30]="fournisseur.txt"; //notre fichier pour les stockage entrant du fournisseur char fourn[30] = "fournisseurmod.txt"; //notre fichier pour la modification des stockages entrant char fichiersup[30] = "clientsup.txt"; //notre fichier pour la suppression des stockages entrant char fichiermod[30] = "clientmod.txt"; //notre fichier pour la modification des stockages entrant FILE *client,*clientsup,*clientmod,*fournisseur,*fournisseurmod; float montant_total, emod; void Enregistrer_Vente(){ system("cls"); // pour netoyer le fichier int a; // creation du ficier virtuel FILE * fiche; fiche = fopen(fichier, "wt"); printf("combien de vente voulez vous enregistrer\n"); scanf("%d",&a); if (a<=0) { printf("l'enregistrement annule ,\nle nombre ne pas doit etre inferieur a zero , réessayer"); } for (i=1;i<=a; i++) { printf("Entrer le nom du client : \n"); scanf("%s", &vt[i].nom_client); printf("Entrer la description de l'article : \n"); scanf("%s", &vt[i].description_article); fflush(stdin); printf("Entrer le prix unitaire : \n"); scanf("%f", &vt[i].prix_unitaire); fflush(stdin); printf("Entrer la quantite : \n"); scanf("%d", &vt[i].quantite); fflush(stdin); vt[MAX].montant=vt[i].prix_unitaire*vt[i].quantite; printf("le montant total: %f \n\n" , vt[MAX ].montant); printf("Enregistrement effectuee: \n"); printf("---------------------------------\n"); printf("---------------------------------\n\n"); fprintf(fiche, "Nom:%s\n",vt[i].nom_client); fprintf(fiche, " La description de l'article est : %s \n",vt[i].description_article); fprintf(fiche, " Le prix unitaire est ::%f \n",vt[i].prix_unitaire); fprintf(fiche, " La quantite est : %d \n",vt[i].quantite); fprintf(fiche, " Le montant %f \n",vt[MAX].montant); } fclose(fiche); return (main()); } void Enregistrer_Achat(){ system("cls"); // pour netoyer le fichier // creation du ficier virtuel FILE * fichef; fichef = fopen(four, "wt"); printf("Entrer le nom du fournisseur : \n"); scanf("%s", &ach[i].nom_fournisseur); printf("Entrer la description de l'article : \n"); scanf("%s", &ach[i].description_article); fflush(stdin); printf("Entrer le prix unitaire : \n"); scanf("%f", &ach[i].prix_unitaire); fflush(stdin); printf("Entrer la quantite : \n"); scanf("%d", &ach[i].quantite); fflush(stdin); ach[MAX].montant = ach[i].prix_unitaire * ach[i].quantite ; ach[MAX].discompte=ach[MAX].montant*15/100; ach[MAX].montant_total=ach[MAX].montant-ach[MAX].discompte; printf("le montant avant la deduction: %f \n" , ach[MAX].montant); printf("le montant total: %f \n" , ach[MAX].montant_total); printf("\e Enregistrement effectué: \n"); fprintf(fichef, " %s \n",ach[i].nom_fournisseur); fprintf(fichef, "\n %s \n",ach[i].description_article); fprintf(fichef, " %f \n",ach[i].prix_unitaire); fprintf(fichef, " %d \n",ach[i].quantite); fprintf(fichef, " %f \n",ach[MAX].montant); fprintf(fichef, " %f \n",ach[MAX].montant_total); //fprintf(fiche, "%2.f\n",ach.montant_total); // fermeture du fichier fclose(fichef); return (main()); } void Afficher() { system("cls"); FILE * fiche, * fichef; fiche = fopen(fichier, "rt"); //j'ouvre le fichier en mode lecture pour effectuer la recherche fichef = fopen(four, "rt"); if(!fiche && !fichef) { printf("Impossible d'ouvrir le fichier en lecture\n"); exit(0); } printf("__________L’affichage de la liste des clients, produits, fournisseur ______________\n"); gotoxy(1,1); printf("Nom client\n"); gotoxy(2,1); printf(" produit\n"); gotoxy(14,2); printf("\e Founisseur \n"); gotoxy(24,2); printf(" produit\n"); printf("\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e \e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e- - -\n"); int i; i=6; while(!feof(fiche),(fichef)) { //textbackground(1); fscanf(fiche,"%s \n",vt[i].nom_client); gotoxy(3,i); fscanf(fiche,"%s \n",vt[i].description_article); gotoxy(2,i); printf(fichef,"%s \n",ach[i].nom_fournisseur); gotoxy(14,i); printf(fichef,"%s \n",ach[i].description_article); gotoxy(24,i); i++; printf("\n"); fclose(fiche); fclose(fichef); return (main()); } }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- La fonction affichage
- Fonction si et - Guide
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
2 réponses
Salut,
Indente ton code et mets des balises de codes stp. J'ai deux trois questions déjà avant d'essayer de comprendre pourquoi tu n'arrives pas à afficher. Déjà pourquoi tu "return(main())" dans chacune de tes fonctions?
Ensuite à mon avis l'erreur vient d'une sombre histoire de pointeur, du genre: lorsque l'on accède à un attribut d'un pointeur de structure il faut utiliser "->" à la place de ".". Je pense que ça vient de là, mais vu la tête de ton code et le fait que je ne comprenne pas comment il fonctionne je ne vais pas pouvoir t'en dire plus.
YCN-
Indente ton code et mets des balises de codes stp. J'ai deux trois questions déjà avant d'essayer de comprendre pourquoi tu n'arrives pas à afficher. Déjà pourquoi tu "return(main())" dans chacune de tes fonctions?
Ensuite à mon avis l'erreur vient d'une sombre histoire de pointeur, du genre: lorsque l'on accède à un attribut d'un pointeur de structure il faut utiliser "->" à la place de ".". Je pense que ça vient de là, mais vu la tête de ton code et le fait que je ne comprenne pas comment il fonctionne je ne vais pas pouvoir t'en dire plus.
YCN-
Bonjour,
Appeler la fonction
Faire
Les tableaux
Une ligne telle que
Appeler la fonction
main()est interdit, le compilateur devrait le refuser. Une fonction
voidqui fait
returnde quelque chose est interdite aussi. Donc la ligne
return (main());est doublement impossible. Je suis étonné que le compilateur l'accepte.
Faire
fflush(stdin);est une action curieuse. On peut 'flusher' un périphérique de sortie, pour un périphérique d'entrée cela devrait au mieux ne rien faire. Cela ressemble à un copie d'un code bricolé. J'espère qu'aucun prof n'utilise cela!
Les tableaux
ach[]et
ct[]ont une dimension de
MAX. Il peuvent donc stocker
MAXdonnées de l'indice
0à
MAX-1. Donc faire
ach[MAX]... ou
ct[MAX]est un accès hors limites du tableau. Là aussi le compilateur devrait pouvoir indiquer un 'warning' qui prévient de l'erreur.
Une ligne telle que
while(!feof(fiche),(fichef))est toujours vraie, elle signifie 'tant que le fichier
fichefa pu être ouvert et ignorer l'état fin de fichier de
fiche'. Heureusement le
whilefini par un
returninconditionnel, c'est donc un
if.
merci pour vos conseils vous m'aviez grandement aider...
je vais repenser mes codes......
je prends une pause de 24hr parce que c'est un peu flou, vous venez me faire croire que je dois retounrner a zero, que c'est tres mauvais et vos conseils sont extra, voila je vais suivre a la lettre tout vos conseils pour en finir avec ce programme et commencer un autre....
merci deja...
vos conseils ne sont jamais asez.
je vais repenser mes codes......
je prends une pause de 24hr parce que c'est un peu flou, vous venez me faire croire que je dois retounrner a zero, que c'est tres mauvais et vos conseils sont extra, voila je vais suivre a la lettre tout vos conseils pour en finir avec ce programme et commencer un autre....
merci deja...
vos conseils ne sont jamais asez.
pour les pointeurs j'utilise "." non "->" c'est parce que dans les tutos je ne vois que ca, je vais utiliser votre sugestion pour voir ce que ca donnee
Là, il a juste besoin de pointeurs sur les membres des struct pour ses scanf, donc pas de nécessaires.
Dal