Please Aidez Moi dans ce Programme c
Manika alberta
Messages postés
16
Statut
Membre
-
nar6du14 Messages postés 506 Statut Membre -
nar6du14 Messages postés 506 Statut Membre -
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();
}
#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
-
Salut,
déjà il n'y a pas stdio.h...utile pour les printf je crois.
-
-
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 ?
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
je sais pas le programme s'éxecute pas je sais pas c koi le prb
-
ç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(). -
-
-
-
-
-
Je veux aussi lui ajouter cette fonction ms je sais pas comment
void vider_buffer(){
scanf("%*[^\n]");
getchar ();
} -
Elle fera quoi exactement cette fonction, à toi de trouver l'algorithme...et d'implémenter.
Un string dans l'array. -
-
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. -
ça marche avec pause mais , Je vx Qu'il m'affiche le menu :(
-
-
-
-
-
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).
-