#include #include int quantite,j,cp,R, i=0, k=0; typedef struct {int qx1; int qy1; int qz1; } recip; recip tab[1000]; // une fonction qui recherche si une valeur existe dans un tableau int recherche (recip*tab,int qy, int i ) { for (cp=0 ; cp=(cy-qy)) {tab[i].qy1=cy; tab[i].qx1=qx-(cy-qy);tab[i].qz1=qz;return(i);} else {tab[i].qy1=qy+qx; tab[i].qx1 =0;} tab[i].qz1=qz; return(i);} else return(i-1); } int verserxz (int cx,int cy, int cz,int qx,int qy, int qz,int i) { if (qz!=cz) {if (qx>=(cz-qz)) {tab[i].qz1=cz; tab[i].qx1=qx-(cz-qz);tab[i].qy1=qy;return(i);} else { tab[i].qz1=qz+qx; tab[i].qx1=0;} tab[i].qy1=qy;return(i);} else return(i-1); } int verseryx(int cx,int cy, int cz,int qx,int qy, int qz,int i) {if (qx!=cx) {if (qy>=(cx-qx)) {tab[i].qx1=cx; tab[i].qy1=qy-(cx-qx);tab[i].qz1=qz;return (i);return(i);} else {tab[i].qx1=qx+qy; tab[i].qy1=0;} tab[i].qz1=qz;return (i);} else return (i-1); } int verseryz(int cx,int cy, int cz,int qx,int qy, int qz,int i) { if (qz!=cz) { if (qy>=(cz-qz)) {tab[i].qz1=cz; tab[i].qy1=qy-(cz-qz);tab[i].qx1=qx;return(i);} else {tab[i].qz1=qz+qy; tab[i].qy1=0;} tab[i].qx1=qx; return(i);} else return (i-1); } int verserzy(int cx,int cy, int cz,int qx,int qy, int qz,int i) { if(qy!=cy) { if(qz>=(cy-qy)) {tab[i].qy1=cy; tab[i].qz1=qz-(cx-qy);tab[i].qx1=qx; return (i);} else {tab[i].qy1=qy+qz; tab[i].qz1=0;} tab[i].qx1=qx; return(i);} else return (i-1); } int verserzx(int cx,int cy, int cz,int qx,int qy, int qz,int i) { if (qx!=cx) {if(qz>=(cx-qx)) {tab[i].qx1=cx; tab[i].qz1=qz-(cx-qx);tab[i].qy1=qy; return (i);} else {tab[i].qx1=qx+qz; tab[i].qz1=0;} tab[i].qy1=qy; return(i); } else return(i); } void main () { int cx,cy,cz; printf ("donnez la capacité du premier recipient"); scanf ("%d",&cx); printf ("donnez la capacité du deuxieme recipient"); scanf ("%d",&cy); if (cy>cx) {printf("erreur"); exit(0);} printf ("donnez la capacité du troisieme recipient"); scanf ("%d",&cz); if ((cz>cy)||(cz>cx)) {printf("erreur"); exit(1);} printf ("donnez la quantitée voulu dans le 2eme recipient "); scanf ("%d",&quantite); printf("nous allons commencer patience\n"); int qy=0,qz=0,qx=cx,i=0,quntum; //l'état initial //03 quantités 6 possibilités lors du versement i=verserxy(cx,cy,cz,qx,qy,qz,i);i=i+1;//1ere possibilité verser de x vers y //passer a la case suivante i=verserxz(cx,cy,cz,qx,qy,qz,i);i=i+1;//1ere possibilité verser de x vers z //passer a la case suivante i=verseryx(cx,cy,cz,qx,qy,qz,i);i=i+1;//1ere possibilité verser de y vers x//passer a la case suivante i=verseryz(cx,cy,cz,qx,qy,qz,i);i=i+1;//1ere possibilité verser de y vers z //passer a la case suivante i=verserzy(cx,cy,cz,qx,qy,qz,i);i=i+1;//1ere possibilité verser de z vers x //passer a la case suivante i=verserzx(cx,cy,cz,qx,qy,qz,i);quntum=i+1;//1ere possibilité verser de z vers y //passer a la case suivante int sauv=0,max=i,cp1,cp2;; {for (cp1=sauv;cp1