miércoles, 5 de enero de 2011

Deitel_C++_5.17 (Carrera entre la Liebre y la Tortuga)

Este es un programita divertido.  La carrera entre la liebre y la tortuga incluye algunas otras expresiones diferentes a las que menciona Deitel. Observar la carrera es entretenido.



 #include <iostream>
 using namespace::std;

 #include <cstdlib>


 const int Tamano_Arreglo = 70;

 void Imprime_Pista(char A[], int );
 int Avanza_Liebre( int );
 int Avanza_Tortuga(int );

 int main()
 { // Abre main

 cout << "\n\nESTE PROGRAMA SIMULA LA MEMORABLE CARRERA ENTRE LA ";
 cout <<"LIEBRE (L) Y LA TORTUGA (T)!" <<endl;
 cout <<"AMBAS INICAN EMPATADAS (E) EN LA CASILLA 1." <<endl;
 cout <<"\t\t\tHAGAN SUS APUESTAS! " << endl <<endl;

 srand(time(0));


 char Pista[Tamano_Arreglo + 1] = { 0, 'E', 0, 0 };
 int Posicion_Tortuga = 1;
 int tortuga = 1;
 int Posicion_Liebre = 1;
 int liebre = 1;
 int centinela = 0;
 int numero;
 int contador = 1;
 Imprime_Pista( Pista, Tamano_Arreglo );


 while ( 0 == centinela )
 { // Abre while

 cout <<"\nIntroduzca un numero: " << endl;
 cin >> numero;

 cout <<"\t\t\t\tBANG!" << endl;
 cout <<"\t\t\t Y ARRANCAN!" << endl;

 for ( int x = 1; x <= Tamano_Arreglo; x++ )
 {
 Pista[x] = 0;
 }

 Posicion_Tortuga = Avanza_Tortuga( Posicion_Tortuga );
 tortuga = Posicion_Tortuga;
 Posicion_Liebre = Avanza_Liebre( Posicion_Liebre );
 liebre = Posicion_Liebre;
 //cout << Posicion_Liebre <<endl;
 // cout << Posicion_Tortuga <<endl;
 // Descomentar


 if ( (1 <= Posicion_Liebre) && ( Tamano_Arreglo > Posicion_Liebre) )
 { // Abre if
 Pista[ Posicion_Liebre ] = 'L';
 } // Cierra if

 if ( 1 > Posicion_Liebre )
 {
 // cout << "Menor " <<endl;
 // Descomentar
 
 Posicion_Liebre = 1;
 Pista[Posicion_Liebre] = 'L';
 }
 if ((Posicion_Tortuga >= 1) && (Tamano_Arreglo > Posicion_Liebre ) )
 { // Abre if
 // cout << "entro a if " << endl;
 // Descomentar
 
 if ( Posicion_Tortuga == Posicion_Liebre )
 {
 Pista[ Posicion_Tortuga ] = 'E';
 }
 else
 {
 Pista[ Posicion_Tortuga ] = 'T';
 }
 } // Cierra if

 if ( Posicion_Tortuga < 1 )
 {
 Posicion_Tortuga = 1;
 if ( 1 == Posicion_Liebre )
 Pista[Posicion_Tortuga] = 'E';
 else
 Pista[Posicion_Tortuga] = 'T';
 }

 if ( Posicion_Liebre >= Tamano_Arreglo )
 { // Abre if
 centinela = -1;
 if ( Posicion_Tortuga> Tamano_Arreglo)
 cout << "\nQUE CIERRE! LA LIEBRE Y LA TORTUGA EMPATARON! " <<endl;
 else
 cout <<"\nNI HABLAR, GANO LA LIEBRE! " <<endl;

 Pista[Tamano_Arreglo] = 'L';
 } // Cierra if


 if ( Posicion_Tortuga >= Tamano_Arreglo )
 { // Abre if
 centinela = -1;
 if ( Posicion_Liebre < Tamano_Arreglo)
 {
 Pista[Tamano_Arreglo] = 'T';
 cout <<"\nZANAHORIA Y LECHUGAS FRESCAS PARA LA TORTUGA QUE SE LLEVA ";
 cout <<"LA COMPETENCIA! BRAVO! " << endl;

 }
 else
 {
 Pista[Tamano_Arreglo] = 'E';
 cout <<"\nEN UN DRAMATICO CIERRE LA TORTUGA Y LA LIEBRE EMPATAN! "<<endl;
 }
 } // Cierra if


 Imprime_Pista( Pista, Tamano_Arreglo );

 if ( 'E' == Pista[Posicion_Tortuga])
 { // Abre if

 switch (contador)

 { // Abrre switch
 case 1:
 {
 cout <<"\aOUCH! LA TORTUGA TRAMPOSA HA MORDIDO A LA LIEBRE! " << endl;
 contador++;
 break;
 }
 case 2:
 {
 cout <<"\aOUCH! NO SE VALE! LA TORTUGA VUELVE A HACERLO!" << endl;
 contador++;
 break;
 }
 case 3:
 {
 cout<<"\aOUCH!ESTO YA ES COSTUMBRE, VUELVEN A MORDER A LA LIEBRE!" << endl;
 contador++;
 break;
 }
 default:
 {
 cout<< "\aOUCH! PERO DE QUE SE TRATA?!!" <<endl;
 break;
 }
 } // cierra switch

 } // Cierra if

 } // Cierra centinela
 return 0;

 } // Cierra main


 //////////////////////////////////////////////////////////////
 // INICIA LA FUNCION IMPRIME PISTA
 ////////////////////////////////////////////////////////////////

 void Imprime_Pista( char A[], int n)

 { // Abre Imprime pista

 cout <<"***";
 for ( int i = 1; i <= n; i++ )
 { // Abre for
 if ( 0 == A[i] )
 cout << " ";
 else
 cout << A[i];
 } // Cierra for

 cout <<"****";
 cout << endl;

 } // Cierra Imprime pista


 /////////////////////////////////////////////////////////////////////
 // INICIA AVANZA LIEBRE
 ////////////////////////////////////////////////////////////////////

 int Avanza_Liebre ( int l )

 { // Abre Avanza Liebre
 srand(time(0));
 int ruleta;
 ruleta = 1 + rand() % 10;

 //cout << "ruleta = " << ruleta << endl;
 //quitar este comentario para ver como se mueve esta variable
 
 if ( 2 >= ruleta )
 return l;

 if ( 4 >= ruleta )
 return (l + 9);

 if ( 5 >= ruleta )
 return l - 12;

 if ( 8 >= ruleta )
 return l + 1;

 if ( 10 >= ruleta )
 return l - 2;

 } // Cierra Avanza Liebre



 ///////////////////////////////////////////////////////////////////
 // INICIA AVANZA TORTUGA
 ////////////////////////////////////////////////////////////////////

 int Avanza_Tortuga ( int t )

 { // Abre Avanza tortuga
 srand(time(0));
 int dados = 1 + rand() % 10;

 // cout <<"dados = " << dados << endl;;
 // Descomentar para ver la variable dados
 
 if ( 5 >= dados )
 return (t + 3);

 if ( 7 >= dados )
 return (t - 6);

 if ( 10 >= dados )
 return (t + 1);

 } // Cierra Avanza tortuga

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Muy bueno amigo, gracias.
    Que edicion de Deitel estas usando?

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...