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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Segmentation Fault ('core' generado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Segmentation Fault ('core' generado)  (Leído 3,855 veces)
Magner

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Segmentation Fault ('core' generado)
« en: 4 Marzo 2015, 11:31 am »

Hola, estoy haciendo un programa en C++ que tiene que simular la caida de una pelota a través de unos obstaculos.

El problema es que despues de simular la caida, vuelve al menu, y sin hacer nada parece que vuelve a entrar en la opción de la caida y a la que se introduce cualquier dato, sale "segmentation fault", como puedo arreglar-lo?



Código
  1. #include<stdio.h>
  2. //int disparos_pos[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  3. //char disparos_dir[10]= {'i','i','d','i','d','d','i','d','d','i'};
  4. int n,i,j;
  5. int bola;
  6. int testbola=3;
  7. char testdirec='d';
  8.  
  9.  
  10. void mblanc (int tabla [10][10]);
  11. void caiguda (int tabla [10][10]);
  12. void ncaiguda (int tabla [10][10]);
  13. void estadist (int tabla [10][10]);
  14. void menu(void);
  15.  
  16. main(){
  17. int opcion;
  18. int tabla[10][10] = {
  19. {0,0,0,0,0,0,0,0,0,0},
  20. {1,0,0,0,0,0,0,1,0,0},
  21. {0,1,0,0,0,0,1,0,0,0},
  22. {0,0,1,0,0,1,0,0,0,0},
  23. {0,0,0,0,0,0,0,0,0,1},
  24. {0,0,0,0,0,0,0,0,1,0},
  25. {0,0,0,0,0,0,0,0,0,0},
  26. {0,1,0,0,0,1,0,0,0,0},
  27. {0,1,0,0,0,1,0,0,0,0},
  28. {0,0,0,0,0,0,0,0,0,0}
  29. };
  30.  
  31. do{
  32. printf("------------------------MENU----------------------------- \n");
  33. printf("1- Visualizar el contenido de la tabla de obstáculos por pantalla \n");
  34. printf("2- Visualizar e stadidisticas de la tabla \n");
  35. printf("3- Simuluar la caída de una pelota \n");
  36. printf("4- Simular la caída de 10 pelotas \n");
  37. printf("5- Salir \n");
  38. printf("introduce tu opcion: ");
  39. scanf ("%d",&opcion);
  40.  
  41. switch(opcion){
  42.  
  43. case 1:
  44. printf("Esta es la tabla: \n");
  45. mblanc(tabla);
  46.  
  47. break;
  48.  
  49. case 2:
  50.  
  51. break;
  52.  
  53. case 3:
  54.  
  55. caiguda(tabla);
  56. ncaiguda(tabla);
  57.  
  58. break;
  59.  
  60. case 4:
  61.  
  62. //caiguda(tabla);
  63. //ncaiguda(tabla);
  64.  
  65. break;
  66.  
  67. case 5:
  68. printf("Adios");
  69. break;
  70.  
  71. default:
  72. printf("Opción incorrecta \n");
  73. printf("Introduce un numero entre el 1 y el 5 \n");
  74. break;
  75. }
  76.  
  77. }while(opcion!=5);
  78.  
  79. }
  80. void mblanc (int tabla [10][10]){
  81. for(i=0;i<10;i++){
  82. for(j=0;j<10;j++){
  83. if(tabla[i][j]==0){
  84. printf(" ");
  85. }
  86. if(tabla[i][j]==1){
  87. printf("*");
  88. }
  89.  
  90. }
  91. printf("\n");
  92. }
  93.  
  94. }
  95. void caiguda (int tabla [10][10]){
  96. int posicion;
  97. char direccion;
  98. int cont=2;
  99. printf("Indica la posicion desde la que cae la bola \n");
  100. scanf ("%d",&posicion);
  101. printf("Indica la direccion en la que gira la bola:");
  102. scanf("%c",&direccion);
  103. printf(" \n");
  104. tabla[0][posicion] = cont;
  105. for(i=0;i<10;i++){
  106. for(j=0;j<10;j++){
  107. if(j==posicion){
  108. if(tabla[i+1][posicion]==0){ //nada debajo
  109. cont++;
  110. tabla[i+1][posicion]=cont;
  111. }
  112. else/*(tabla[i+1][posicion]==1)*/{ //algo debajo
  113. if(tabla[i+2][posicion]==1){ //vertical
  114. if(direccion=='d'){
  115. cont++;
  116. posicion++;
  117. tabla[i][posicion]=cont;
  118. j=0;
  119. }
  120. if(direccion=='i'){
  121. cont++;
  122. posicion--;
  123. tabla[i][posicion]=cont;
  124. j=0;
  125. }
  126. }
  127. if(tabla[i+1][posicion+1]==1 || tabla[i+1][posicion-1]==1){ //recta
  128. if(direccion=='d'){
  129. cont++;
  130. posicion++;
  131. tabla[i][posicion]=cont;
  132. j=0;
  133. }
  134. if(direccion=='i'){
  135. cont++;
  136. posicion--;
  137. tabla[i][posicion]=cont;
  138. j=0;
  139. }
  140.  
  141. }
  142. if(tabla[i][posicion-1]==1 || tabla[i+2][posicion+1]==1){ //diagonal  
  143. cont++;
  144. posicion++;
  145. direccion = 'd';
  146. tabla[i][posicion]=cont;
  147. j=0;
  148. }
  149. if(tabla[i][posicion+1]==1 || tabla[i+2][posicion-1]==1){ //diagonal
  150. cont++;
  151. posicion--;
  152. direccion = 'i';
  153. tabla[i][posicion]=cont;
  154. j=0;
  155. }
  156.  
  157.  
  158. }
  159. }
  160. }
  161. }
  162. for(i=0;i<10;i++){
  163. for(j=0;j<10;j++){
  164. if(tabla[i][j]==1){
  165. printf("*");
  166. }
  167. if(tabla[i][j]==0){
  168. printf(" ");
  169. }
  170. if(tabla[i][j]!=0 && tabla[i][j]!=1){
  171. printf("%d",tabla[i][j]);
  172. }
  173. }
  174. printf("\n");
  175. }
  176.  
  177.  
  178.  
  179. }
  180. void ncaiguda (int tabla [10][10]){
  181. for(i=0;i<10;i++){
  182. for(j=0;j<10;j++){
  183. if(tabla[i][j]!=1){
  184. tabla[i][j] = 0;
  185. }
  186.  
  187. }
  188. }
  189.  
  190. }
  191. void estadist (int tabla [10][10]){
  192.  
  193.  
  194. }

Muchas gracias :)


« Última modificación: 4 Marzo 2015, 13:32 pm por Magner » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Segmentation Fault ('core' generado)
« Respuesta #1 en: 4 Marzo 2015, 17:01 pm »

Depura tu programa (podes usar gdb, en Google hay mucha informacion al respecto).


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Segmentation fault (core dumped)
Programación C/C++
neveldine 3 5,603 Último mensaje 3 Mayo 2012, 17:03 pm
por neveldine
Ayuda con segmentation fault
Programación C/C++
puppetz 7 3,413 Último mensaje 26 Junio 2014, 23:58 pm
por Eternal Idol
Segmentation Fault C++
Programación C/C++
marlboreano 6 3,862 Último mensaje 15 Enero 2015, 18:15 pm
por _Enko
Segmentation fault (core dumped)
Programación General
MPLS 1 2,089 Último mensaje 14 Octubre 2015, 14:06 pm
por Becerra
segmentation fault core dumped sdl2 c++
Programación C/C++
misternaim 0 1,579 Último mensaje 22 Marzo 2016, 20:12 pm
por misternaim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines