Urgent!! prob avc mon projet C

Résolu/Fermé
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 - 24 mars 2008 à 14:16
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 - 25 mars 2008 à 20:25
Bonjour,
J'ai un problème avec une petite partie de mon projet C en fait il se plante lors de l'exécution pour une raison que j'ignore, Pleasssssssssssssssssssssssssssse j'ai vraiment besoin d'aide
Voici le code source

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


// Cette partie du programme va s'occuper de l'enregistrement des informations sur les ventes de la société X

typedef char * string;
struct produit {
string nom;
float prixuni; //Le prix unitaire
int Q; //Quantité vendue
int TVA; //la TVA
int remise; //les remises
float PTTC; //Prix TTC
float PTTTC; //Prix Total TTC
};


///////////////////////////////////////////Saisie des informations sur les produits///////////////////////////////////////////////////

int * saisie_ventes (struct produit *p, int i){
malloc(5*sizeof(*p));
for (i=1;i<6;i++){
printf("Donner le nom du produit\n");
scanf ("%s", (p+i+2)->nom);
//gets ((p+i)->nom);
printf ("Donner la quantité vendue\n");
scanf ("%d",&(p+i)->Q);
printf ("Donner le prix unitaire\n");
scanf ("%f",&(p+i)->prixuni);
printf ("Donner la valeur de la TVA\n");
scanf ("%d",&(p+i)->TVA);
printf ("Donner la valeur de la remise\n");
scanf ("%d",&(p+i)->remise);
((p+i)->PTTC) = ((p+i)->prixuni) * ( 1 + (((p+i)->TVA) / 100) - (((p+i)->remise) / 100) );
((p+i)->PTTTC) = ((p+i)->PTTC) * ((p+i)->Q) ;
clrscr ();
}
return 0;
}


////////////////////////////////////////////Affichage des informations///////////////////////////////////////////////////////////////


void affiche_ventes (struct produit *p, int i ){
for (i=1;i<6;i++){
printf ("%s\t | %d\t | %.3f\t | %d\t | %d\t | %.3f\t | %.3f\t |\n", ((p+i+2)->nom),((p+i)->Q),((p+i)->prixuni),((p+i)->TVA),((p+i)->remise),((p+i)->PTTC),((p+i)->PTTTC));
}
}





int main (int argc, const char * argv[]) {

struct produit *k;
int i;
saisie_ventes (k,i);
affiche_ventes (k,i);

return 0;
}
A voir également:

2 réponses

Utilisateur anonyme
24 mars 2008 à 14:18
Salut, j'ai repéré la faute:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


// Cette partie du programme va s'occuper de l'enregistrement des informations sur les ventes de la société X

typedef char * string;
struct produit {
string nom;
float prixuni; //Le prix unitaire
int Q; //Quantité vendue
int TVA; //la TVA
int remise; //les remises
float PTTC; //Prix TTC
float PTTTC; //Prix Total TTC
};


///////////////////////////////////////////Saisie des informations sur les produits///////////////////////////////////////////////////

int * saisie_ventes (struct produit *p, int i){
malloc(5*sizeof(*p));
for (i=1;i<6;i++){
printf("Donner le nom du produit\n");
scanf ("%s", &(p+i+2)->nom);
//gets ((p+i)->nom);
printf ("Donner la quantité vendue\n");
scanf ("%d",&(p+i)->Q);
printf ("Donner le prix unitaire\n");
scanf ("%f",&(p+i)->prixuni);
printf ("Donner la valeur de la TVA\n");
scanf ("%d",&(p+i)->TVA);
printf ("Donner la valeur de la remise\n");
scanf ("%d",&(p+i)->remise);
((p+i)->PTTC) = ((p+i)->prixuni) * ( 1 + (((p+i)->TVA) / 100) - (((p+i)->remise) / 100) );
((p+i)->PTTTC) = ((p+i)->PTTC) * ((p+i)->Q) ;
clrscr ();
}
return 0;
}


////////////////////////////////////////////Affichage des informations///////////////////////////////////////////////////////////////


void affiche_ventes (struct produit *p, int i ){
for (i=1;i<6;i++){
printf ("%s\t | %d\t | %.3f\t | %d\t | %d\t | %.3f\t | %.3f\t |\n", ((p+i+2)->nom),((p+i)->Q),((p+i)->prixuni),((p+i)->TVA),((p+i)->remise),((p­+i)->PTTC),((p+i)->PTTTC));
}
}





int main (int argc, const char * argv[]) {

struct produit *k;
int i;
saisie_ventes (k,i);
affiche_ventes (k,i);

return 0;
}

A+
0
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 3
24 mars 2008 à 14:38
Merci d'avance
0
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 3 > yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009
25 mars 2008 à 10:02
Please HELP me!
le prgramme ne fonctionne toujours pas
0
Bonjour,

Ton premier prog était bon sauf à la ligne 50
..,((p­+i)->PTTC),.. quand je le colle dans mon editeur de texte ça devient ,((p-­+i)->PTTC), et le complilateur affiche
,((p­:+i)->PTTC), il y a un caractère bizarre qui se promène.

Une fois corrigé, il compile bien. je ne l'ai pas exécuté.

A+.
0
yadhus Messages postés 33 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 16 mars 2009 3
25 mars 2008 à 20:25
Merci beaucoup
mais enfin j'ai réussit à le faire marcher:
Voilà le code source au cas où:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>


typedef char string[30];
typedef struct produit produit;
struct produit {
string nom;
float prixuni;
int Q;
int TVA;
int remise;
float PTTC; //Prix TTC
float PTTTC; //Prix Total TTC
};


///////////////////////////////////////////Saisie des informations sur les produits///////////////////////////////////////////////////

produit saisie_ventes ( int N,int deb){
int i;
produit *p;
for (i=deb;i<=N;i++){

printf ("Produit %d:\n",i);
printf ("Donner le nom du produit\n");
scanf ("%s", &p[i].nom);
printf ("Donner la quantitÈ vendue\n");
scanf ("%d", &p[i].Q);
printf ("Donner le prix unitaire\n");
scanf ("%f", &p[i].prixuni);
printf ("Donner la valeur de la TVA\n");
scanf ("%d", &p[i].TVA);
printf ("Donner la valeur de la remise\n");
scanf ("%d", &p[i].remise);

p[i].PTTC = (p[i].prixuni) * ( 1 + ((p[i].TVA) / 100) - ((p[i].remise) / 100) );
p[i].PTTTC = (p[i].PTTC) * (p[i].Q) ;

clrscr ();

}
return *p;
}


////////////////////////////////////////////Affichage des informations///////////////////////////////////////////////////////////////


void affiche_ventes (produit *p,int N){
int i;
for (i=1;i<=N;i++){
printf ("%s|%d|%.3f|%d|%d|%.3f|%.3f|\n", p[i].nom,p[i].Q,p[i].prixuni,p[i].TVA,p[i].remise,p[i].PTTC,p[i].PTTTC);
}
}


///////////////////////////////////////////// Saisie du nbr de produits ////////////////////////////////////////////////////////////

int saisie_N (){
int l;
printf ("Donner le nombre de produits vendus\n");
scanf ("%d",&l);
return l;
}

//////////////////////////////////////////////// Nouvelles ventes ////////////////////////////////////////////////////////////

int saisie_supp (){
int l;
printf ("Donner le nombre des nouveaux produits vendus\n");
scanf ("%d",&l);
return l;
}


void malloc ();


///////////////////////////////////////////// MAIN /////////////////////////////////////////////////////////////

int main (int argc, const char * argv[]) {

int N= saisie_N ();
produit *k = (produit *) malloc(N * sizeof( produit));


*k = saisie_ventes (N,1);
int debut;
char a;


do {
do {
printf ("Taper sur (q) pour afficher les ventes\n");
printf ("Taper sur (s) pour ajouter de nouvelles ventes\n");
printf ("Taper sur (t) pour quitter\n");
scanf ("%s",&a);
clrscr ();

} while ((a!='q')&&(a!='s')&&(a!='t'));

switch (a) {


case 's': {
int supp= saisie_supp ();
int debut = N+1;
N=N+supp;
*k=saisie_ventes (N,debut);
} break;

case 'q': {
printf ("Voici vos ventes:\n");
affiche_ventes (k,N);
}break;


}
printf ("Appuyer sur une touche pour revenir au menu\n");
getch ();
clrscr ();

} while (a!='t');



return 0;
}
0