Example #1
0
/**
 \fn recherche_mot_grille(t_valeurmot mot_dico,t_lettre grille[N][M]);
 \brief recherche un mot dans la grille
 \param (le mot,la grille)
  \return 1 si le mot est present 0 sinon
 */
int recherche_mot_grille(t_valeurmot *mot_dico,t_lettre grille[N][M]){
    int i,j,k=0;
    int chemin_mot_sommet,redondance_lettre_sommet;	
    t_coord chemin_mot_pile[t_max];
    t_coord redondance_lettre_pile[t_max];
	
    /*On recherche la premiere lettre du mot parmis la grille,ce sera nos points de departs*/
    for(i=0;i<N ;i++){
        for(j=0;j<M;j++){
				/*Si on trouve un point de depart*/
               if(grille[i][j].c==mot_dico->mot[k]){
					/*On initialise nos piles de chemin et de redondance*/
                    initpile(&chemin_mot_sommet);
                    initpile(&redondance_lettre_sommet);
					/*On push les coordonnées de depart à nos piles*/
                    push(i,j,chemin_mot_pile,&chemin_mot_sommet);
                    push(i,j,redondance_lettre_pile,&redondance_lettre_sommet);
                    k++;
					/*TANT QUE tout les chemins ne sont pas teste*/
                    while(chemin_mot_sommet!=-1){
                        if(mot_dico->mot[k]=='\0'){
                        		calc_score(mot_dico,chemin_mot_pile,&chemin_mot_sommet,grille);
								return 1;
                        } 
                        chemin(grille,mot_dico->mot[k],&k,chemin_mot_pile,redondance_lettre_pile,&chemin_mot_sommet,&redondance_lettre_sommet); // on cherche le chemin de la prochaine lettre du mot
                    }
               }
        }
    }
	 /*On a parcouru la grille sans trouve de mot on retourne donc 0*/
   return 0;
}
Example #2
0
/*fonction recherche_mot_matrice
*utilisation des fonctions precedentes afin de rechercher un mot dans la matrice jeu
*retourne 1 si le mot donne en parametre est present
*retourne 0 dans le cas inverse
*/
int recherche_mot_matrice(char mot[20],t_case matrice[TAILLE_MATRICE][TAILLE_MATRICE]){
    //declaration
    int i;
    int j;
    int k=0;
    //recherche d'une lettre à partir de la case (0;0)de la matrice jeu
    for(i=0;i<TAILLE_MATRICE;i++){
        for(j=0;j<TAILLE_MATRICE;j++){
               if(matrice[i][j].lettre==mot[k]){
                    //declaration pour chaque départ d'une case
                    int p;
                    //initialisation:
                        //de la structure redondance à -1 pour toutes les lignes, initialisation avec une valeur impossible pour une coordonnees
                    for(p=0;p<TAILLE_MATRICE*TAILLE_MATRICE;p++){
                            redondance[p].ligne=-1;
                    }
                        //de la pile
                    initpile();
                    empiler(i,j);
                    k++;
                        //de la structure redondance
                    redondance[0].ligne=i;
                    redondance[0].colonne=j;
                    //traitement
                    while(sommet!=-1){
                        if(mot[k]=='\0')return 1;
                        chemin(matrice,mot[k],&k,redondance);
                    }
               }
        }
    }
    return 0;
}
Example #3
0
/* set all fields in pile to zero */
static int L_init_pile(lua_State *L) {
	int i;
	CHECKARG(1); ISNUM(1);
	i=TONUM(1);
	if(i<0 || i>=piles) error("init_pile: index %d out of bounds.\n",i);
	initpile(i);
	return 0;
}
Example #4
0
void main () {
	typePile *pile;
	char expr [TAILLEMAX];
	int val;
	char *ptexpr;
	typeNoeud *feuille, *noeud, *droit, *gauche;
	typeNoeud *racine;

	pile = initpile (TAILLEPILE); 
	ptexpr = expr;
	printf ("Entrer une expression postfixee\n");
	fgets (expr, TAILLEMAX, stdin);

	while (*ptexpr == ' ') ptexpr++;
	while ( *ptexpr != '=' && *ptexpr != '\n' ) {
		if (!isdigit (*ptexpr)) {
			droit = depiler(pile); 
			gauche = depiler(pile);
			noeud = creerNoeud (*ptexpr, gauche, droit);  
			empiler (pile, noeud);
			ptexpr++;
		} else {
			sscanf (ptexpr, "%d", &val);
			while (isdigit(*ptexpr)) ptexpr++;
			feuille = creerFeuille (val);     
			empiler (pile, feuille); 
		}
		while (*ptexpr == ' ') ptexpr++;
	}
	racine = depiler(pile);  

	printf ("\nExpression infixee : \n");
	infixe (racine); 
	printf ("\n\n");
	printf ("Expression prefixee : \n");
	prefixe (racine);
	printf ("\n\n");
	printf ("Valeur de l'expression : %d\n", eval (racine));
}
Example #5
0
int main (void) {
    
	/* Declaration d'un objet pile */
	typePile *pile;
    
    // VARIABLES STD
	char expr [TAILLEMAX];
	int val;
	char *ptexpr;
    
    // VARIABLES DE L'ARBRE
	typeNoeud *feuille, *noeud, *droit, *gauche;
	typeNoeud *racine; // Pointe sur la racine de l'arbre
    
    // INIT PILE
	pile = initpile (TAILLEPILE);
    
    // POINTEUR SUR L'EXPRESSION ENTREE
	ptexpr = expr;
    
    // DEMANDE EXPRESSION A L'UTILISATEUR
	printf ("Entrer une expression postfixee\n");
	fgets (expr, TAILLEMAX, stdin);
    
    //-------------------------------------------------
    // COMMENCER LE TRAITEMENT DE L'OPERATION POSTFIXEE
    //-------------------------------------------------
    
    // SAUTER LES BLANCS DU DEBUT
	while (*ptexpr == ' ') ptexpr++;
    
    
	/* L'expression se termine sur = ou \n */
	while ( *ptexpr != '=' && *ptexpr != '\n' ) {
		if (!isdigit (*ptexpr)) {
			/* On a un operateur dans *ptexpr */
			droit = depiler(pile); /* Depiler le fils droit */    //3
			gauche = depiler(pile); /* Depiler le fils gauche */  //4
			noeud = creerNoeud (*ptexpr, gauche, droit);          //5
			empiler (pile, noeud); /* Empiler le sous arbre */    //6
			ptexpr++;
		} else {
			/* On a un operande dont la valeur est dans val */
			sscanf (ptexpr, "%d", &val);
			while (isdigit(*ptexpr)) ptexpr++; /* Sauter les digits */
			feuille = creerFeuille (val);                         //1
			empiler (pile, feuille); /* Empiler le noeud */       //2
		}
		while (*ptexpr == ' ') ptexpr++; /* Sauter les blancs */
	}
	racine = depiler(pile);  // La racine est le dernier ÈlÈment de la pile
    
	printf ("\nExpression infixee : \n");
	infixe (racine); /* Parcours infixe de l'arbre obtenu */
	printf ("\n\n");
	printf ("Expression prefixee : \n");
	prefixe (racine); /* Parcours prÈfixe de l'arbre obtenu */
	printf ("\n\n");
	printf ("Valeur de l'expression : %d\n", eval (racine));
	system ("pause");
}