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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: 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.
2  Programación / Programación C/C++ / Re: Problema codigo en C 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.
3  Programación / Programación C/C++ / Problema codigo en C 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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. printf("********************************\n");
  7. printf("********************************\n");
  8. printf("*                              *\n");
  9. printf("*           LW Solver          *\n");
  10. printf("*                              *\n");
  11. printf("********************************\n");
  12.  
  13. printf("This program solves the hyperbolic EDP of a bar vibration\n");
  14. printf("The dimensions of the bar are L=1 m, D= 0,3 m. The material of the\n");
  15. printf("bar is steel, with E=200 GPa and rho=7850 kg/m^3. dx=0.05 m\n");
  16. printf("dt=0.05 s. The solution will be write in a .dat file\n\n");
  17.  
  18. /* Variables */
  19.  
  20. int i,j;
  21. double u[20][20];
  22.  
  23. FILE *fp;
  24.  
  25. /* Escritura del fichero solucion */
  26. fp = fopen("Solution_LW-Solver_005.dat","w");
  27.  
  28. /*----------------------------------------------------------------------------*/
  29.  
  30. fprintf(fp,"********************************\n");
  31. fprintf(fp,"********************************\n");
  32. fprintf(fp,"*                              *\n");
  33. fprintf(fp,"*           LW Solver          *\n");
  34. fprintf(fp,"*                              *\n");
  35. fprintf(fp,"********************************\n");
  36.  
  37. fprintf(fp,"This program solves the hyperbolic EDP of a bar vibration\n");
  38. fprintf(fp,"The dimensions of the bar are L=1 m, D= 0,3 m. The material of\n");
  39. fprintf(fp,"bar is steel, with E=200 GPa and rho=7850 kg/m^3. dx=0.05 m,\n");
  40. fprintf(fp,"dt=0.05 s.\n\n");
  41.  
  42.  
  43. /*----------------------------------------------------------------------------*/
  44.  
  45. printf("Solving...\n");
  46. fprintf(fp, "Solution for dt=0.05m\n\n");
  47. fprintf(fp,"*************************************************************\n\n");
  48. fprintf(fp,"Calculated values are:\n\n");
  49. /* Condiciones de contorno e iniciales */
  50.  
  51. /* Condicion de desplazamiento nulo en el origen */
  52. for (j=0; j<=20; j++) {
  53.    u[0][j]=0;
  54. }
  55. printf("\n\n1....");
  56. /* Condicion de desplazamiento inicial nulo */
  57. for (i=0; i<=20; i++) {
  58.    u[i][0]=0;
  59. }
  60. printf("\n\n2....");
  61. /* Ecuaciones iniciales */
  62.  
  63. /* Ecuacion inicial para todos los nodos salvo para el primero y el ultimo */
  64. for (i=1; i <=19; i++) {
  65.    u[i][1]=1;
  66. }
  67. printf("\n\n3....");
  68. /* Ecuacion del nodo del extremo */
  69. u[20][1]=0;
  70. printf("\n\n4....");
  71. /* Resolucion iterativa */
  72. /* Step 1 par; Step 2 impar */
  73.  
  74. for (j=2; j<=20; j++) {
  75.    if (j%2 == 0)
  76.    {
  77.        for (i=1; i<=19; i++) {
  78.          u[i][j]=0.5*(u[i+1][j-1]+u[i-1][j-1])-0.08*(u[i+1][j-1]-u[i-1][j-1]);
  79.        }
  80.            u[20][j]=u[19][j-1];        
  81.    }
  82.    else if (j%2 !=0)
  83.    {
  84.        for (i=1; i<=19; i++) {
  85.          u[i][j]=u[i][j-2]-0.16*(u[i+1][j-1]-u[i-1][j-1]);
  86.        }
  87.          u[20][j]=u[20][j-2];
  88.    }
  89. }
  90.  
  91. printf("\n\n5....");
  92.  
  93. for (i=0; i<=20; i++) {
  94.    for (j=0; j<=20; j++) {
  95.        fprintf(fp,"U%d%d= %12.4e C\n", i, j, u[i][j]);
  96.    }
  97. }
  98.  
  99. printf("\n\nSolved!");
  100.  
  101. fprintf(fp,"\n\nEND DATA");
  102. fclose(fp);
  103.  
  104.  printf("\n\nPress enter to continue ...");
  105.  getchar();
  106.  return 0;
  107. }

Espero que alguien pueda ayudarme. Asimismo agradecería todo tipo de consejos.

Muchas gracias.

Saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines