Urgent!! prob avc mon projet C

Résolu
yadhus Messages postés 34 Statut Membre -  
yadhus Messages postés 34 Statut Membre -
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;
}
Configuration: Windows XP
Firefox 2.0.0.12

2 réponses

  1. -Shadow-
     
    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
    1. yadhus Messages postés 34 Statut Membre 3
       
      Merci d'avance
      0
      1. yadhus Messages postés 34 Statut Membre 3 > yadhus Messages postés 34 Statut Membre
         
        Please HELP me!
        le prgramme ne fonctionne toujours pas
        0
  2. amigo
     
    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
    1. yadhus Messages postés 34 Statut Membre 3
       
      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