#include #include using namespace std; //Error por pulir: si pesas n y n+1 huevos puede haber error por haber definido pesos como 0,1 y 2 //dudas a ferhue(a(alumni.uv.es //Lista funciones void lista(); void ini(int [12]); void llenar(bool [12]); char comparar(bool [12],bool [12],int [12]); void tu(); //void mostrar (int h[12]); void demo(); int main(); void lista() { int i=1; for(i=1;i<12;i++) { cout << i << ", "; } cout << i << ".\n"; } //process.h system("clear") void ini(int h[12]) { srand(time(NULL)); int i, j; for (i=0;i<12;i++) { h[i]=1; } i=rand()%12; j=rand()%2; if (j==1) { j++; } h[i]=j;//mejorar para evitar error de si comparas el peso de n huevos con n+1 } /* void mostrar (int h[12]) { int i; cout << endl; for (i=0;i<12;i++) { cout << h[i] << " "; } cout << endl; } */ void llenar(bool b[12]) { int n,i, aux; for(i=0;i<12;i++) { b[i]=false; } cin >> n; cout << endl; for(i=0;i> aux; b[aux-1]=true; } } char comparar(bool b1[12],bool b2[12],int h[12]) { int i; float sum1, sum2; for (i=0;i<12;i++) { if (b1[i]) { if (b2[i]) { cout << "Error. Mismo huevo en dos brazos.\n"; sum1=-1; } } } if (sum1==-1) { return '0'; } else { for (i=0, sum1=0, sum2=0; i<12;i++) { if (b1[i]) { sum1=sum1+h[i]; if (h[i]==0) { sum1=sum1+0.1; } if (h[i]==2) { sum1=sum1-0.1; } } if (b2[i]) { sum2=sum2+h[i]; if (h[i]==0) { sum1=sum1+0.1; } if (h[i]==2) { sum1=sum1-0.1; } } } if (sum1>sum2) { return '>'; } else { if (sum1==sum2) { return '='; } else { if (sum12,1<2,1=2.\n"; cout << "\nPesada 1:\n"; cout << "Brazo 1:\tBrazo 2:\n"; cout << "1,2,3,4\t\t5,6,7,8\n"; cout << "\t "; cin >> c1; cin.ignore(); if (c1!='<'&&c1!='>'&&c1!='=') { cout << "Error de lectura.\n"; } else { cout << "\nPesada 2:\n"; cout << "Brazo 1:\tBrazo 2:\n"; if (c1=='=') { cout << "1,2,3\t\t9,10,11\n"; cout << "\t "; cin >> c2; if (c2!='<'&&c2!='>'&&c2!='=') { cout << "Error.\n"; } else { cout << "\nPesada 3:\n"; cout << "Brazo 1:\tBrazo 2:\n"; if (c2=='=') { cout << "1\t\t12\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el 12. Y pesa "; if (c3=='>') { cout << "menos"; } else { cout << "mas"; } cout << " que el resto.\n"; } } else { cout << "9\t\t10\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "\nEl huevo que pesa diferente es el "; if (c3=='<') { cout << "9"; } else { if (c3=='=') { cout << "11"; } else { cout << "10"; } } cout << " y pesa "; if (c2=='>') { cout << "menos"; } else { cout << "mas"; } cout << " que el resto.\n"; } } }//155 }//147 else//ok { cout << "4,5,9\t\t3,6,7\n"; cout << "\t "; cin >> c2; if (c2!='<'&&c2!='>'&&c2!='=') { cout << "Error.\n"; } else { if (c1=='>') { cout << "\nPesada 3:\n"; cout << "Brazo 1:\tBrazo 2:\n"; if (c2=='=') { cout << "1\t\t2\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "8 y pesa "; cout << "menos"; } else { if (c3=='>') { cout << "1"; } else { cout << "2"; } cout << " y pesa "; cout << "mas"; cout << " que el resto.\n"; } } } else { if (c2=='>') {//ok cout << "6\t\t7\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "4 y pesa "; cout << "mas"; } else { if (c3=='>') { cout << "7"; } else { cout << "6"; } cout << " y pesa "; cout << "menos"; cout << " que el resto.\n"; } } }//ok else { cout << "1\t\t5\n"; cout << "\t"; cin >> c3; if (c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "3 y pesa "; cout << "mas"; } else { cout << "5 y pesa "; cout << "menos"; } cout << " que el resto.\n"; } }//ok }//266 }//231 else { cout << "\nPesada 3:\n"; cout << "Brazo 1:\tBrazo 2:\n"; if (c2=='=') { cout << "1\t\t2\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "8 y pesa "; cout << "mas"; } else { if (c3=='>') { cout << "1"; } else { cout << "2"; } cout << " y pesa "; cout << "menos"; cout << " que el resto.\n"; } } } else//ok { if (c2=='<') { cout << "6\t\t7\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='>'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "4 y pesa "; cout << "menos"; } else { if (c3=='>') { cout << "6"; } else { cout << "7"; } cout << " y pesa "; cout << "mas"; cout << " que el resto.\n"; } } } else { cout << "1\t\t5\n"; cout << "\t"; cin >> c3; if (c3!='<'&&c3!='=') { cout << "Error.\n"; } else { cout << "El huevo sorpresa es el "; if (c3=='=') { cout << "3 y pesa "; cout << "menos"; } else { cout << "5 y pesa "; cout << "mas"; } cout << " que el resto.\n"; } } }//365 }//329 }//229 }//221 }//143 cout << "Sorprendido? Asombra a tus allegados.\n\n"; }//128 void tu() { int i,j,k; int h[12]; bool b1[12],b2[12]; cout << "Es tu turno. Tenemos estos huevos:\n"; lista(); ini(h); //mostrar (h); cout << "Adivina cual de ellos pesa diferente, y si mas o menos.\n"; //Pesada 1 cout << "\nIndica que huevos que quieres comparar en la primera pesada.\n"; cout << "\nBrazo 1. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b1); cout << "\nBrazo 2. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b2); cout << "\nResultado pesada 1:\n"; cout << 1 << comparar(b1,b2,h) << 2 << endl; //Pesada 2 cout << "Indica que huevos que quieres comparar en la segunda pesada.\n"; cout << "\nBrazo 1. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b1); cout << "\nBrazo 2. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b2); cout << "\nResultado pesada 2:\n"; cout << 1 << comparar(b1,b2,h) << 2 << endl; //Pesada 3 cout << "Indica que huevos que quieres comparar en la tercera pesada.\n"; cout << "\nBrazo 1. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b1); cout << "\nBrazo 2. Escribe primero el numero de huevos a pesar en el mismo y luego el numero de los huevos:\n"; llenar(b2); cout << "\nResultado pesada 3:\n"; cout << 1 << comparar(b1,b2,h) << 2 << endl; //Final cout << "Dime el numero del huevo que pesa diferente.\n"; i=1; cin >> i; if (i<1 || i>12) { i=1; h[i-1]=1; } if (h[i-1]!=0&&h[i-1]!=2) { cout << "Fallaste. Intentalo de nuevo, no desesperes.\n"; } else { cout << "Correcto. Dime ahora si pesa mas (2) o menos (0) que el resto.\n"; cin >> j; if (h[i-1]==j) { cout << "Enhorabuena. Has ganado. Tienes el privilegio de acceder a la version demo, donde comprobaras que no se acierta de casualidad, si respondes a la siguientes preguntas.\n"; cout << "En el metodo general, cuantos huevos pesas en la primera pesada, contando ambos brazos?\n"; cin >> i; cout << "En la segunda?\n"; cin >> j; cout << "Tercera?\n"; cin >> k; cout << endl; if (i==8&&j==6&&k==2) { cout << "Eres un campeon. Acabas de entrar en la demo.\n"; demo(); } else { cout << "Asi lo tienes crudo. No intentes engaƱarme otra vez.\n"; } } else { cout << "Lo siento. Has estado a punto. Vuelve a intentarlo.\n"; } } } int main() { cout << "\n\nHay 12 huevos y uno pesa diferente a los demas. En solo tres pesadas debes adivinar que huevo es el diferente y si pesa mas o menos. Para ello dispones de una bascula de dos brazos sin graduar.\n\n"; tu(); return 0; }