Accueil > Forum > > > > programmatin des piles et listes en C
programmatin des piles et listes en C
jeudi 7 mai 2009 à 13:14:30 |
programmatin des piles et listes en C

amenienis
|
Bonjour; SVP s'il ya qque qui peut me programmer cet algo en langage C car je ne sais pas comment on programme les listes et les piles?! ///// Tour de boucle 2 : Pile1=1,5, Pile2=vide, Liste=4 Je colorie 1 Je regarde les voisins de 1 (2,4) 2 et 4 sont de la bonne couleur mais 4 a déjà été traité Pile1=5, Pile2=2, Liste=4,1 Je colorie 5 Je regarde les voisins de 5 (2,4,6,8) 2 et 4 sont de la bonne couleur mais ont déjà été traités Pile1=vide, Pile2=2, Liste=4,1,5 J'inverse les piles ///// Merci bien d'avance
|
|
jeudi 7 mai 2009 à 15:17:20 |
Re : programmatin des piles et listes en C
|
jeudi 7 mai 2009 à 18:54:59 |
Re : programmatin des piles et listes en C

CptPingu
|
> SVP s'il ya qque qui peut me programmer cet algo en langage C Hahahaha. Relis donc le règlement : http://www.cppfrance.com/reglement.aspx
|
|
vendredi 8 mai 2009 à 07:24:58 |
Re : programmatin des piles et listes en C

amenienis
|
oui vous avez raison Merci de me le dire,,c'est pourquoi j'ai essayé de le faire personnelement mais je trouve qque pbs dans l'exécution:==>le terminal m'affiche processus arrêtè après que je lui donne la case de départ et la case d'arivèe ( je parle d'un labyrinthe)
Voici mon pg de test de recherche : //Recherche chemin PileEntiers *pile1; PileEntiers *pile2; int tab[40]; int succ_h,succ_d,succ_b,succ_g; int don,don_pas,i=0,j=0;
pile1 = NULL; pile2 = NULL; pile1 = empiler (cas_d, pile1); while(pile1!=NULL) { don=consulter(pile1); tab[i]=don; i++; printf("la case marquèe est : %d ",tab[i]); pile1=depiler(pile1); //test des successeurs et remplissage de la pile2 if (verifier_haut(A,don)==0) {succ_h=don-8;if (succ_h!=cas_a) pile2 = empiler (succ_h, pile2); else break;} if (verifier_droite(A,don)==0) {succ_d=don+1;if (succ_d!=cas_a) pile2 = empiler (succ_d, pile2); else break;} if (verifier_bas(A,don)==0) {succ_b=don+8;if (succ_b!=cas_a) pile2 = empiler (succ_b, pile2); else break;} if (verifier_gauche(A,don)==0) {succ_g=don+8;if (succ_g!=cas_a) pile2 = empiler (succ_g,pile2); else break;} //la pile1 prend les elements de la pile2 while (pile2!=NULL) { don_pas=consulter(pile2); while(j<i) //verifier que la donnèe de passage n'existe pas dans le tab de marquage { if (tab[j]!=don_pas) j++ ; else { depiler(pile2); break;}} if (j==i) pile1=empiler(don_pas,pile1); j=0; } } if (succ_h==cas_a) tab[i]=succ_h; if (succ_d==cas_a) tab[i]=succ_d; if (succ_b==cas_a) tab[i]=succ_b; if (succ_g==cas_a) tab[i]=succ_g; if (pile1==NULL) printf("\npas de chemin"); //desallocation desallouer (pile1); pile1 = NULL; desallouer (pile2); pile2 = NULL;
jespère bien que qqun me l'explique pourquoi??! Merci Crdlt
|
|
vendredi 8 mai 2009 à 17:08:59 |
Re : programmatin des piles et listes en C

nickydaquick
|
Salut, deja dans ton programme il y a des affaires qui nous manquent: comme les definitions des fonctions empiler, depiler,consulter,verifier_haut .. et j'en passe! ou encore certaines variables qui apparaissent comme par miracle : cas_d . Il serait interessant que tu postes le code comme il faut ou du moins un lien vers celui-ci sinon nous resterons tous dans le brouillard concernant ton probleme. Bonne continuation. [ Lien ] je suis heureux de faire partie d'une grande famille ...!
|
|
samedi 9 mai 2009 à 09:04:14 |
Re : programmatin des piles et listes en C

amenienis
|
voici mon code complet!!!SVP si qqun peut m'aider à trouver mes fautes!! MERCI BIEN!!
#include <stdio.h> #include <stdlib.h> #include<unistd.h> #include "graphiqu_enis.h"
//Manipulation des piles typedef struct pileentiers { int donnee; struct pileentiers *suivant; } PileEntiers;
PileEntiers *empiler (int a, PileEntiers* p) { PileEntiers *nouveau;
nouveau = (PileEntiers *) malloc (sizeof (PileEntiers)); if (nouveau == NULL) { printf ("Erreur d'allocation\n"); exit (1); }
nouveau->donnee = a; nouveau->suivant = p; return nouveau; }
PileEntiers *depiler (PileEntiers *p) { PileEntiers *sommet;
sommet = p;
if (sommet != NULL) { sommet = sommet->suivant; free (p); }
return sommet; }
int consulter (PileEntiers *p) { if (p == NULL) { printf ("Erreur : pile vide"); exit (1); }
return p->donnee; }
void desallouer (PileEntiers *p) { PileEntiers *sommet = p;
while (sommet != NULL) { sommet = depiler (sommet); } } void afficher_contenu (PileEntiers *p) { PileEntiers *pile = p; printf ("Contenu de la pile :\n"); while (pile != NULL) { printf ("\t%d\n", pile->donnee); pile = pile->suivant; } if(pile==NULL) printf("pile vide\n"); }
//fonction qui verifie si une case donnee admet un mur a droite ou non; cette fonction retourne 1 si oui, 0 sinon int verifier_droite(int X[][50],int cas) { int d; if((cas>=1)&&(cas<8)) d=X[0][cas-1]; else if ((cas>=9)&&(cas<8*2)) d=X[2][cas-9]; else if ((cas>=17)&&(cas<8*3)) d=X[4][cas-17]; else if ((cas>=25)&&(cas<8*4)) d=X[6][cas-25]; else d=1; return d; }
//verifier bas int verifier_bas(int X[][50],int cas) { int b; if((cas>=1)&&(cas<=8)) b=X[1][cas-1]; else if ((cas>=9)&&(cas<=8*2)) b=X[3][cas-9]; else if ((cas>=17)&&(cas<=8*3)) b=X[5][cas-17]; else if ((cas>=25)&&(cas<=8*4)) b=1; return b; }
//verifier gauche int verifier_gauche(int X[][50],int cas) { int g; if((cas>1)&&(cas<=8)) g=X[0][cas-2]; else if ((cas>9)&&(cas<=8*2)) g=X[2][cas-10]; else if ((cas>17)&&(cas<=8*3)) g=X[4][cas-18]; else if ((cas>25)&&(cas<=8*4)) g=X[6][cas-26]; else g=1; return g; } //verifier haut int verifier_haut(int X[][50],int cas) { int h; if((cas>=1)&&(cas<=8)) h=1; else if ((cas>=9)&&(cas<=8*2)) h=X[1][cas-9]; else if ((cas>=17)&&(cas<=8*3)) h=X[3][cas-17]; else if ((cas>=25)&&(cas<=8*4)) h=X[5][cas-25]; return h; }
int main(void) { int A[50][50]; int abs=92.5; int hv=400; int bv=305; int lh=305; int d=20; int k=1; int cas_d,cas_a; char a[3];
/* Initialisation de l'environnement grahique avec les coordonnées extrêmales. */ Initialisation_Graphique(0,0,650,450);
/*Trassage de rectange*/ DrawRectangle(20,20,600,400,Red);
FILE* fichier = NULL;
fichier = fopen("fich.txt", "r"); if (fichier != NULL) { int c; int i,j; i=j=0; //Lecture de fichier ligne par ligne while((c=fgetc(fichier)) != EOF) { if(c=='\n') { i++; j=0; } else if(c=='0' || c=='1') A[i][j++]=c-'0'; } //Traçage des murs for(i=0;i<8;i++) { if (i%2==0) //Les murs verticaux { for(j=0;j<8;j++) { Hauteur_Texte(10.0); itos(k,a); EcritXY(46.25+72.5*j,352.5-95*i,a,Black); k++; if (A[i][j]==1) Trait(abs,bv,abs,hv, Red); abs+=72.5; } abs=92.5; hv=bv; bv-=95; } else //Les murs horizontaux { for(j=0;j<8;j++) { Hauteur_Texte(10.0); itos(k,a); EcritXY(46.25+72.5*j,352.5-95*i,a,Black); k++; if (A[i][j]==1) Trait(d,lh,abs,lh, Red); d+=72.5; abs+=72.5; } abs=92.5; d=20; lh-=95; } } } //Choisir les cases
do{ printf("\ndonner la case de depart : \t"); scanf("%d",&cas_d); printf("\ndonner la case d'arrivèe : \t"); scanf("%d",&cas_a); } while(cas_d<1 || cas_d>32 || cas_a<1 || cas_a>32);
//Recherche chemin PileEntiers *pile1; PileEntiers *pile2; int tab[40]; int succ_h,succ_d,succ_b,succ_g; int don,don_pas,i=0,j=0;
pile1 = NULL; pile2 = NULL; pile1 = empiler (cas_d, pile1); afficher_contenu(pile1); while(pile1 !=NULL) { don = consulter (pile1); printf("\nla donnee consultee est %d",don); tab[i]=don; printf("\nla donnee mis dans le tableau est %d\n",don); i++;printf("%d",i); pile1=depiler(pile1); //test des successeurs et remplissage de la pile2 if (verifier_haut(A,don)==0) {succ_h=don-8;printf("trouve succ_h=%d",succ_h);if (succ_h!=cas_a) pile2 = empiler (succ_h, pile2); else break;} if (verifier_droite(A,don)==0) {succ_d=don+1;printf("trouve succ_d=%d",succ_d);if (succ_d!=cas_a) pile2 = empiler (succ_d, pile2); else break;} if (verifier_bas(A,don)==0) {succ_b=don+8;printf("trouve succ_b=%d",succ_b);if (succ_b!=cas_a) pile2 = empiler (succ_b, pile2); else break;} if (verifier_gauche(A,don)==0) {succ_g=don+8;printf("trouve succ_g=%d",succ_g);if (succ_g!=cas_a) pile2 = empiler (succ_g,pile2); else break;} //la pile1 prend les elements de la pile2 while (pile2!=NULL) { don_pas=consulter(pile2); while(j<i) //verifier que la donnèe de passage n'existe pas dans le tab de marquage { if (tab[j]!=don_pas) j++ ; else { depiler(pile2); break;}} if (j==i) pile1=empiler(don_pas,pile1); j=0; } } if (succ_h==cas_a) tab[i]=succ_h; if (succ_d==cas_a) tab[i]=succ_d; if (succ_b==cas_a) tab[i]=succ_b; if (succ_g==cas_a) tab[i]=succ_g; if (pile1==NULL) printf("\npas de chemin\n"); //desallocation desallouer (pile1); pile1 = NULL; desallouer (pile2); pile2 = NULL;
Attente (); Fin_Graphique ();
fclose(fichier),fichier=NULL;
return 0; }
|
|
Cette discussion est classée dans : liste, listes, piles, pile1, pile2
Répondre à ce message
Sujets en rapport avec ce message
Deux listes chaînées à comparer et modifier [ par poiuytrez3 ]
Bonjour, je suis en train de créer un jeu à la shoot them up. De façon simplifié mon problème est le suivant :j'ai une liste chaînée qui contient des
Les listes [ par lapuissance ]
J'ai des problemes avec les listes chainées simplement et doublement .Je demande de l'aide à ceux qui ont matrise ce sujet, à travers un cour dans l
classe liste [ par programe_smi ]
on m'a demandé de réaliser une classe "liste" de listes chaînées comportant des objets de types différents pour cela on m'a dmandé de creer une classe
j'ai besoin d'un cours sur les listes et les piles en language c [ par anoir19 ]
salut les amisje m'appelle anoir etudiant 2eme annéé informatique lmdj'ai besoin d'un cours sur les listes et les piles en language cmerci
trier d'une liste chainee en utilisant 2 piles [ par bella086 ]
bsr voila j'ai un petit bon disant grand pblm sur c++ je dois charger une pile p1 a partir dune liste chainee et puis trier la pile p1 a laide d'une
gestion d'un cinema [ par nanci20 ]
slt, j'ai un program a realise en langage c++, c'est apropot de la gestion d'un cinema alors je doit creer une liste qui contien les reservation des p
[EXCEL]retour-ligne dans liste [ par tandi623 ]
j'ai créé une liste sous excel (6 lignes de texte de différentes longueur) j'ai fais "données-validation-autoriser liste" la liste est sous une autre
Chaine de caractères et liste de mots [ par joshua509 ]
J'ai un gros problème d'algorithme. Comment faire pour placer,tous les mots séparer d'un espace d'une chaine de caractère,dans une liste chainée de mo
Classe - Liste Chainees [ par snoozriton ]
Bonjour à tous, je me retrouve bloqué et je ne vois pas trop comment me décoincer. Il s'agit d'un exercice à faire. Dans cet exercice nous avons des E
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|