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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Process returned -1073741819
« en: 31 Mayo 2020, 15:25 pm »

Soy bastante nuevo en C y mi trabajo de fin de curso es escribir un programa para clasificar conos. Para los conos 2D he podido acabar arreglándomelas yo solo pero para los conos de tres dimensiones siempre me devuelve esto el compilador. Entiendo que tengo alguna variable de la función tipus3d mal (las demás funciones no hace falta ni mirarlas), a partir de cuando pasa a procesar conos en tres dimensiones pero voy bastante perdido... Muchas gracias!

Aquí el código en cuestión:

Código
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include <stdlib.h>
  4. #define PI 3.14159265
  5.  
  6. double ProducteEscalar(double u[], double v[], int dim);
  7.  
  8. double Norma(double u[], int dim);
  9.  
  10. int BaseR3(double u[], double v[], double w[], int dim);
  11.  
  12. double Angle(double u[], double v[], int dim);
  13.  
  14. double Determinant(double u[], double v[], double w[]);
  15.  
  16. int Perpendiculars(double u[], double v[], int dim);
  17.  
  18. double ModAngle(double u[], double v1[], double v2[], int dim);
  19.  
  20. void ProjeccioOrtogonal(double u[], double v[],double w[], int dim);
  21.  
  22. void ProducteVectorial(double u[], double v[],double w[]);
  23.  
  24. int tipus2d(int n, double v[n][3], double u[], unsigned int vmin[], unsigned int * pmin);
  25.  
  26. int projectacon(int n, double u[], double v[][3], double proj[][3]);
  27.  
  28. int tipus3d(int n, double v[n][3],unsigned int vmin[], unsigned int * pmin);
  29.  
  30.  
  31. int main()
  32. {
  33. unsigned int * p = malloc(sizeof(*p));
  34. double d,e,f;
  35. int n=0,i=0;
  36. FILE * fitxer;
  37. fitxer = fopen("poliedric4.dat","r");
  38. if ( fitxer == NULL )
  39. {
  40. fprintf (stderr , " ERROR : El fitxer ’recta.txt’ no es pot obrir ... \n\n");
  41. free(p);
  42. return -100;
  43. }
  44. while (EOF!= fscanf (fitxer , "%lf %lf %lf ", &d, &e, &f)) //No llegeix fitxers amb comes.
  45. {
  46. n++;
  47. }
  48. fclose(fitxer);
  49. double v[n][3];
  50. unsigned int vmin[n];
  51. fopen("poliedric4.dat","r");
  52. while (EOF!= fscanf (fitxer , "%lf %lf %lf ", &d, &e, &f))
  53. {
  54. v[i][0]=d;
  55. v[i][1]=e;
  56. v[i][2]=f;
  57. i++;
  58. }
  59. fclose(fitxer);
  60.  
  61. int a = tipus3d(n, v, vmin, &(*p));
  62.  
  63. FILE * meufitxer ;
  64. meufitxer = fopen (" generadorsminimals.txt ", "w");
  65. if ( meufitxer == NULL )
  66. {
  67. fprintf (stderr , " ERROR : El fitxer ’generadorsminimals.txt’ no es pot obrir ...\n\n");
  68. free(p);
  69. return 1;
  70. }
  71. for(int k=0;k<(*p);k++)
  72. {
  73.     fprintf(meufitxer, "%lf\t", v[vmin[k]][0]) ;
  74.     fprintf(meufitxer, "%lf\t", v[vmin[k]][1]) ;
  75.     fprintf(meufitxer, "%lf\t", v[vmin[k]][2]) ;
  76.     fprintf(meufitxer, "\n") ;
  77. }
  78. fclose(meufitxer);
  79.  
  80.  printf("S'ha llegit un con generat per %d vectors.", n);
  81.  if(a==0)
  82.  {
  83.      printf("\nEl con és el {0}.");
  84.      printf("\nUn sistema de generadors és:\n");
  85.      for(int i=0;i<(*p);i++)
  86.      {
  87.          printf("\n");
  88.          for(int j=0;j<3;j++)
  89.          {
  90.              printf("%lf\t", v[vmin[i]][j]);
  91.          }
  92.      }
  93.      free(p);
  94.      return 100;
  95.  }
  96.    if(a==1)
  97.  {
  98.      printf("\nEl con és una semirecta.");
  99.      printf("\nUn sistema de generadors és:\n");
  100.      for(int i=0;i<(*p);i++)
  101.      {
  102.          printf("\n");
  103.          for(int j=0;j<3;j++)
  104.          {
  105.              printf("%lf\t", v[vmin[i]][j]);
  106.          }
  107.      }
  108.      free(p);
  109.      return 100;
  110.  }
  111.    if(a==2)
  112.  {
  113.      printf("\nEl con és una recta.");
  114.      printf("\nUn sistema de generadors és:\n");
  115.      for(int i=0;i<(*p);i++)
  116.      {
  117.          printf("\n");
  118.          for(int j=0;j<3;j++)
  119.          {
  120.              printf("%lf\t", v[vmin[i]][j]);
  121.          }
  122.      }
  123.      free(p);
  124.      return 100;
  125.  }
  126.    if(a==3)
  127.  {
  128.      printf("\nEl con és un angle del pla.");
  129.      printf("\nUn sistema de generadors és:\n");
  130.      for(int i=0;i<(*p);i++)
  131.      {
  132.          printf("\n");
  133.          for(int j=0;j<3;j++)
  134.          {
  135.              printf("%lf\t", v[vmin[i]][j]);
  136.          }
  137.      }
  138.      free(p);
  139.      return 100;
  140.  }
  141.    if(a==4)
  142.  {
  143.      printf("\nEl con és un semiplà.");
  144.      printf("\nUn sistema de generadors és:\n");
  145.      for(int i=0;i<(*p);i++)
  146.      {
  147.          printf("\n");
  148.          for(int j=0;j<3;j++)
  149.          {
  150.              printf("%lf\t", v[vmin[i]][j]);
  151.          }
  152.      }
  153.      free(p);
  154.      return 100;
  155.  }
  156.    if(a==5)
  157.  {
  158.      printf("\nEl con és un pla.");
  159.      printf("\nUn sistema de generadors és:\n");
  160.      for(int i=0;i<(*p);i++)
  161.      {
  162.          printf("\n");
  163.          for(int j=0;j<3;j++)
  164.          {
  165.              printf("%lf\t", v[vmin[i]][j]);
  166.          }
  167.      }
  168.      return 100;
  169.  }
  170.  if(a==6)
  171.  {
  172.      printf("\nEl con és polièdric amb %d arestes.", *p);
  173.      printf("\nUn sistema de generadors és:\n");
  174.      for(int i=0;i<(*p);i++)
  175.      {
  176.          printf("\n");
  177.          for(int j=0;j<3;j++)
  178.          {
  179.              printf("%lf\t", v[vmin[i]][j]);
  180.          }
  181.      }
  182.      free(p);
  183.      return 100;
  184.  }
  185.      if(a==7)
  186.  {
  187.      printf("\nEl con és un angle dièdric.");
  188.      printf("\nUn sistema de generadors és:\n");
  189.      for(int i=0;i<(*p);i++)
  190.      {
  191.          printf("\n");
  192.          for(int j=0;j<3;j++)
  193.          {
  194.              printf("%lf\t", v[vmin[i]][j]);
  195.          }
  196.      }
  197.      free(p);
  198.      return 100;
  199.  }
  200.      if(a==8)
  201.  {
  202.      printf("\nEl con és un semiespai.");
  203.      printf("\nUn sistema de generadors és:\n");
  204.      for(int i=0;i<(*p);i++)
  205.      {
  206.          printf("\n");
  207.          for(int j=0;j<3;j++)
  208.          {
  209.              printf("%lf\t", v[vmin[i]][j]);
  210.          }
  211.      }
  212.      free(p);
  213.      return 100;
  214.  }
  215.  if(a==9)
  216.  {
  217.      printf("\nEl con és tot l'espai.");
  218.      printf("\nUn sistema de generadors és:\n");
  219.      for(int i=0;i<(*p);i++)
  220.      {
  221.          printf("\n");
  222.          for(int j=0;j<3;j++)
  223.          {
  224.              printf("%lf\t", v[vmin[i]][j]);
  225.          }
  226.   }
  227.   free(p);
  228.   return 100;
  229.  }
  230.  free(p);
  231. return -100;
  232. }
  233. int tipus3d(int n, double v[n][3],unsigned int vmin[], unsigned int * pmin)
  234. {
  235.    * pmin = 0;
  236.    for (int i=0;i<100;i++) //Buidem el vector
  237.    {
  238.        vmin[100]=0;
  239.    }
  240.    unsigned int vcares[n];  //Llista de <= n-1 enters.
  241.    for (int i=0;i<n-1;i++) //Buidem el vector
  242.    {
  243.        vcares[i]=0;
  244.    }
  245.    unsigned int wmin[4];  //Llista de <= 4 enters.
  246.    for (int i=0;i<4;i++) //Buidem el vector
  247.    {
  248.        wmin[i]=0;
  249.    }
  250.    int i, j, m, tip;
  251.    int repetit;
  252.    double w[n][3];   //Llista de m <= n vectors.
  253.    unsigned int * long_wmin  = malloc(sizeof(*long_wmin));
  254.    unsigned int * long_vcares  = malloc(sizeof(*long_vcares));
  255.    double perp[3];
  256.  
  257.    if(n == 0)  //Con zero.
  258.      {
  259.          free(long_wmin);
  260.          free(long_vcares);
  261.         return 0;
  262.      }
  263.    if(n == 1) //Semirecta.
  264.      {
  265.         vmin[(*pmin)]=0;
  266.         (*pmin)++;
  267.         free(long_wmin);
  268.         free(long_vcares);
  269.         return 1;
  270.      }
  271.    //A partir d'aquí  n >= 1
  272.   m = projectacon(n, v[0], v, w);
  273.   if(m == 0) // Projecció igual a punt: dimensió 1
  274.   {
  275.       for(i=0;i<n;i++) // Cal distingir si recta o semirecta
  276.       {
  277.           if(ProducteEscalar(v[0], v[i], 3)<0)
  278.           {
  279.               vmin[(*pmin)]=0; // Algun angle &#960;: recta
  280.               (*pmin)++;
  281.               vmin[(*pmin)]=i;
  282.               (*pmin)++;
  283.               free(long_wmin);
  284.               free(long_vcares);
  285.               return 2;
  286.           }
  287.       }
  288.       vmin[(*pmin)]=0;
  289.       (*pmin)++; // Cap angle &#960;: semirecta
  290.        free(long_wmin);
  291.        free(long_vcares);
  292.       return 1;
  293.   }
  294.   tip = tipus2d(m, w, v[0], wmin, long_wmin);
  295.   if(tip<3)
  296.   {
  297.       ProducteVectorial(v[0],w[0], perp); // Vector perpendicular
  298.       free(long_wmin);
  299.       free(long_vcares);
  300.       return tipus2d(n, v, perp, vmin, &(*pmin));;
  301.   }
  302.   //A partir d'aquí el con és de dimensió 3.
  303.   for(i=0;i<n;i++)
  304.   {
  305.       m = projectacon(n, v[i], v, w );
  306.       tip = tipus2d(m, w, v[i], wmin, long_wmin);
  307.       if(tip==3)       // projecció és angle; v[i] genera aresta
  308.       {
  309.           repetit = 0; // control d’aresta ja trobada
  310.           for(j=0;j<(*pmin); j++)
  311.           {
  312.               if(Angle(v[i],v[vmin[j]], 3)==0)
  313.               {
  314.                   repetit = 1;
  315.               }
  316.           }
  317.           if(repetit == 0)
  318.           {
  319.               vmin[(*pmin)]=i;
  320.               (*pmin)++;
  321.           }
  322.       }
  323.       if(tip == 4) // projecció és semiplà; v[i] està a cara
  324.       {
  325.           vcares[(*long_vcares)] = i;
  326.           (*long_vcares)++;
  327.       }
  328.   }
  329.   // En aquest punt vmin generen les arestes.
  330.   if ((*pmin)>2)// con polièdric
  331.   {
  332.       free(long_wmin);
  333.       free(long_vcares);
  334.       return 6;
  335.   }
  336.   if ((*pmin)==2)// con dièdric; cal trobar dues cares
  337.   {
  338.       perp[0]=v[vmin[0]][0]; // vector aresta, per projectar
  339.       perp[1]=v[vmin[0]][1];
  340.       perp[2]=v[vmin[0]][2];
  341.       vmin[(*pmin)]=vcares[0];  // primera aresta-cara
  342.       (*pmin)++;
  343.       ProjeccioOrtogonal(perp, v[vcares[0]], w[0], 3); // projecció aresta-cara
  344.       for(i=1;i<(*long_vcares); i++)
  345.       {
  346.           ProjeccioOrtogonal(perp, v[vcares[i]], w[1], 3); // projecció
  347.           if(Angle(w[0], w[1], 3)!=0) // és a l’altra cara
  348.           {
  349.               vmin[(*pmin)]=vcares[i];   // segona aresta-cara
  350.               (*pmin)++;
  351.               free(long_wmin);
  352.               free(long_vcares);
  353.               return 7;
  354.           }
  355.       }
  356.   }
  357.   if((*long_vcares)>0)// És un semiespai
  358.   {
  359.       for(i=0;i<m;i++)// Col.leccionem els vectors cara
  360.       {
  361.           w[i][0]=0;
  362.           w[i][1]=0;
  363.           w[i][2]=0;
  364.       }
  365.    j=n-1;             // i també un vector interior
  366.  
  367.    for(i=0;i<(*long_vcares);i++)
  368.    {
  369.        w[i][0]=v[vcares[i]][0];
  370.        w[i][1]=v[vcares[i]][1];
  371.        w[i][2]=v[vcares[i]][2];
  372.  
  373.        if((abs(Angle(w[0], w[i], 3)))>0 && (abs(Angle(w[0], w[i], 3))) < PI)
  374.        {
  375.            ProducteVectorial(w[0], w[i], perp);// Un vector ortogonal
  376.        }
  377.        if((j) == n-1 && vcares[i]>i)
  378.        {
  379.            i=j;
  380.        }
  381.    }
  382.    tip=tipus2d(m, w, perp, wmin, long_wmin);//És la mateixa llargada per lin.152
  383.    for(i=0;i<(*long_wmin);i++)
  384.    {
  385.        vmin[(*pmin)]=vcares[wmin[i]];
  386.        (*pmin)++;
  387.    }
  388.    vmin[(*pmin)]=j;
  389.    (*pmin)++;
  390.    free(long_wmin);
  391.    free(long_vcares);
  392.    return 8;
  393.   }
  394.   for(i=0;i<m;i++)// Col.leccionem els vectors cara
  395.       {
  396.           w[i][0]=0;
  397.           w[i][1]=0;
  398.           w[i][2]=0;
  399.       }
  400.   for(i=1;i<n;i++)// Tots menys v[0]
  401.   {
  402.       w[i][0]=v[i][0];
  403.       w[i][1]=v[i][1];
  404.       w[i][2]=v[i][2];
  405.   }
  406. i=0;
  407.  while(tipus3d(n-1, w, vmin, pmin)<9)// No es pot treure v[i]
  408.  {
  409.      w[i][0]=v[i][0]; // Posar-lo, i ara no incloure v[i+1]
  410.      w[i][1]=v[i][1];
  411.      w[i][2]=v[i][2];
  412.      i++;
  413.      if(i==n)// No se’n pot treure cap!
  414.         {
  415.             vmin[(*pmin)]=n-1;
  416.             (*pmin)++;
  417.             free(long_wmin);
  418.             free(long_vcares);
  419.             return 9;
  420.         }
  421.         for (int i=0;i<4;i++) // Preparat per cridar tipus3d
  422.    {
  423.        vmin[i]=0;
  424.    }
  425.  }
  426. for(j=1;j<(*pmin);j++)// Com que v[i] falta a w, corregir els índexs trobats recursivament
  427. {
  428.    vmin[j]=vmin[j]+1; // vmin s’ha calculat recursivament
  429. }
  430. free(long_wmin);
  431. free(long_vcares);
  432. return 9;
  433. }
  434.  
  435.  
  436. double ProducteEscalar(double u[], double v[], int dim)
  437. {
  438. double PE = 0;
  439. for (int i=0; i<dim; i++)
  440.       {
  441. PE += u[i]*v[i];
  442.   }
  443. return PE;
  444. }
  445.  
  446.  
  447. double Norma(double u[], int dim)
  448. {
  449.    double n = 0;
  450.    for (int i=0; i<dim; i++)
  451.      {
  452.        n += u[i]*u[i];
  453.      }
  454.    return sqrt(n);
  455. }
  456.  
  457.  
  458. int BaseR3(double u[], double v[], double w[], int dim)
  459. {
  460.    //Si hi ha vectors linealment dependents retorna 0, si són linealment independents retorna 1.
  461.  for(int i=0;i+1<dim;i++)
  462. {
  463. if(v[i]/u[i] == v[i+1]/u[i+1])
  464. {
  465.  return 0;
  466. }
  467. if (v[i]/w[i] == v[i+1]/w[i+1])
  468. {
  469.  return 0;
  470. }
  471.  if(u[i]/w[i] == u[i+1]/w[i+1])
  472. {
  473.  return 0;
  474. }
  475. }
  476.    return 1;
  477. }
  478.  
  479.  
  480. double Angle(double u[], double v[], int dim)
  481. {
  482.    return acos(ProducteEscalar(u,v, dim)/(Norma(u, dim)*Norma(v, dim)));
  483. }
  484.  
  485.  
  486. double Determinant(double u[], double v[], double w[])
  487. {
  488.    // El calcularem per la regla de Sarrurs. Només funciona amb tres vectors de R3.
  489.    return u[0]*v[1]*w[2] + u[1]*v[2]*w[0] + u[2]*v[0]*w[1] - u[2]*v[1]*w[0] - u[0]*v[2]*w[1] - u[1]*v[0]*w[2];;
  490. }
  491.  
  492.  
  493. int Perpendiculars(double u[], double v[], int dim)
  494. {
  495.   // Si són perpendiculars retorna 1, si no ho són retorna 0.
  496.   // Com tots els vectors tenen origen en el 0, només cal comprovar que el producte escalar es 0, és a dir, que formen un angle recte.
  497.   if(abs(ProducteEscalar(u, v, dim))<0.0003)//Revisar la tolerància!!
  498.     {
  499.      return 1;
  500.     }
  501.    else
  502.    {
  503.   return 0;
  504.    }
  505. }
  506.  
  507.  
  508. double ModAngle(double u[], double v1[], double v2[], int dim)
  509. {
  510.    // Modificació de la funció angle. Calcula angle amb signe. Els vectors v_1 i v_2 han de ser perpendiculars a u.
  511.    // No comprova si són perpendiculars.
  512.    {
  513.    int signe;
  514.  
  515.     if(Determinant(u, v1, v2)>=0) //Accepta el conveni: si el determinant és 0 té signe positiu.
  516.     {
  517.       signe = 1  ;
  518.     }
  519.     if(Determinant(u, v1, v2)<0)
  520.     {
  521.       signe = -1;
  522.     }
  523.    return (signe*acos(ProducteEscalar(v1,v2, dim)/(Norma(v1, dim)*Norma(v2, dim))));
  524.    }
  525. }
  526.  
  527.  
  528. void ProjeccioOrtogonal(double u[], double v[],double w[], int dim)
  529. {
  530.    // Has de declarar amb anterioritat el vector w i la seva dimensió.
  531.  for(int i=0;i<dim;i++)
  532. {
  533.    w[i]= v[i]-(ProducteEscalar(u,v,dim)/ProducteEscalar(u,u,dim))*u[i] ;
  534. }
  535.  return ;
  536. }
  537.  
  538.  
  539. void ProducteVectorial(double u[], double v[],double w[])
  540. {
  541.     // Has de declarar amb anterioritat el vector w i la seva dimensió.
  542.     // Només funciona amb vectors a R3.
  543.     w[0]= u[1]*v[2]-u[2]*v[1];
  544.     w[1]= u[0]*v[2]-u[2]*v[0];
  545.     w[2]= u[0]*v[1]-u[1]*v[0];
  546.  
  547.    return;
  548. }
  549.  
  550.  
  551. int tipus2d(int n, double v[n][3], double u[], unsigned int vmin[], unsigned int * pmin)
  552. {
  553.    * pmin = 0;
  554.    for (int i=0;i<4;i++) //Buidem el vector
  555.    {
  556.        vmin[i]=0;
  557.    }
  558.    int i,j;
  559.    int dr, esq;
  560.    double angle[n][n];
  561.    double anglemax;
  562.  
  563.      if(n == 0)  //Con zero.
  564.        {
  565.          return 0;
  566.        }
  567.      if(n == 1) //Semirecta.
  568.        {
  569.          vmin[(*pmin)]=0;
  570.          (*pmin)++;
  571.          return 1;
  572.        }
  573.  
  574.    dr = 0;
  575.    esq = 1;
  576.    anglemax = ModAngle(u, v[dr], v[esq], 3);
  577.    for(i=0;i<n;i++)
  578.    {
  579.        for(j=0;j<n;j++) //Troba anglemax.
  580.        {
  581.            angle[i][j] = ModAngle(u, v[i], v[j], 3);
  582.            if(angle[i][j]>anglemax)
  583.            {
  584.                dr = i;
  585.                esq = j;
  586.                anglemax = angle[dr][esq];
  587.            }
  588.        }
  589.    }
  590.    if(anglemax==0) //És semirecta.
  591.    {
  592.       vmin[(*pmin)] = 0;
  593.       (*pmin)++;
  594.       return 1;
  595.    }
  596.    if(anglemax < M_PI) //És un angle pla o un pla.
  597.    {
  598.        for(i=0;i<n;i++)
  599.        {
  600.            if(angle[dr][i]<0)
  601.            {  vmin[(*pmin)]=dr;
  602.               (*pmin)++;
  603.               vmin[*pmin]=esq;
  604.               (*pmin)++;
  605.               vmin[(*pmin)]=i;
  606.              (*pmin)++;
  607.               return 5; //És un pla.
  608.            }
  609.  
  610.        }
  611.                //Si hem arribat aquí és un angle pla.
  612.    vmin[(*pmin)]=dr;
  613.    (*pmin)++;
  614.    vmin[(*pmin)]=esq;
  615.    (*pmin)++;
  616.    return 3;
  617.    }
  618.    // Trobar si es una recta.
  619.    for(i=0;i<n; i++)
  620.    {
  621.        if(angle[dr][i]<0)
  622.        {
  623.               vmin[(*pmin)]=dr;
  624.               (*pmin)++;
  625.               vmin[(*pmin)]=esq;
  626.               (*pmin)++;
  627.               vmin[(*pmin)]=i;
  628.               (*pmin)++;
  629.               return 5; //És un pla.
  630.        }
  631.    }
  632.    for(i=0;i<n;i++)
  633.    {
  634.        if(abs(angle[dr][i])>0.000001 && abs(angle[dr][i]-M_PI)>0.000001)//És un semipla
  635.        {
  636.               vmin[(*pmin)]=dr;
  637.               (*pmin)++;
  638.               vmin[(*pmin)]=esq;
  639.               (*pmin)++;
  640.               vmin[(*pmin)]=i;
  641.               (*pmin)++;
  642.  
  643.               return 4;
  644.        }
  645.    }
  646.    //Si hem arribat aquí és una recta.
  647.    vmin[(*pmin)]=dr;
  648.    (*pmin)++;
  649.    vmin[(*pmin)]=esq;
  650.    (*pmin)++;
  651.    return 2;
  652. }
  653. int projectacon(int n, double u[], double v[n][3], double proj[][3])
  654. {
  655.   int i,j=0;
  656.   double w[n][3];
  657.   int b = n; //Nombre d'enters amb projecció no nul·la
  658.   for(i=0;i<n;i++)
  659.     {
  660.         ProjeccioOrtogonal(u,v[i],w[i],3);
  661.     }
  662.    for(i=0;i<n;i++)
  663.     {
  664.         if(v[i][0]/u[0]==v[i][1]/u[1] && v[i][0]/u[0]==v[i][2]/u[2] && v[i][1]/u[1]==v[i][2]/u[2])
  665.         {
  666.             w[i][0]=0;
  667.             w[i][1]=0;
  668.             w[i][2]=0;
  669.         }
  670.     }
  671.     for(i=0;i<n;i++)
  672.     {
  673.         if(w[i][0]==0 && w[i][1]==0 && w[i][2]==0)
  674.         {
  675.             b -= 1;
  676.         }
  677.     }
  678.     for(i=0;i<n;i++)
  679.     {
  680.         if(w[i][0]==0 && w[i][1]==0 && w[i][2]==0)
  681.         {
  682.             j++;
  683.         }
  684.         else
  685.         {
  686.             proj[i-j][0] = w[0][i];
  687.             proj[i-j][1] = w[1][i];
  688.             proj[i-j][2] = w[2][i];
  689.         }
  690.     }
  691. return b;
  692. }
  693.  
  694.  
  695.  
  696.  
  697.  


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Process returned -1073741819
« Respuesta #1 en: 31 Mayo 2020, 15:47 pm »

Lo que veo a simple vista es que el array vmin tiene una longitud de n que no sé cuánto será puesto que depende del fichero pero en la función tipus3d() le asignas 100 veces el valor 0 a vmin[100].

Mira a ver si corrigiendo eso, el error se arregla. No he mirado mucho más puesto que el código es muy grande y hay que decir que la identación no ayuda mucho a identificar los bloques de código. :rolleyes:

Suerte. :-X

PD: Para pasar un puntero a una función, en vez de usar &(*p), puedes usar directamente p. Los operadores & y * se anulan al final.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
cyelph

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Process returned -1073741819
« Respuesta #2 en: 31 Mayo 2020, 16:01 pm »

¡Cierto! Lo que quería era vaciar el vector. Muchas gracias, aunque lo he cambiado y el resultado me sigue dando lo mismo...
El código es bastante largo y como es la primera vez que hago un programa tan complejo no me he podido organizar muy bien... :-[
Gracias por ayudar.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Process returned -1073741819
« Respuesta #3 en: 31 Mayo 2020, 16:13 pm »

Otras cosa que veo es en la línea 241, con ese n-1 estás dejando la última posición sin "limpiar".
Seguramente tengas algún problema en la llamada recursiva de tipus3d() (línea 407).

Lo mejor que puedes hacer es usar algún depurador o hacerlo a la vieja ausanza con unos printf() por ahí para ver cómo van cambiando las variables.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
cyelph

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Process returned -1073741819
« Respuesta #4 en: 31 Mayo 2020, 16:23 pm »

Si, me he confundido ahí. Lo de los printf() me ha ayudado un montón y los depuradores no sé usarlos muy bien... Seguramente haya algún problema en el momento en el que vuelvo a llamar tipus3d() pero el programa solo tiene que llegar ahí si los vectores del fichero forman todo el espacio R3 y necesito saber qué vectores lo forman. Por eso cuando me dan vectores que forman poliedros no debería llegar hasta aquí...
Bueno seguiré probando, muchas gracias por todos los consejos. De verdad me dan un poco de esperanza :).
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Terminate Process XP
Programación Visual Basic
Ch3ck 2 1,540 Último mensaje 17 Febrero 2006, 01:58 am
por Ch3ck
Process Hacker 2.6: Analiza los procesos en ejecución del sistema con Process...
Software
wolfbcn 1 2,368 Último mensaje 1 Octubre 2010, 15:46 pm
por Novlucker
Process returned 0
Programación C/C++
m@o_614 6 3,283 Último mensaje 21 Enero 2014, 04:06 am
por m@o_614
id returned 1 exit status
Programación C/C++
Ream22Alvarado 3 5,046 Último mensaje 5 Junio 2015, 14:42 pm
por rir3760
ERROR en C process returned -10737441819
Programación C/C++
matiri90 6 3,906 Último mensaje 14 Abril 2016, 16:19 pm
por matiri90
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines