Please Aidez Moi dans ce Programme c

Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
nar6du14 Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour Svp aidez Moi pour exécuter ce programme en c , Merci



#include<stdlib.h>
#include<conio.h>
typedef struct cell{
int valeur;
struct cell *suivant;
} cellule;
typedef cellule* liste;
liste saisieListe(void) {
/* rend l'adresse de début de la liste saisie */
liste li=NULL, precedent, actuel ;
int val, erreur ;
printf("\n\n\n\n\n");
do {
printf("\n\t prochaine valeur ? (un caractère pour finir) : ");
erreur=scanf("%d",&val) ;
if(erreur<=0) break ; /* scanf() rend le nombre de variables lues sans
erreur */
actuel=(liste)malloc(sizeof(cellule)) ;

actuel->valeur=val ;
if(li==NULL) li=actuel ;
else
precedent->suivant=actuel ;
precedent=actuel ;
} while (1) ;
actuel->suivant=NULL ;
return(li) ;
}
void afficheListe(liste li) {
liste li1=li;
printf("\n\n\n\n\t affichage de la liste li : ");
for(li1=li;li1!=NULL;li1=li1->suivant){
printf(" %d",li1->valeur);
}
getch();
}
int LongueurListeIt(liste li) {
int n=0 ;
while(li!=NULL) {
n++ ;
li=li->suivant ;
}
return(n) ;
}
int NbOccIt(liste li, int val) {
int nb=0 ;
while(li!=NULL) {
if (li->valeur==val)
nb++ ;
li=li->suivant ;
}
return(nb) ;
}
void insertionPremier(liste *li, int val) {
liste nouv ;
nouv=(liste)malloc(sizeof(cellule));
nouv->valeur=val ;
nouv->suivant=*li ;
*li=nouv ;
}
void insertionMilieu(liste li, int val) {
liste nouv ;
nouv=(liste)malloc(sizeof(cellule));
nouv->valeur=val ;
nouv->suivant=li->suivant ;
li->suivant=nouv ;
}
liste chercherPrecedent(liste li, liste suiv) {
/* rendre l'adresse NULL si on pas trouvé */
while(li->suivant!=suiv && li!=NULL)
li=li->suivant ;
return(li) ;
}
liste chercherIndice(liste li, int i) {
/* rend l'adresse du(i+1)-ième, NULL si liste trop courte */
int j ;
for(j=0 ;j<i && li!=NULL ;j++)
li=li->suivant ;
return(li) ;
}
liste chercherElement(liste li, int val) {
/* rend l'adresse, NULL si on n'a pas trouvé */
while(li!=NULL && li->valeur!=val)
li=li->suivant ;
return(li) ;
}
void supprimerSuivant(liste precedent) {
liste supp ;
if(precedent==NULL || precedent->suivant==NULL) {
puts("\n\n\n\n\t\t rien a supprimer!");
return;
}
supp=precedent->suivant;
precedent->suivant=supp->suivant;
free(supp);
}
void supprimerPremier(liste *li) {
liste supp ;
if(*li==NULL) {
puts("\n\n\n\n\t\t rien a supprimer!");
return;
}
supp=*li;
*li=(*li)->suivant ;
free(supp);
}
void supprimerTout(liste li) {
liste supp ;
while(li !=NULL) {
supp=li->suivant;
free(li) ;
li=supp;
}
}
int main() {
liste li, laux, pl, li1;
int val, i, n, k, choix;

li=saisieListe();

afficheListe(li);
do {


printf("---------------------------------\n");
printf("1 Pour saisir une nouvelle liste ....... \n");
printf("2 Pour afficher la liste saisie ....... \n");
printf("3 Pour calculer la longueur ....... \n");
printf("4 Pour calculer le nombre d'occ. ....... \n");
printf("5 Pour inserer au debut ....... \n");
printf("6 Pour inserer au milieu ....... \n");
printf("7 Pour supprimer au debut ....... \n");
printf("8 Pour supprimer au milieu ....... \n");
printf("9 Pour quitter le programme ....... \n");
printf("0 Donner votre choix s.v.p. .......:");
scanf("%d",&choix);
switch(choix) {
case 1 : {

li=saisieListe();
afficheListe(li);
break;
}
case 2 : {

afficheListe(li);
break;
}
case 3 : {

k=LongueurListeIt(li);
printf("\n\n\n\n\t\t la longueur est %d\n",k);
getch();
break;
}
case 4 : {

printf("\t\t val ? ");
scanf("%d",&val) ;
n=NbOccIt(li,val);
printf("\n\n\n\n") ;
printf("\t\t le nombre d'occurence de %d est %d\n",val,n);
getch();
break;
}
case 5 : {

printf("\n\n\n\n\t\t valeur a inserer au debut ? ");
scanf("%d",&val) ;
insertionPremier(&li,val);
afficheListe(li);
break;
}
case 6 : {

printf("\n\n\n\n\t\t valeur a inserer au milieu ? ");
scanf("%d",&val) ;
insertionMilieu(li,val);
afficheListe(li);
break;
}
case 7 : {

supprimerPremier(&li);
afficheListe(li);
break;
}
case 8 : {

supprimerSuivant(li->suivant);
afficheListe(li);
break;
}
default : break;
}
}while(choix);
supprimerTout(li);
afficheListe(li);

getche();
}

11 réponses

jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Salut,

déjà il n'y a pas stdio.h...utile pour les printf je crois.
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
j l ai ajouté et ça marche pas :( mm prb
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
A quoi sert laux, pl, li1 dans le main je ne comprends pas et aussi tu dois rajouter un return 0; à la fin de ton main...c'est quoi conio ?
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
li1 est dans la liste en haut
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
li1 est une variable locale à la fonction afficheListe. Donc non visible dans le main.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabouf Messages postés 1271 Date d'inscription   Statut Membre Dernière intervention   271
 
et quels sont les messages d'erreur ?
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
je sais pas le programme s'éxecute pas je sais pas c koi le prb
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
ça marche chez moi et j'ai ajouté quelques modifications:

https://pastebin.com/VQur4kaj

J'ai enlevé les variables inutile et remplacer les getch par getchar().
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Tu peux me l'envoyer pr le voir stp ?
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Ben clique sur le lien
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
J l'ai exécuter mais il m'affiche seulement prochaine valeur ? (un caractère pour finir) et il se ferme :(
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Ah ben je sais pas moi ça marche sous linux. Il fait tout ce qui est dit dans le menu...
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Je veux aussi lui ajouter cette fonction ms je sais pas comment




void vider_buffer(){
scanf("%*[^\n]");
getchar ();
}
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Elle fera quoi exactement cette fonction, à toi de trouver l'algorithme...et d'implémenter.

Un string dans l'array.
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
:( pfff
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Je n'ai pas lu le programme car il est illisible.
Merci donc de le poster en le mettant dans des balises "code" (bouton <> à droite du bouton souligné).

Sinon void vider_buffer(){
scanf("%*[^\n]");
getchar ();
}
Ok pour la fonction. C'est quoi qui te pose problème dedans ? Tu as juste à l'appeler dès que tu utilises un scanf() ;-).

Et un conseil, rajoute un system("pause"); à la fin de ton programme dans (juste avant le return 0; du main()) pour éviter que ton programme se ferme.
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche avec pause mais , Je vx Qu'il m'affiche le menu :(
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Ton programme fonctionne après modification, quelqu'un peut le confirmer ? c'est louche que t'aies encore des problèmes.
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
:( y'a encore des prb mm si les modification qu'on a fait
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ravis d'avoir fait fonctionner ton programme sans avoir lu ton programme. Mais comme je t'ai dit, je ne lirai pas ton code si tu ne repostes pas la version actuelle en utilisant la balise code car en l'état c'est illisible.
0
Manika alberta Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
j ai pas compris comment faire pr utiliser la balise code ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Lorsque tu écris ton commentaire, tu as 4 boutons (B, I, S,<>) qui te permettent une mise en forme. B : pour le gras, I pour l'italique, S pour le souligné et enfin <> pour garder l'indentation du code. Tu cliques donc sur <>. Une balise < code > < / code > va apparaître. T'écris ton code entre les deux. Par exemple : < code > int main(void)... < /code >. (J'ai mis un espace entre < et > et code, mais il y en a pas).
0