elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31
291  Programación / Programación C/C++ / Ordenamiento de listas por seleccion en: 1 Septiembre 2018, 08:22 am
Hola picolos bambinos, alguien me podria decir porque mi metodo de ordenacion seleccion en listas simplemente enlazadas no funciona?

void ordenar_lista(pnodo &lista)//Este es el modulo ->

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. typedef struct tnodo *pnodo;
  7. typedef struct tnodo{
  8. int dato;
  9. pnodo sig;
  10. };
  11.  
  12. void inicia(pnodo &lista);
  13. void crear(pnodo &nuevo);
  14. void agregar_final(pnodo &lista, pnodo nuevo);
  15. void ordenar_lista(pnodo &lista);
  16. void mostrar(pnodo lista);
  17.  
  18. int main()
  19. {
  20. pnodo milista, nuevo;
  21. int opcion;
  22. inicia(milista);
  23. do{
  24. system("cls");
  25. cout << "1. Iniciar lista" << endl;
  26. cout << "2. Agregar elemento" << endl;
  27. cout << "3. Ordenar lista" << endl;
  28. cout << "4. Mostrar lista" << endl;
  29. cout << "5. Salir" << endl;
  30. cin >> opcion;
  31. switch(opcion){
  32. case 1: inicia(milista); break;
  33. case 2: crear(nuevo); if(nuevo!=NULL){agregar_final(milista,nuevo);}; break;
  34. case 3: ordenar_lista(milista); break;
  35. case 4: cout << "*** LISTA ***" << endl; mostrar(milista); break;
  36. case 5: cout << "FIN DEL  PROGRAMA" << endl; break;
  37. default: cout << "Opcion incorrecta" << endl;
  38. }
  39. system("pause");
  40. }while(opcion!=5);
  41. }
  42.  
  43. void inicia(pnodo &lista)
  44. {
  45. lista=NULL;
  46. }
  47.  
  48. void crear(pnodo &nuevo)
  49. {
  50. nuevo=new tnodo;
  51. if(nuevo!=NULL){
  52. cout << "Ingrese valor: "; cin >> nuevo->dato;
  53. nuevo->sig=NULL;
  54. }
  55. else{
  56. cout << "MEMORIA INSUFICIENTE" << endl;
  57. }
  58. }
  59.  
  60. void agregar_final(pnodo &lista, pnodo nuevo)
  61. {
  62. pnodo i;
  63. if(lista==NULL){
  64. lista=nuevo;
  65. }
  66. else{
  67. for(i=lista;i->sig!=NULL;i=i->sig);
  68. i->sig=nuevo;
  69. }
  70. }
  71.  
  72. void ordenar_lista(pnodo &lista)
  73. {
  74. pnodo i, j, min;
  75. int aux;
  76. for(i=lista;i->sig!=NULL;i=i->sig){
  77. min=i;
  78. for(j=lista;j->sig!=NULL;j=j->sig){
  79. j=i->sig;
  80. if(j->dato<i->dato){
  81. min->dato=j->dato;
  82. min->sig=j->sig;
  83. }
  84. }
  85. aux=i->dato;
  86. i->dato=min->dato;
  87. min->dato=aux;
  88. }
  89. }
  90.  
  91. void mostrar(pnodo lista)
  92. {
  93. pnodo i;
  94. if(lista!=NULL){
  95. for(i=lista;i!=NULL;i=i->sig){
  96. cout << "Nodo: " << i->dato << endl;
  97. }
  98. cout << endl;
  99. }
  100. else{
  101. cout << "LISTA VACIA" << endl;
  102. }
  103. }
  104.  



No se que pasa no me ordena como yo quiero, esto es lo que pude lograr hasta ahora
Código
  1. void ordenar_lista(pnodo &lista)
  2. {
  3. pnodo i, j, min;
  4. int aux;
  5. for(i=lista;i->sig!=NULL;i=i->sig){
  6. min=i;
  7. for(j=i->sig;j->sig!=NULL;j=j->sig){
  8. if(min->dato>j->dato){
  9. min=j;
  10. }
  11. }
  12. if(min!=i){
  13. aux=i->dato;
  14.    i->dato=j->dato;
  15.    j->dato=aux;
  16. }
  17. }
  18. }


Mod: Prohibido el doble o triple post. Usa el botón "Modificar".
292  Programación / Programación C/C++ / Ayuda con listas sinples en: 31 Agosto 2018, 20:25 pm
Hola amig@s queria que me ayudaran a entender como sucede la magia en este fragmento que acabo de hacer entiendo lista de forma generica pero hay cosas que no me cierran como la sintaxis de C++ en listas y otras cosillas, desde  ya muchas gracias  ;-)

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. typedef struct tnodo *pnodo;
  7. typedef struct tnodo{
  8. int dato;
  9. pnodo sig;
  10. };
  11.  
  12. void inicia(pnodo &lista);
  13. void crear(pnodo &nuevo);
  14. void agregar_inicio(pnodo &lista, pnodo nuevo);
  15. void agregar_final(pnodo &lista, pnodo nuevo);
  16. void agregar_orden(pnodo &lista, pnodo nuevo);
  17. pnodo quitar_inicio(pnodo &lista);
  18. pnodo quitar_final(pnodo &lista);
  19. pnodo quitar_nodo(pnodo &lista, int valor);
  20. bool buscar_nodo(pnodo lista,int valor);
  21. void mostrar(pnodo lista);
  22.  
  23. int main()
  24. {
  25. pnodo milista, nuevonodo, eliminado;
  26. int opcion, num;
  27. inicia(milista);
  28. do{
  29. system("cls");
  30. cout << "1. Iniciar lista" << endl;
  31. cout << "2. Agregar al inicio" << endl;
  32. cout << "3. Agregar al final" << endl;
  33. cout << "4. Agregar en orden" << endl;
  34. cout << "5. Quitar al inicio" << endl;
  35. cout << "6. Quitar al final" << endl;
  36. cout << "7. Quitar valor" << endl;
  37. cout << "8. Buscar valor" << endl;
  38. cout << "9. Mostrar lista" << endl;
  39. cout << "10. Salir" << endl;
  40. cin >> opcion;
  41. switch(opcion){
  42. case 1: inicia(milista); break;
  43. case 2: crear(nuevonodo); if(nuevonodo!=NULL){agregar_inicio(milista,nuevonodo);}; break;
  44. case 3: crear(nuevonodo); if(nuevonodo!=NULL){agregar_inicio(milista,nuevonodo);}; break;
  45. case 4: crear(nuevonodo); if(nuevonodo!=NULL){agregar_orden(milista,nuevonodo);}; break;
  46. case 5: eliminado=quitar_inicio(milista);
  47. if(eliminado!=NULL){cout << "Eliminado: " << eliminado->dato << endl;delete(eliminado);}
  48. else{cout << "LISTA VACIA O NO EXISTE VALOR" << endl;}; break;
  49. case 6: eliminado=quitar_final(milista);
  50. if(eliminado!=NULL){cout << "Eliminado: " << eliminado->dato << endl;delete(eliminado);}
  51. else{cout << "LISTA VACIA O NO EXISTE VALOR" << endl;}; break;
  52. case 7: cout << "Igrese valor a eliminar: "; cin >> num; eliminado=quitar_nodo(milista,num);
  53. if(eliminado!=NULL){cout << "Eliminado: " << eliminado->dato << endl; delete(eliminado);}
  54. else{ cout << "LISTA VACIA O NO EXISTE VALOR" << endl;}; break;
  55. case 8: cout << "Ingrese valor buscado: "; cin >> num;
  56. if(buscar_nodo(milista,num)==true){cout << "VALOR ENCONTRADO" << endl;}
  57. else{ cout << "LISTA VACIA O NO EXISTE VALOR" << endl;}; break;
  58. case 9: cout << "*** LISTA ***" << endl; mostrar(milista); break;
  59. case 10: cout << "FIN DEL  PROGRAMA" << endl; break;
  60. default: cout << "Opcion incorrecta" << endl;
  61. }
  62. system("pause");
  63. }while(opcion!=10);
  64. }
  65.  
  66. void inicia(pnodo &lista)
  67. {
  68. lista=NULL;
  69. }
  70.  
  71. void crear(pnodo &nuevo)
  72. {
  73. nuevo=new tnodo;
  74. if(nuevo!=NULL){
  75. cout << "Ingrese valor: "; cin >> nuevo->dato;
  76. nuevo->sig=NULL;
  77. }
  78. else{
  79. cout << "MEMORIA INSUFICIENTE" << endl;
  80. }
  81. }
  82.  
  83. void agregar_inicio(pnodo &lista, pnodo nuevo)
  84. {
  85. nuevo->sig=lista;
  86. lista=nuevo;
  87. }
  88.  
  89. void agregar_final(pnodo &lista, pnodo nuevo)
  90. {
  91. pnodo i;
  92. if(lista==NULL){
  93. lista=nuevo;
  94. }
  95. else{
  96. for(i=lista;i->sig!=NULL;i=i->sig);
  97. i->sig=nuevo;
  98. }
  99. }
  100.  
  101. void agregar_orden(pnodo &lista, pnodo nuevo)
  102. {
  103. pnodo i;
  104. if(lista==NULL){
  105. lista=nuevo;
  106. }
  107. else{
  108. if(nuevo->dato<lista->dato){
  109. nuevo->sig=lista;
  110. lista=nuevo;
  111. }
  112. else{
  113. for(i=lista;i->sig!=NULL && nuevo->dato>(i->sig)->dato;i=i->sig);
  114. nuevo->sig=i->sig;
  115. i->sig=nuevo;
  116. }
  117. }
  118. }
  119.  
  120. pnodo quitar_inicio(pnodo &lista)
  121. {
  122. pnodo borrado;
  123. if(lista==NULL){
  124. borrado=NULL;
  125. }
  126. else{
  127. borrado=lista;
  128. lista=lista->sig;
  129. borrado->sig=NULL;
  130. }
  131. return borrado;
  132. }
  133.  
  134. pnodo quitar_final(pnodo &lista)
  135. {
  136. pnodo borrado, i;
  137. if(lista==NULL){
  138. borrado=NULL;
  139. }
  140. else{
  141. if(lista->sig==NULL){
  142. borrado=lista;
  143. lista=NULL;
  144. }
  145. else{
  146. for(i=lista;(i->sig)->sig!=NULL;i=i->sig);
  147. borrado=i->sig;
  148. i->sig=NULL;
  149. }
  150. }
  151. return borrado;
  152. }
  153.  
  154. pnodo quitar_nodo(pnodo &lista, int valor)
  155. {
  156. pnodo borrado, i;
  157. if(lista==NULL){
  158. borrado=NULL;
  159. }
  160. else{
  161. if(lista->dato==valor){
  162. borrado=lista;
  163. lista=borrado->sig;
  164. borrado->sig=NULL;
  165. }
  166. else{
  167. for(i=lista;i->sig!=NULL && valor!=(i->sig)->dato;i=i->sig);
  168. if(i->sig!=NULL){
  169. borrado=i->sig;
  170. i->sig=borrado->sig;
  171. borrado->sig=NULL;
  172. }
  173. else{
  174. borrado=NULL;
  175. }
  176. }
  177. }
  178. return borrado;
  179. }
  180.  
  181. bool buscar_nodo(pnodo lista,int valor)
  182. {
  183. pnodo i;
  184. bool encontrado=false;
  185. if(lista!=NULL){
  186. for(i=lista;i!=NULL && encontrado==false;i=i->sig){
  187. if(i->dato==valor){
  188. encontrado=true;
  189. }
  190. }
  191. }
  192. return encontrado;
  193. }
  194.  
  195. void mostrar(pnodo lista)
  196. {
  197. pnodo i;
  198. if(lista!=NULL){
  199. for(i=lista;i!=NULL;i=i->sig){
  200. cout << "Nodo: " << i->dato << endl;
  201. }
  202. cout << endl;
  203. }
  204. else{
  205. cout << "LISTA VACIA" << endl;
  206. }
  207. }
  208.  
  209.  
293  Programación / Programación C/C++ / necesito una pequeña ayuda con una aplicacion en: 3 Agosto 2018, 02:53 am
Hola estoy armando una app donde la funcion basica es averiguar los antecedentes penales de una persona por medio del numero de documento de identidad, queria saber como consigo esa base de datos si alguien me puede ayudar gracias, es tarea para el cole y nadie me dice como hacerlo nisiquiera mis profesores  ;-)
294  Programación / Programación C/C++ / Problemas luego de crear una funcion que "extrae" subcadenas en: 9 Julio 2018, 23:48 pm
Bueno este programa tiene varios tipos de problemas, ya que no puedo mostrar por paantalla la extraccion de subcadena o asignar en otra variable y mostrarla en pantalla seguidamente lo mas cercano uqe logre fue que despues de ingresar algo por teclado me muestre la subcadena exraida.
Use cin >> ws; pero, la verdad no tengo idea porque pasa esto.

Código
  1. #include <iostream> //Sorry
  2. #include <stdlib.h> //por
  3. #include <string.h>// las
  4. #include <stdio.h> //librerias
  5.  
  6. using namespace std;
  7.  
  8. char* subcadena(char* cadena, int inicial, int final);
  9.  
  10. int main(){
  11. char materia[]="PROGRAMACION ESTRUCTURADA";
  12. cin >> ws;
  13. cout << subcadena(materia,0,11) << endl;
  14. system("pause");
  15. }
  16.  
  17. char* subcadena(char *cadena, int inicial, int final)
  18. {
  19. char *substring;
  20. int indice=0;
  21. if(inicial<0 || final>strlen(cadena)){
  22. return NULL;
  23. }
  24. else{
  25. for(int i=inicial;i<=final;i++){
  26. substring[indice]=cadena[i];
  27. indice++;
  28. }
  29. return substring;
  30. }
  31. }
  32.  

Alguna respuesta puntual? Muchas gracias  ;-)
295  Programación / Programación C/C++ / Alguien sabe porque el espacio me ocupa 2 lugares? en: 9 Julio 2018, 04:10 am
Tengo problemas al  definir la cantidad de espacios del arreglo de caracteres en 1 e inicializarla con un espacio entre comillas simple me sale que no se puede y al colocarle dos espacios al arreglo e inicializarlo con dos espacios y  doble comillas que son para cadanes si me deja  :o

Código
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. char nombre[40], apellido[40], completo[80]="Programadora: ", espacio[2]=" ";
  8. cout << "Ingrese nombre: ";
  9. gets(nombre);
  10. cout << "Ingrese apellido: ";
  11. gets(apellido);
  12. strcat(completo,nombre);
  13. strcat(completo,espacio);
  14. strcat(completo,apellido);
  15. cout << completo << endl;
  16. system ("pause");
  17. }

Datos de entrada:Maria Lux;
Datos de entrada:Grow;
Datos de salida:Programadora: Maria Lux Grow;

Gracias de antemano tios! ;-)
296  Programación / Programación C/C++ / Problemas limitando caracteres en el ingreso en: 8 Julio 2018, 18:10 pm
Bueno aqui estuve intentando ingresar cadenas mayores a 20 y que solo guarde los primeros 20 como maximo pero no he podido hacerlo, me salta de linea por problemas en el buffer y no tengo idea de como resolverlo aqui el codigo

Código
  1. #include <iostream>
  2. #include <stdio.h>  //Librerias
  3. #include <stdlib.h> //del C :v
  4.  
  5. using namespace std;
  6.  
  7. const int MAX=20;
  8. typedef char tcad[20];
  9. typedef struct{
  10. tcad nombre;
  11. tcad apellido;
  12. int edad;
  13. int DNI;
  14. }templeado;
  15.  
  16. void cargar(templeado &empleado);
  17. void mostrar(templeado empleado);
  18.  
  19. int main()
  20. {
  21. templeado EMPLEADO;
  22. cargar(EMPLEADO);
  23. mostrar(EMPLEADO);
  24. system("pause");
  25. return 0;
  26. }
  27.  
  28. void cargar(templeado &empleado)
  29. {
  30. cout << "Ingrese nombre  : ";
  31. cin.getline(empleado.nombre,MAX+1);
  32. cout << "Ingrese apellido: ";
  33. cin.getline(empleado.apellido,MAX+1);
  34. cout << "Ingrese edad    : ";
  35. cin >> empleado.edad;
  36. fflush(stdin);
  37. cout << "Ingrese DNI     : ";
  38. cin >> empleado.DNI;
  39. }
  40. void mostrar(templeado empleado)
  41. {
  42. cout << "DATOS EMPLEADO" << endl;
  43. cout << "Nombre  : " << empleado.nombre << endl;
  44. cout << "Apellido: " << empleado.apellido << endl;
  45. cout << "Edad    : " << empleado.edad << endl;
  46. cout << "DNI     : " << empleado.DNI << endl;
  47. }


Datos de entrada: Nelson growwwwwwwwwwwwwwwwwwwwww
Datos de salida: Tremendo desbordamiento

Podria hacerlo con funciones propias pero el profesor no lo quiere asi, alguna sugerencia, desde ya gracias  ;-)


297  Programación / Programación C/C++ / Ayuda con subcadena de tipo char en: 5 Julio 2018, 21:53 pm
Queria saber si alguien me puede decir el camino mas corto para extraer cadenas empleando un arreglo de caracteres sin utilizar la clases string, esto es lo que quiero hacer pero con el tipo de dato char

Código
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. int opcion;
  9. string fecha;
  10. cout << "INGRESE UNA FECHA EN EL FORMATO DDMMAAAA: ";
  11. getline(cin, fecha);
  12. cout << "ELEGIR FORMATO" << endl;
  13. cout << "1. MM/DD/AAAA" << endl;
  14. cout << "2. DD/MM/AAAA" << endl;
  15. cout << "3. AAAA/MM/DD" << endl;
  16. cin >> opcion;
  17.  
  18. switch(opcion){
  19.  
  20. case 1: cout << fecha.substr(2,2) <<"/" << fecha.substr(0,2) << "/" << fecha.substr(4,4) << endl ;break;
  21. case 2: cout << fecha.substr(0,2) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(4,4) << endl ;break;
  22. case 3: cout << fecha.substr(4,4) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(0,2) << endl ;break;
  23. default: cout << "OPCION INCORRECTA" << endl;
  24. }
  25. system("pause");
  26. return 0;
  27. }

Esto es lo que logre, la verdad me dan mas problemas los de tipo char, en cambio con la clase string nunca tuve problemas  ;-)

Código
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX=8;
  7. typedef char tcad[MAX];
  8.  
  9. int main()
  10. {
  11. tcad fecha;
  12. char dia[2], mes[2], año[4];
  13. int opcion;
  14. cout << "Ingrese un afecha en formato DD/MM/AAAA: ";
  15. cin.getline(fecha,9,'\n');
  16. dia[0]=fecha[0];
  17. dia[1]=fecha[1];
  18. mes[0]=fecha[2];
  19. mes[1]=fecha[3];
  20. año[0]=fecha[4];
  21. año[1]=fecha[5];
  22. año[2]=fecha[6];
  23. año[3]=fecha[7];
  24. cout << "Seleccione formato" << endl;
  25. cout << "1. MM/DD/AAAA" << endl;
  26. cout << "2. DD/MM/AAAA" << endl;
  27. cout << "3. AAAA/MM/DD" << endl;
  28. cin >> opcion;
  29. switch(opcion){
  30. case 1: cout << mes << "/" << dia << "/" << año << endl; break;
  31. case 2: cout << dia << "/" << mes << "/" << año << endl; break;
  32. case 3: cout << año << "/" << mes << "/" << dia << endl; break;
  33. default: cout << "Opcion incorrecta" << endl;
  34. }
  35. system("pause");
  36. return 0;
  37. }

Desde ya muchas gracias, saludos  ;-)
298  Programación / Programación C/C++ / Ayuda con algoritmo recursivo y fflush(stdin) en: 4 Julio 2018, 22:29 pm
Hola a todxs queria saber si este algoritme esta recursivamente bien , y otra consulta es para que sirve , es viable el uso de fflush(stdin) en limpieza del buffer, estoy algo indecise, gracias a todxs


Código
  1. void como_la_realidad(int vida)
  2. {
  3. if(vida<=1)
  4. cout << "Entrando en el sueño";
  5. else
  6. como_la_realidad(vida-1);
  7. cout << " del sueño";
  8. }
299  Programación / Programación C/C++ / Pequeña duda Fibonacci TDA Pila en: 21 Junio 2018, 23:13 pm
Hola, estoy en una duda con acerca de la serie de Fibonacci, me piden ingresar un numero y que me devuelva el termino de la serie 1,1,2,3,5,8.. utilizando pilas, no se me da la idea de como lo puedo hacer respetando operaciones del TDA Pila

Código
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. const int TAMPILA=32;
  7. typedef int contenedor[TAMPILA];
  8. typedef struct{
  9. contenedor datos;
  10. int cima;
  11. }tpila;
  12.  
  13. void fibonacci(int n);
  14. void init_stack(tpila &pila);
  15. void push_stack(tpila &pila, int nuevo);
  16. bool full_stack(tpila pila);
  17. bool empty_stack(tpila pila);
  18. int pop_stack(tpila &pila);
  19. int top_stack(tpila pila);
  20.  
  21. void ingreso(int n);
  22. int main()
  23. {
  24. int numero;
  25. cout << "Ingrese un numero: ";
  26. cin >> numero;
  27. fibonacci(numero);
  28. system("pause");
  29. return 0;
  30. }
  31.  
  32.  
  33. void fibonacci(int n)
  34. {
  35. tpila pila;
  36. init_stack(pila);
  37. while(n>0){
  38. //Aca pondria mi algoritmo si tuviera uno
  39. }
  40.  
  41. cout << "\nFibonacci: " << << endl;
  42. }
  43.  
  44. void init_stack(tpila &pila)
  45. {
  46. pila.cima=-1;
  47. }
  48.  
  49. void push_stack(tpila &pila, int nuevo)
  50. {
  51. if(full_stack(pila)==true){
  52. cout << "PILA LLENA" << endl;
  53. }
  54. else{
  55. pila.cima++;
  56. pila.datos[pila.cima]=nuevo;
  57. }
  58. }
  59.  
  60. bool full_stack(tpila pila)
  61. {
  62. return pila.cima==TAMPILA-1;
  63. }
  64.  
  65. bool empty_stack(tpila pila)
  66. {
  67. return pila.cima==-1;
  68. }
  69.  
  70. int pop_stack(tpila &pila)
  71. {
  72. int aux;
  73. if(empty_stack(pila)==true){
  74. aux=-1;
  75. }
  76. else{
  77. aux=pila.datos[pila.cima];
  78. pila.cima--;
  79. }
  80. return aux;
  81. }
  82.  
  83. int top_stack(tpila pila)
  84. {
  85. int aux;
  86. if(empty_stack(pila)==true){
  87. aux=-1;
  88. }
  89. else{
  90. aux=pila.datos[pila.cima];
  91. }
  92. return aux;
  93. }
  94.  
300  Programación / Programación C/C++ / Ayuda con juego de adivinar palabras en: 14 Junio 2018, 04:16 am
Quisiera que alguien diga como tengo que hacer para que cada vez que cometo un error o acierto una letra se vaya limpiando la pantalla con system("cls") de manera correcta y se vaya como actualizando el juego del ahorcado y no mostrando todo secuencialmente como lo hace mi programa  ;-)

Código
  1. #include <iostream>
  2. #include <string.h>
  3. #include <time.h>
  4.  
  5. using namespace std;
  6.  
  7. void inicio();
  8. void primer_error();
  9. void segundo_error();
  10. void tercer_error();
  11. void cuarto_error();
  12. void quinto_error();
  13. void jugar();
  14. void rellenar(string n);
  15. void intentos(int intento);
  16.  
  17. int main(){
  18. int opcion;
  19. srand(time(NULL));
  20. do{
  21. cout << "1. JUGAR" << endl;
  22. cout << "2. SALIR" << endl;
  23. cin >> opcion;
  24. switch(opcion){
  25. case 1: jugar(); break;
  26. case 2: cout << "HASTA LUEGO" << endl; break;
  27. default: cout << "OPCION INCORRECTA, Intente de nuevo" << endl;
  28. }
  29. }while(opcion!=2);
  30. system("pause");
  31. return 0;
  32. }
  33.  
  34. void inicio()
  35. {
  36. cout << "**********" << endl;
  37. cout << "*           " << endl;
  38. cout << "*           " << endl;
  39. cout << "*           " << endl;
  40. cout << "*           " << endl;
  41. cout << "*           " << endl;
  42. cout << "*           " << endl;
  43. }
  44.  
  45. void primer_error()
  46. {
  47. cout << "**********" << endl;
  48. cout << "*        |  " << endl;
  49. cout << "*           " << endl;
  50. cout << "*           " << endl;
  51. cout << "*           " << endl;
  52. cout << "*           " << endl;
  53. cout << "*           " << endl;
  54. }
  55.  
  56. void segundo_error()
  57. {
  58. cout << "**********" << endl;
  59. cout << "*        |  " << endl;
  60. cout << "*        O  " << endl;
  61. cout << "*           " << endl;
  62. cout << "*           " << endl;
  63. cout << "*           " << endl;
  64. cout << "*           " << endl;
  65. }
  66.  
  67. void tercer_error()
  68. {
  69. cout << "**********" << endl;
  70. cout << "*        |  " << endl;
  71. cout << "*        O  " << endl;
  72. cout << "*       /|\\" << endl;
  73. cout << "*           " << endl;
  74. cout << "*           " << endl;
  75. cout << "*           " << endl;
  76. }
  77.  
  78. void cuarto_error()
  79. {
  80. cout << "**********" << endl;
  81. cout << "*        |  " << endl;
  82. cout << "*        O  " << endl;
  83. cout << "*       /|\\" << endl;
  84. cout << "*        A  " << endl;
  85. cout << "*       / \\" << endl;
  86. cout << "*           " << endl;
  87. }
  88.  
  89. void quinto_error()
  90. {
  91. cout << "**********   " << endl;
  92. cout << "*        |   " << endl;
  93. cout << "*        O   " << endl;
  94. cout << "*       /|\\ " << endl;
  95. cout << "*        A   " << endl;
  96. cout << "*       / \\ " << endl;
  97. cout << "*            " << endl;
  98. cout << "     PERDISTE" << endl;
  99. }
  100.  
  101. void jugar()
  102. {
  103. int aleatorio;
  104. string a="OSO", b="PAYASO", c="CUADERNO";
  105.   aleatorio=rand()%3+1;
  106. switch(aleatorio){
  107. case 1: rellenar(a); break;
  108. case 2: rellenar(b); break;
  109. case 3: rellenar(c); break;
  110. }
  111. }
  112.  
  113. void rellenar(string n)
  114. {
  115. int contador=0, aux=0, aux2, MAX=n.length();
  116. char letra, contenedor[MAX];
  117. for(int i=0;i<MAX;i++){
  118. contenedor[i]='_';
  119. }
  120. inicio();
  121. while(contador<5){
  122. aux2=0;
  123. for(int j=0;j<MAX;j++){
  124. cout << contenedor[j] << " ";
  125. }
  126. cout << endl;
  127. cout << "Ingrese letra: ";
  128. cin >> letra;
  129. for(int k=0;k<MAX;k++){
  130. if(letra==n[k] && contenedor[k]=='_'){
  131. contenedor[k]=letra;
  132. aux++;
  133. break;
  134. }
  135. else{
  136. aux2++;
  137. }
  138. }
  139. if(aux==MAX){
  140. cout << "GANASTE! La palabra oculta es: " << n << endl;
  141. break;
  142. }
  143. if(aux2==MAX){
  144. contador++;
  145. intentos(contador);
  146. }
  147. }
  148. }
  149.  
  150. void intentos(int intento)
  151. {
  152. switch(intento){
  153. case 1: primer_error(); break;
  154. case 2: segundo_error(); break;
  155. case 3: tercer_error(); break;
  156. case 4: cuarto_error(); break;
  157. case 5: quinto_error(); break;
  158. }
  159. }
  160.  
  161.  
Páginas: 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines