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
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuy bueno amigo, gracias.
ResponderEliminarQue edicion de Deitel estas usando?