Programme c

hooda -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai écrit cette fonction (dev ,c++),il compile mais il y a un problème pendant l'exécution, pouvez vous m'aider à résoudre ce problème !:( merci d'avance

// fonction ajouter debut
liste * ajouter_debut (liste * ma_liste)
{
liste * nouv_etudiant;
nouv_etudiant=(liste*)malloc(sizeof(liste));

printf("le nom est: \n");
scanf("%s",(nouv_etudiant -> nom));

printf("son prenom est: \n");
scanf("%s",(nouv_etudiant -> prenom));

printf("son age est: \n");
scanf("%d",&(nouv_etudiant -> age));

printf("son code est: \n");
scanf("%d",&(nouv_etudiant -> code));

nouv_etudiant -> suivant = ma_liste;
return(nouv_etudiant );

}

int main()
{

liste *ma_liste;

int n,i,;
ma_liste=NULL;

printf("n=");
scanf("%d",&n);

for(i=0;i<=n;i++)
{
ma_liste= ajouter_debut(ma_liste);
}

return(0);

}

2 réponses

  1. hooda
     
    ce problème est posé depuis longtemps jusqu'au j'ai arrivé à le résoudre par moi même et encore pas de réponse !c bizarre mais comment fonctionne ce fameux forum !! y a pas de membre ou quoi !
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bonjour hooda,

      Nous sommes des bénévoles et nous essayons de répondre à un nombre maximum de réponses. Sauf que parfois, les posteurs ne nous aident pas vraiment. Par exemple, si vous aviez posté votre code dans les balises adéquates (balise "code" à droite du bouton "souligné") avec de l'indentation, cela aurait été beaucoup plus agréable à lire et plus simple à trouver l'erreur.
      Parfois, les posteurs ne nous mettent pas non plus le message d'erreur qu'ils mentionnent. Comme vous pouvez vous l'imaginer, c'est très utile puisque cela précise d'où vient l'erreur avec la ligne.
      Pour ne pas faire un post inutile, j'ai regardé le début du main et déjà, je rencontre une erreur qui peut faire râler le compilateur : int n,i,; (pas de virgule avant le point virgule).
      Ce qui nous aiderait aussi, ce serait d'avoir la définition de la structure list.
      Cdlt,
      0
  2. hooda
     
    bonjour,
    merci beaucoup excusez mon attitude, ce problème m'a énormément stressée et j'avais personne pour m'aider ,en fait c'était pas seulement un problème de virgule mais il était un disfonctionnement dans l'exécution.. merci en tout cas
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Encore une fois, merci de mettre le message d'erreur et de préciser la ligne qui s'y rapporte...
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Encore une fois, merci de mettre le message d'erreur et de préciser la ligne qui s'y rapporte.
      0
    3. hooda
       
      il ne s'agit pas d'une ligne, mais au cours de l'exécution il ne compte pas le nombre d'occurrence autrement ,je pense qu'il y a un erreur au niveau de la fonction qui compte le nombre d'occurrence .
      voici le code :
      #include<stdio.h>
      #include<stdlib.h>
      #include<string.h>

      struct etudiant
      {
      char nom[25];
      char prenom[20];
      int age;
      int code;
      struct etudiant * suivant ;
      };

      typedef struct etudiant etudiant;
      typedef etudiant liste;

      // fonction ajouter debut
      liste * ajouter_debut (liste * ma_liste)
      {
      liste * nouv_etudiant;
      nouv_etudiant=(liste*)malloc(sizeof(liste));

      printf("le nom est:\n");
      scanf("%s",(nouv_etudiant -> nom));

      printf("son prenom est: \n");
      scanf("%s",(nouv_etudiant -> prenom));

      printf("son age est:\n");
      scanf("%d",&(nouv_etudiant -> age));

      printf("son code est:\n");
      scanf("%d",&(nouv_etudiant -> code));

      nouv_etudiant -> suivant = ma_liste;


      return(nouv_etudiant );

      }


      //fonction recherche

      liste* rech(liste* ma_liste,int x)
      {liste *p=ma_liste;
      while (p !=NULL)
      { if (p->code == x)
      {
      return(p);
      }
      p=p->suivant;

      }
      return(NULL);
      }
      //fonction nombre d'occurence
      int nb_occ(liste* ma_liste,int x)
      { int cp=0;

      if (ma_liste==NULL)
      return(0);

      else
      {
      while( (ma_liste = rech(ma_liste,x)) !=NULL)
      {
      ma_liste=ma_liste->suivant;
      cp++ ;
      }
      return(cp);
      }
      }

      //fonction affiche

      void affiche(liste* ma_liste)
      {
      liste *temp;
      temp = ma_liste;

      while(temp !=NULL)
      {
      printf("le nom est %s \n",temp->nom);
      printf("son prenom est: %s \n",temp->prenom);
      printf("son age est:%d \n",temp->age);
      printf("son code est: %d \n \n",temp->code);

      temp=temp->suivant;
      }
      }

      int main()
      {
      liste* ma_liste;
      ma_liste=NULL;

      int n,i,v,x;

      printf("n=");
      scanf("%d",&n);

      for(i=1;i<=n;i++)
      {
      ma_liste=ajouter_debut(ma_liste);
      }
      affiche(ma_liste);

      printf("x=");
      scanf("%d",&x);


      v = nb_occ(ma_liste,x);
      printf("le nombre d'occurence est %d \n",v);


      system("pause");

      return(0);

      }
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Heureusement que j'ai dit de poster le code dans des balises "codes" (à droite de "souligner"). Sinon c'est illisible.
      De plus "il ne compte pas le nombre d'occurrence autrement ". Autrement que quoi ? Pouvez-vous donner un exemple, ça sera plus simple.
      0