Título: Problema codigo en C Publicado por: DGoz en 23 Febrero 2015, 02:16 am Hola a todos.
Soy nuevo programando y estoy tratando de desarrollar una herramienta para resolver una EDP hiperbólica. El caso es que me compila, pero al correr me da un error y se queda colgada. Dejo aquí el código. Código
Espero que alguien pueda ayudarme. Asimismo agradecería todo tipo de consejos. Muchas gracias. Saludos. Título: Re: Problema codigo en C Publicado por: engel lex en 23 Febrero 2015, 02:37 am normalmente es bueno que indiques los errores... la corrí y da una violacion de segmento... que no se porque no lo reporta antes... pero es por la matriz desbordada, es decir
Código y Código
cuando declaras u[20][20] estás creando una matriz de 20x20 es decir de 0 al 19, por otro lado el ciclo recorre 21 valores (el 0 se cuenta)... el error es que intentó acceder a un especio de memoria no permitido, lo dejó pasar y avisó al final Título: Re: Problema codigo en C Publicado por: DGoz en 23 Febrero 2015, 02:44 am Muchas gracias por tu respuesta.
Tendré en cuenta para el futuro, que al declarar [20][20] estoy declarando 0 al 19. Por mi parte queda cerrado el tema. Un saludo. Título: Re: Problema codigo en C Publicado por: vangodp en 23 Febrero 2015, 02:44 am si declaras double u[20][20]; no puedes ir en los bucles de a 20 como lo haces en for (j=0; j<=20; j++). si tienes claro que en C/C++ si inicias j= 0 de 0 a 19 tienes 20, j<=20 es como decir < o == y va parar en == seguro.
Otra cosa que vi es que si quieres un archivo binario .dat debes poner wb en el modo de apertura: fp = fopen("Solution_LW-Solver_005.dat","wb");. La b de binario. Arregla esas cosas y ya nos cuentas como ha ido. Quizas haya mas cosas pero no veo mas nada. =( Suerte Título: Re: Publicado por: DGoz en 23 Febrero 2015, 08:59 am Ya esta solucionado y el programa corre correctamente. Realmente necesitaba una matriz de 21x21. Así que cambié a u[21][21]. También he implementado el resto de recomendaciones (en los bucles j == 20)
Gracias por vuestra ayuda y consejos. Saludos. |