Please Aidez Moi dans ce Programme c

Fermé
Manika alberta Messages postés 15 Date d'inscription samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013 - 27 avril 2013 à 14:15
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 - 23 mai 2013 à 01:19
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 samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
27 avril 2013 à 14:43
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 14:46
j l ai ajouté et ça marche pas :( mm prb
0
jeremux Messages postés 58 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
27 avril 2013 à 14:49
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 14:53
li1 est dans la liste en haut
0
jeremux Messages postés 58 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
Modifié par jeremux le 27/04/2013 à 14:58
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 1267 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 24 décembre 2015 271
27 avril 2013 à 15:02
et quels sont les messages d'erreur ?
0
Manika alberta Messages postés 15 Date d'inscription samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:04
je sais pas le programme s'éxecute pas je sais pas c koi le prb
0
jeremux Messages postés 58 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
Modifié par jeremux le 27/04/2013 à 15:10
ç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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:12
Tu peux me l'envoyer pr le voir stp ?
0
jeremux Messages postés 58 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
27 avril 2013 à 15:17
Ben clique sur le lien
0
Manika alberta Messages postés 15 Date d'inscription samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:21
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 samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
27 avril 2013 à 15:28
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:14
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 samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
Modifié par jeremux le 27/04/2013 à 15:22
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:24
:( pfff
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 816
27 avril 2013 à 15:39
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 15:48
ça marche avec pause mais , Je vx Qu'il m'affiche le menu :(
0
jeremux Messages postés 58 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 30 mai 2013 4
27 avril 2013 à 15:59
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 16:01
:( y'a encore des prb mm si les modification qu'on a fait
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 816
27 avril 2013 à 16:11
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 samedi 27 avril 2013 Statut Membre Dernière intervention 15 mai 2013
27 avril 2013 à 16:28
j ai pas compris comment faire pr utiliser la balise code ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 816
28 avril 2013 à 14:34
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