jueves, 29 de agosto de 2013

Seguimos con rosarios de condiciones



Vamos a seguir con la racha de nuestros programas ensayando el tema de las condiciones. Como decíamos el otro día, muchas veces la clave está en poner adecuadamente las llaves "{" y "}". Esto soluciona muchos problemas a los que de otra manera no se les ve salida. Tal como se ve en el programa, repitiendo los mismos módulos, podemos alargarlo todo lo que queramos. En este lo hemos ampliado para ocho animales. O sea, hemos doblado el alcance; y podemos seguir indefinidamente. Todo está en "anidar" más y más condiciones, mediante llaves y con el eterno if...else if...
El programa no falla - creo -. Cada animal está caracterizado por unas propiedades inconfundibles. Aunque el ejemplo parece un poco infantil, en realidad podría servir para clasificar plantas, por ejemplo: Ovario ínfero, súpero, simetría, disposición de las ramas y de las hojas, color de los pétalos,... Ya sabemos que el método de clasificación en Botánica es a base de preguntas por características a las que se responde sí o no. En el caso de "sí" seguirán unas preguntas y en el caso de "no" otras. El camino no suele tener más de media docena de pasos. Esa forma de investigación o lógica tiene un nombre que ahora no se me viene a la cabeza. Claro, todo depende hasta qué nivel queramos llegar, si solo queremos averiguar el orden, la familia, el género o la especie. A más precisión más preguntas. Hasta en los juzgados podríamos usar un sistema parecido: "Estuvo Vd. allí, si o no? Si responde que sí, se seguiría: ¿Fué Vd. testigo de los hechos, sí o no?. Si responde que sí, entonces..., si responde que no, entonces...
También hay un método de búsqueda muy eficiente, que emplea la informática, que se basa en ese mismo sistema. No me vine el nombrecito, pero es algo así como búsqueda binaria, fundado, como decimos, en el si o no.

/*Programa en C++ para ensayar condiciones*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i;
string a[20], res;
a[1]="Tiene pelo?: ";
a[2]="¿Es carnívoro?: ";
a[3]="Tiene plumas?: ";
a[4]="¿Vuela alto?: ";
a[5]="Tiene escamas?: ";
a[6]="Tiene patas?: ";
a[7]="Vive en el agua?: ";
a[8]="El perro";
a[9]="La vaca";
a[10]="La paloma";
a[11]="La gallina";
a[12]="El lagarto";
a[13]="La serpiente";
a[14]="La rana";
a[15]="El sapo";
ini:
cout<<"Piensa en un animal (perro, vaca, paloma, gallina, rana, serpiente, lagarto, sapo)\n";
//----------------------
cout<<a[1];
cin>>res;
if(res=="s"){
cout<<a[2];
cin>>res;
if(res=="s") 
{cout<<a[8];
goto fin;}
else
{cout<<a[9];
goto fin;}
}
//----------------------  
else if(res=="n") 
cout<<a[3];
cin>>res;
  if(res=="s"){
  cout<<a[4];
  cin>>res;
  if(res=="s") 
  {cout<<a[10];
  goto fin;}
  else
  {cout<<a[11];
  goto fin;}
  }
//----------------------
  else if(res=="n") 
  cout<<a[5];
  cin>>res;
  if(res=="s"){
  cout<<a[6];
  cin>>res;
  if(res=="s") 
  {cout<<a[12];
  goto fin;}
  else
  {cout<<a[13];
  goto fin;}
  }
//---------------------
else if(res=="n") 
  cout<<a[7];
  cin>>res;
  if(res=="s"){
  cout<<a[14];
  goto fin;}
//----------------------
  else cout<<a[15];
fin:
cout<<endl<<"Continuar(s/n): ";
cin>>res;
if (res=="s") goto ini;
return 0;
}

2 comentarios:

  1. paso recordando a los amigos ...feliz fin de semana .
    un abrazo
    Marina

    ResponderEliminar
  2. Gracias, Marina. Por aquí andamos "de fiesta en fiesta". Que pases tú también un feliz "finde".

    ResponderEliminar