Programme c

Fermé
hooda - Modifié par hooda le 26/03/2012 à 23:10
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 mars 2012 à 23:24
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

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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 mars 2012 à 14:28
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
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 mars 2012 à 21:08
Encore une fois, merci de mettre le message d'erreur et de préciser la ligne qui s'y rapporte...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 mars 2012 à 21:11
Encore une fois, merci de mettre le message d'erreur et de préciser la ligne qui s'y rapporte.
0
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 28/03/2012 à 23:25
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