Notation polonaise préfixée en notation polonaise infixée

Contenu du snippet

un simple programme qui convert une formule ecrite sous notation polonaise préfixée en notation polonaise infixée
par exemple :
formule sous NP-pré && a1 || a2 b12

sa devient :

formule sous NP-inf (a1 && (a2 || b12))

Source / Exemple :


#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <alloc.h>
typedef struct F
		   {  char unite[10] ;
			  struct F *suiv;} list;	 
list *tete;
void insertion(char unite[10])
  {  list *pt,*prec,*nouveau;
	 nouveau = (list*)malloc(sizeof(list));
	 strcpy(nouveau->unite, unite);
	 nouveau->suiv = NULL;
     pt= tete;
       if(pt==NULL)
			 tete = nouveau;
       else
	   { while(pt!=NULL)
		 { prec=pt;
		   pt=pt->suiv;
             	 }
			  prec->suiv=nouveau;
            }
  }
int isconecteur(char unite[10])  
 	  { if(!strcmpi(unite,"<->")||!strcmpi(unite,"->")||!strcmpi(unite,"!")||!strcmpi(unite,"&&")||!strcmpi(unite,"||"))
		     	return(1);
        else    return(0);
	  }
void sousformul(char unite[10],int *n)
	   { if(isconecteur(unite))
			   { if((!strcmpi(unite,"!"))&&(*n==0))

  • n=1;
else if(!!strcmpi(unite,"!")) if(*n==0)
  • n=2;
else
  • n=*n+1;
} else
  • n=*n-1;
} void tranformation(list *tet) { list *pt, *prec; pt=tet; if(isconecteur(pt->unite)) if(!strcmpi(pt->unite,"!")) { printf("%s",pt->unite); tranformation(pt->suiv); } else { prec=pt; int N=0; sousformul(pt->unite,&N); pt=pt->suiv; while(N != 1) { sousformul(pt->unite,&N); pt=pt->suiv; } printf("("); tranformation(prec->suiv); printf(" %s ",prec->unite); tranformation(pt); printf(")"); } else printf("%s",pt->unite); } void afichage() { list *pt; pt= tete; if(pt==NULL) printf("la liste et vide"); else { printf(" \a\nAppuie sur une touche pour afficher votre formule :\n\n\t"); getch(); } { while(pt!=NULL) { cprintf("%s ",pt->unite); pt=pt->suiv; } textcolor(3); printf("\n"); printf("\n"); printf("\n"); cprintf("\aLa formule sous notation polonaise infix?e : "); textcolor(3); gotoxy(10,20); tranformation(tete); getch(); } } void main() { char c[8]=""; tete=NULL; int x=10; clrscr(); textcolor(WHITE+BLINK); gotoxy(25,2); cprintf(" NP prefix?e -->NP infix?e"); gotoxy(2,5); printf(" \nEntrer la formule sous notation polonaise prefix?e:"); gotoxy(x,10); gets(c); while(!!strcmpi(c,".")) { x=x+(sizeof(c)/2)+1; gotoxy(x,10); if(sizeof(c)!=0) insertion(c); gets(c); } afichage(); }

Conclusion :


cordialement

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.