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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda Programa Sencillo (simulación)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Programa Sencillo (simulación)  (Leído 2,110 veces)
Ccaarlos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Duda Programa Sencillo (simulación)
« en: 31 Marzo 2015, 10:26 am »

Hola, muy buenas a todos. Este es mi primer post en este foro. Resulta que he empezado a programa C hace poco y estoy en esa fase en la que uno mira con incredulidad todo lo que hace preguntándose ¿no habrá un error, lo habré hecho bien?
Pues bien, he hecho un programa para el colegio   http://www.danipartal.net/pdf/2bachTema99Hoja2.pdf y resulta que, aunque no hay errores de sintaxis no hace lo que quiero que haga, que es básicamente lo que podéis leer ahí. Agradecería mucho que aquel que tenga un poco de tiempo libre mirara el código que he hecho y me dijera, con claridad, los fallos. Muchas gracias.
PD: no sé si he cometido alguna falta contra las normas del foro, ya que soy nuevo y no he encontrado un listado de normas o algo así que diga cómo publicar.

Código:
Código
  1. #include<iostream>
  2. #include <windows.h>
  3. #include <conio.h>
  4. //para la función del azar
  5. #include <cstdlib>
  6. //para el tiempo
  7. #include <ctime>
  8.  
  9. // número de casillas [ancho] [alto]
  10. int celda [19][19];
  11.  
  12. using namespace std;
  13.  
  14. // esta función coloca el cursor de la consola de comandos en int x e int y
  15. void gotoxy (int x, int y) {
  16.  
  17. //obtiene el handle output de la consola de comandos
  18.  
  19. HANDLE hCon;
  20. hCon = GetStdHandle (STD_OUTPUT_HANDLE);
  21.  
  22. //coloca el cursor en la posición querida
  23.  
  24. COORD dwPos;
  25. dwPos.X = x;
  26. dwPos.Y = y;
  27.  
  28. SetConsoleCursorPosition (hCon, dwPos);
  29.  
  30. }
  31.  
  32.  
  33. //esta función asigna los árboles o a su ausencia en función de int probabilidad
  34. void poner_arboles (float probabilidad) {
  35.  
  36.  
  37. for (int x = 0; x <= 19; x ++ ) {
  38.  
  39. for (int y = 0; y <= 19; y ++) {
  40.  
  41.  
  42. //usar la probabilidad para ver si pinta un árbol o no
  43. srand( time( 0 ) );
  44.  
  45.    int numero;
  46. numero = rand() % 10 + 1;
  47.  
  48. if (numero <= (probabilidad*10)) {gotoxy (x,y); cout << ""; celda [x][y] = 1; }
  49.  
  50. else celda [x][y]=0;
  51. }
  52.  
  53. }
  54.  
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61. int main (int argc, char *argv[]) {
  62.  
  63. poner_arboles (0.4);
  64.  
  65. int numero_x;
  66. int numero_y;
  67.  
  68. int bucle_infinito = 1;
  69. while (bucle_infinito == 1 ) {
  70.  
  71. //semilla aleatoria para probabilidad
  72. srand( time( 0 ) );
  73. numero_x = rand() % 20;
  74.  
  75. srand( time( 0 ) );
  76. numero_y = rand() % 20;
  77.  
  78. if (celda [numero_x] [numero_y] == 1) break;
  79. }
  80.  
  81. int fuegos;
  82.  
  83. do {
  84.  
  85. //"fuegos" registra si ha habido nuevos incendios, si no, se para el programa
  86. fuegos = 0;
  87.  
  88. for (int y = 0; y <= 19; y++) {
  89. for ( int x = 0; x <= 19; x++) {  
  90.  
  91. // ver si las casillas de al lado de los árboles están incendiadas
  92. // y si lo están prender fuego al árbol
  93.  
  94. if (celda[x][y] == 1) {
  95. if (celda [x-1][y-1] == 2 || celda [x-1][y] == 2 ||
  96. celda [x-1][y+1] == 2 || celda [x][y-1] == 2 ||
  97. celda [x][y+1] == 2 || celda [x+1][y-1] == 2 ||
  98. celda [x+1][y] == 2 || celda [x+1][y+1] == 2)    
  99.  
  100. {celda [x][y] = 2; gotoxy (x,y); cout << "¤"; fuegos ++;}
  101.  
  102.     }
  103.  }
  104.  
  105.  
  106.  
  107. }
  108.  
  109.   Sleep (1000);
  110.  
  111. }  while (fuegos > 0);  
  112.  
  113. return 0;
  114. }

Mod: Tema modificado, los códigos deben ir entre etiquetas GeSHi


« Última modificación: 31 Marzo 2015, 12:38 pm por engel lex » En línea

Hurdano


Desconectado Desconectado

Mensajes: 322


Se que puedo cambiar el futuro, pero no el pasado


Ver Perfil WWW
Re: Duda Programa Sencillo (simulación)
« Respuesta #1 en: 31 Marzo 2015, 11:22 am »

Hola buenas.

No lo he investigado a fondo, y he leido el pdf así muy por encima, y sinceramente, me parece bastante similar a un juego buscaminas, hundir la flota, etc. Te aconsejo que busques estos juegos y los mires, quizás te ayuden en la comprensión del ejercicio planteado.

Cuando llegue a casa del curro seguramente lo haga jeje parece interesante. Además no tengo aquí ningún editor. Si quieres meterle los colores en plan lo de verde, rojo y blanco, igual te sale mejor hacerlo en javascript como te pone, lo ves más claro y así simulas las zonas con los colores.

Ahora mismo no se o no recuerdo que hacia la librería de iostream.


En línea

Ccaarlos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Duda Programa Sencillo (simulación)
« Respuesta #2 en: 2 Abril 2015, 12:56 pm »

La librería de iostream creo que es para lo de cout y cin, pero no estoy seguro.
En línea

mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: Duda Programa Sencillo (simulación)
« Respuesta #3 en: 2 Abril 2015, 19:08 pm »

Ahí tienes una mezcla rara de C y C++.

Me ha parecido buena idea para practicar un poco con clases intentar hacer la simulación, aquí os lo dejo, todavía quedan cosas.

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. class Arbol
  7. {
  8. public:
  9. Arbol(int x, int y): quemado(false) {p_x=x;p_y=y;};
  10. void fuego(){quemado=true;};
  11. int p_x, p_y;
  12. bool quemado;
  13. };
  14.  
  15. class Bosque
  16. {
  17. public:
  18. Bosque(int a);
  19. void Llenar(float probabilidad);
  20. void iniciar_incendio();
  21. ~Bosque();
  22. private:
  23. int elementos;
  24. void incendio(int x, int y);
  25. Arbol ***matriz;
  26. };
  27.  
  28. Bosque::Bosque(int a)
  29. {
  30. elementos=a;
  31. matriz=new Arbol**[a];
  32. for(int i=0;i<=a;i++)
  33. matriz[i]=new Arbol*[a];
  34. }
  35.  
  36. void Bosque::Llenar(float probabilidad)
  37. {
  38. int x, y;
  39. float i;
  40. srand(time(NULL));
  41.  
  42. for(i=elementos*elementos*probabilidad;i>0;i--)
  43. {
  44. do
  45. {
  46. x=rand()%elementos;
  47. y=rand()%elementos;
  48. }while(matriz[x][y] != NULL);
  49. matriz[x][y]=new Arbol(x,y);
  50. }
  51. }
  52.  
  53. void Bosque::iniciar_incendio()
  54. {
  55. int x, y;
  56.  
  57. do
  58. {
  59. x=rand()%elementos;
  60. y=rand()%elementos;
  61. }while(matriz[x][y] == NULL);
  62.  
  63. incendio(x, y);
  64. }
  65.  
  66. void Bosque::incendio(int x, int y)
  67. {
  68. int i, j;
  69. for(i=-1;i<=1;i++)
  70. {
  71. for(j=-1;j<=1;j++)
  72. {
  73. if(((x+i)>=0 && (x+i)<elementos) && ((y+j)>=0 && (y+j)<elementos))
  74. {
  75. if(matriz[x+i][y+j]!=NULL&&matriz[x+i][y+j]->quemado==false)
  76. {
  77. matriz[x+i][y+j]->fuego();
  78. incendio(x+i, y+j);
  79. }
  80. }
  81. }
  82. }
  83. }
  84.  
  85. Bosque::~Bosque()
  86. {
  87. int i;
  88. for(i=0;i<elementos;i++)
  89. for(int j=0;j<elementos;j++)
  90. delete matriz[i][j];
  91. for(i=0;i<elementos;i++)
  92. delete[] matriz[i];
  93. delete[] matriz;
  94. }
  95.  
  96. int main()
  97. {
  98. Bosque bosque(10);
  99. bosque.Llenar(0.3);
  100.  
  101. bosque.iniciar_incendio();
  102.  
  103. return 0;
  104. }
  105.  

Sa1uDoS
« Última modificación: 2 Abril 2015, 19:10 pm por mr.blood » En línea

Ccaarlos

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Duda Programa Sencillo (simulación)
« Respuesta #4 en: 3 Abril 2015, 13:44 pm »

Gracias por tu aportación, el único fallo que encuentro es que dice que en la línea 40, da error el compilador ya que dice que no encuentra a time.
Dices que hay una mezcla rara de C y C++. Yo es que creía que en C++ se podía trabajar igual que en C, incluyendo sus librerías, y por eso todo eso de las funciones en vez de trabajar con clases y matrices. ¿Serías tan amable de decirme un vídeo, canal, hilo del foro, página, etc. donde pueda enterarme de las diferencias a la hora de trabajar con C y C++? Es que no las conozco muy bien y creo que ese puede ser un gran problema.
Muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
nececito programa de diseño y simulacion de circuitos, (livewire y pcb wizard)
Electrónica
ministroperez 7 8,471 Último mensaje 18 Julio 2005, 23:33 pm
por jcjuank
ayuda con un programa sencillo
Programación C/C++
angelina_slayer 9 4,195 Último mensaje 10 Noviembre 2010, 15:01 pm
por flony
Duda con simulacion de un cirucito con TINA / EDISON 4
Electrónica
dito3 2 3,178 Último mensaje 30 Marzo 2013, 18:20 pm
por Firos
Duda sobre programa sencillo [C++]
Programación C/C++
danny920825 0 1,321 Último mensaje 10 Noviembre 2013, 20:30 pm
por danny920825
duda programa sencillo (principante)
Programación C/C++
Chapielchapas 4 2,118 Último mensaje 18 Febrero 2018, 22:29 pm
por Chapielchapas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines