<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>'C Program crashes after compiling without error' Thread RSS Feed</title>
    <link>http://www.programmersheaven.com/</link>
    <description>Contains the latest posts from the thread 'C Program crashes after compiling without error' posted on the 'C and C++' forum at Programmer's Heaven.</description>
    <language>en</language>
    <copyright>Copyright 2013 Programmers Heaven</copyright>
    <pubDate>Sat, 18 May 2013 16:15:41 -0700</pubDate>
    <lastBuildDate>Sat, 18 May 2013 16:15:41 -0700</lastBuildDate>
    <generator>Argotic Syndication Framework 2007.3.0.1, http://www.codeplex.com/Argotic</generator>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <ttl>360</ttl>
    <image>
      <url>http://www.programmersheaven.com/images/ph.gif</url>
      <title>Programmers Heaven</title>
      <link>http://www.programmersheaven.com/</link>
      <width>88</width>
      <height>31</height>
    </image>
    <item>
      <title>C Program crashes after compiling without error</title>
      <link>http://www.programmersheaven.com/mb/CandCPP/430642/430642/c-program-crashes-after-compiling-without-error/</link>
      <description>Hello there.&lt;br /&gt;
&lt;br /&gt;
I'm heaving trouble with a C Program that I'm writing to simulate a Multi-Layer Neural Network. It compiles without any issues, but when I run it, it crashes instantanously. I would be very thankful if anyone could give me a hint. The code is below:&lt;br /&gt;
&lt;br /&gt;
/* Multi layer network to classification of data */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
#define MAX_SIZE 1000&lt;br /&gt;
#define LRATE 1e-5&lt;br /&gt;
#define ERR_LIMIT 1e-3&lt;br /&gt;
#define MAX_TIME 55&lt;br /&gt;
&lt;br /&gt;
#define INPUTS 2&lt;br /&gt;
#define NEURONSLAYER1 4&lt;br /&gt;
#define NEURONSLAYER2 3&lt;br /&gt;
#define NEURONSLAYER3 1&lt;br /&gt;
&lt;br /&gt;
#define sqr(x) ((x) * (x))&lt;br /&gt;
&lt;br /&gt;
float max1,max2;&lt;br /&gt;
    &lt;br /&gt;
void mapping1(float in[][INPUTS+1], int n) {&lt;br /&gt;
      &lt;br /&gt;
      int i, j;&lt;br /&gt;
      &lt;br /&gt;
      if(in[0][1]&amp;lt;0) max1 = (in[0][1])*(-1.0);&lt;br /&gt;
      else max1=in[0][1];&lt;br /&gt;
       &lt;br /&gt;
      printf("%f\n", max1);&lt;br /&gt;
      &lt;br /&gt;
      for(i=1;i&amp;lt;n-1;i++) &lt;br /&gt;
      { &lt;br /&gt;
          if(in[i][1]&amp;gt;max1 &amp;amp;&amp;amp; in[i][1] &amp;lt; 0)max1 = in[i][1]*(-1.0);&lt;br /&gt;
          if(in[i][1]&amp;gt;max1 &amp;amp;&amp;amp; in[i][1] &amp;gt;= 0)max1 = in[i][1];&lt;br /&gt;
      }  &lt;br /&gt;
      &lt;br /&gt;
      printf("%f\n", max1);&lt;br /&gt;
      &lt;br /&gt;
      for(j=0;j&amp;lt;n-1;j++) &lt;br /&gt;
      { &lt;br /&gt;
      in[j][1] = in[j][1]/max1;&lt;br /&gt;
      } &lt;br /&gt;
      &lt;br /&gt;
      return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void mapping2(float in[][INPUTS+1], int n) {&lt;br /&gt;
      &lt;br /&gt;
      int i, j;&lt;br /&gt;
      &lt;br /&gt;
      if(in[0][2]&amp;lt;0) max2 = in[0][2]*(-1.0);&lt;br /&gt;
      else max2=in[0][2];&lt;br /&gt;
       &lt;br /&gt;
      printf("%f\n", max2);&lt;br /&gt;
      &lt;br /&gt;
      for(i=1;i&amp;lt;n-1;i++) &lt;br /&gt;
      { &lt;br /&gt;
          if(in[i][2]&amp;gt;max2 &amp;amp;&amp;amp; in[i][2] &amp;lt; 0)max2 = in[i][2]*(-1.0);&lt;br /&gt;
          if(in[i][2]&amp;gt;max2 &amp;amp;&amp;amp; in[i][2] &amp;gt;= 0)max2 = in[i][2];&lt;br /&gt;
      }  &lt;br /&gt;
      &lt;br /&gt;
      printf("%f\n", max2);&lt;br /&gt;
      &lt;br /&gt;
      for(j=0;j&amp;lt;n-1;j++) &lt;br /&gt;
      { &lt;br /&gt;
      in[j][2] = in[j][2]/max2;&lt;br /&gt;
      } &lt;br /&gt;
      &lt;br /&gt;
      return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (){&lt;br /&gt;
    &lt;br /&gt;
    //Network parameters&lt;br /&gt;
    float Input[MAX_SIZE][INPUTS +1];&lt;br /&gt;
    float HLayer1In[NEURONSLAYER1 +1];&lt;br /&gt;
    float HLayer1Out[NEURONSLAYER1 +1];&lt;br /&gt;
    float HLayer2In[NEURONSLAYER2 +1];&lt;br /&gt;
    float HLayer2Out[NEURONSLAYER2 +1];&lt;br /&gt;
    float OLayerIn[NEURONSLAYER3 +1];&lt;br /&gt;
    float OLayerOut[NEURONSLAYER3 +1];&lt;br /&gt;
    float WeightsH1In[NEURONSLAYER1 +1][INPUTS +1];&lt;br /&gt;
    float WeightsH2H1[NEURONSLAYER2 +1][NEURONSLAYER1 +1];&lt;br /&gt;
    float WeightsOH2[NEURONSLAYER3 +1][NEURONSLAYER2 +1];&lt;br /&gt;
    float BiasO;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    //Training Parameters&lt;br /&gt;
    float lin_error = 0, error_sum = 0, avg_error = 0;&lt;br /&gt;
    float DevOutH1[NEURONSLAYER1 +1];&lt;br /&gt;
    float DevOutH2[NEURONSLAYER2 +1];&lt;br /&gt;
    float DevOutO[NEURONSLAYER3 +1];&lt;br /&gt;
    int ExpectedOut[MAX_SIZE];&lt;br /&gt;
    float deltaOut = 0;&lt;br /&gt;
    float deltaLayer2[NEURONSLAYER2 +1];&lt;br /&gt;
    float deltaLayer1[NEURONSLAYER1 +1];&lt;br /&gt;
    float sumLayer1[NEURONSLAYER1 +1];&lt;br /&gt;
    &lt;br /&gt;
    int i; // Index for Inputs &lt;br /&gt;
    int j; // Index for Hidden 1&lt;br /&gt;
    int k; // Index for Hidden 2&lt;br /&gt;
    int m; // Index for Output&lt;br /&gt;
    int n,l; // Index for test values&lt;br /&gt;
    &lt;br /&gt;
    int flag = 0; // Indicates when the training is over&lt;br /&gt;
    int read; // Loop variable&lt;br /&gt;
    &lt;br /&gt;
    float c, d; //Store the maximum values for normalization&lt;br /&gt;
    &lt;br /&gt;
    time_t start = time(NULL); // Timer variable&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
    srand((unsigned)time(NULL));&lt;br /&gt;
    &lt;br /&gt;
    // Initialize weights&lt;br /&gt;
    &lt;br /&gt;
    for(i=1;i&amp;lt;INPUTS+1;i++)&lt;br /&gt;
    {&lt;br /&gt;
      for(j=0;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
      {&lt;br /&gt;
        WeightsH1In[j][i] = (rand()%10)*pow(10,-(rand()%5));&lt;br /&gt;
      }&lt;br /&gt;
    } &lt;br /&gt;
    &lt;br /&gt;
    for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
    {&lt;br /&gt;
      for(k=0;k&amp;lt;NEURONSLAYER2+1;k++)&lt;br /&gt;
      {&lt;br /&gt;
        WeightsH2H1[k][j] = (rand()%10)*pow(10,-(rand()%5));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    for(k=1;k&amp;lt;NEURONSLAYER2+1;k++)&lt;br /&gt;
    {&lt;br /&gt;
      for(m=0;k&amp;lt;NEURONSLAYER3+1;m++)&lt;br /&gt;
      {&lt;br /&gt;
        WeightsOH2[m][k] = (rand()%10)*pow(10,-(rand()%5));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    BiasO = (rand()%10)*pow(10,-(rand()%5));&lt;br /&gt;
    &lt;br /&gt;
    n = 0;&lt;br /&gt;
    l = 0;&lt;br /&gt;
    j = 0;&lt;br /&gt;
    k = 0;&lt;br /&gt;
    m = 0;&lt;br /&gt;
    i = 0;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    do{&lt;br /&gt;
       &lt;br /&gt;
       if(flag == 1)&lt;br /&gt;
       {&lt;br /&gt;
           &lt;br /&gt;
           read = scanf("%f, %f", &amp;amp;Input[n][1], &amp;amp;Input[n][2]);&lt;br /&gt;
           if(read == EOF) return 0;&lt;br /&gt;
           //Calculate the Outputs of Neurons in the first Layer and also their derivatives&lt;br /&gt;
           &lt;br /&gt;
           Input[n][1] = Input[n][1]/c;&lt;br /&gt;
           Input[n][2] = Input[n][2]/d;&lt;br /&gt;
           &lt;br /&gt;
           for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
           {&lt;br /&gt;
             HLayer1In[j] = WeightsH1In[0][j];&lt;br /&gt;
             for(i=1;i&amp;lt;INPUTS+1;i++)&lt;br /&gt;
             {&lt;br /&gt;
               HLayer1In[j] += Input[l][i]*WeightsH1In[j][i];&lt;br /&gt;
             }&lt;br /&gt;
             HLayer1Out[j] = tanh(HLayer1In[j]);&lt;br /&gt;
           }&lt;br /&gt;
           //Calculate the Outputs of Neurons in the second Layer and also their derivatives&lt;br /&gt;
           for(k=1;k&amp;lt;NEURONSLAYER2+k;j++)&lt;br /&gt;
           {&lt;br /&gt;
             HLayer2In[k] = WeightsH2H1[0][k];&lt;br /&gt;
             for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
             {&lt;br /&gt;
               HLayer2In[k] += HLayer1Out[j]*WeightsH2H1[k][j];&lt;br /&gt;
             }&lt;br /&gt;
             HLayer2Out[k] = tanh(HLayer2In[k]);&lt;br /&gt;
           }&lt;br /&gt;
           //Calculate the Outputs of Neurons in the output Layer and also their derivatives&lt;br /&gt;
           for(m=1;m&amp;lt;NEURONSLAYER3+1;m++)&lt;br /&gt;
           {&lt;br /&gt;
             OLayerIn[m] = BiasO;&lt;br /&gt;
             for(k=1;k&amp;lt;NEURONSLAYER2+1;k++)&lt;br /&gt;
             {&lt;br /&gt;
               OLayerIn[m] += HLayer2Out[k]*WeightsOH2[m][k];&lt;br /&gt;
             }&lt;br /&gt;
             OLayerOut[m] = tanh(OLayerIn[m]);&lt;br /&gt;
           }&lt;br /&gt;
           n++;&lt;br /&gt;
           if(OLayerOut[m-1] &amp;gt; 0) printf("+1\n");&lt;br /&gt;
           if(OLayerOut[m-1] &amp;lt;= 0) printf("-1\n"); &lt;br /&gt;
       }&lt;br /&gt;
       &lt;br /&gt;
       //Training Routine&lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         //Read Training  &lt;br /&gt;
         read = scanf("%f,%f,%d", &amp;amp;Input[n][1], &amp;amp;Input[n][2], &amp;amp;ExpectedOut[n]);&lt;br /&gt;
         n++;&lt;br /&gt;
         //Check condition for initialization of training&lt;br /&gt;
         if(Input[n-1][1] == 0 &amp;amp;&amp;amp; Input[n-1][2] == 0 &amp;amp;&amp;amp; ExpectedOut[n-1] == 0)&lt;br /&gt;
         {&lt;br /&gt;
           &lt;br /&gt;
          mapping1(Input,n);&lt;br /&gt;
           c = max1;&lt;br /&gt;
          mapping2(Input,n);&lt;br /&gt;
           d = max2;&lt;br /&gt;
            &lt;br /&gt;
           //Begin Training&lt;br /&gt;
           do{&lt;br /&gt;
               //If the program takes too long, break &lt;br /&gt;
               if((time(NULL) - start) &amp;gt; MAX_TIME) &lt;br /&gt;
                {&lt;br /&gt;
                  flag = 1;&lt;br /&gt;
                  break;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                //If the set is over but the training isn't, restart&lt;br /&gt;
                if(l == (n-1)) &lt;br /&gt;
                {&lt;br /&gt;
                  l=0; &lt;br /&gt;
                  error_sum = 0;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                //Initiates over the training set&lt;br /&gt;
                for(l=0;l&amp;lt;n-1;l++)&lt;br /&gt;
                {&lt;br /&gt;
                   for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
                   {&lt;br /&gt;
                     sumLayer1[j] = 0;&lt;br /&gt;
                   }                  &lt;br /&gt;
                   //Calculate the Outputs of Neurons in the first Layer and also their derivatives&lt;br /&gt;
                   for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
                   {&lt;br /&gt;
                     HLayer1In[j] = WeightsH1In[0][j];&lt;br /&gt;
                     for(i=1;i&amp;lt;INPUTS+1;i++)&lt;br /&gt;
                     {&lt;br /&gt;
                       HLayer1In[j] += Input[l][i]*WeightsH1In[j][i];&lt;br /&gt;
                     }&lt;br /&gt;
                     HLayer1Out[j] = tanh(HLayer1In[j]);&lt;br /&gt;
                     DevOutH1[j] = 1.0/(sqr(cosh(HLayer1In[j])));&lt;br /&gt;
                   }&lt;br /&gt;
                   //Calculate the Outputs of Neurons in the second Layer and also their derivatives&lt;br /&gt;
                   for(k=1;k&amp;lt;NEURONSLAYER2+k;j++)&lt;br /&gt;
                   {&lt;br /&gt;
                     HLayer2In[k] = WeightsH2H1[0][k];&lt;br /&gt;
                     for(j=1;j&amp;lt;NEURONSLAYER1+1;j++)&lt;br /&gt;
                     {&lt;br /&gt;
                       HLayer2In[k] += HLayer1Out[j]*WeightsH2H1[k][j];&lt;br /&gt;
                     }&lt;br /&gt;
                     HLayer2Out[k] = tanh(HLayer2In[k]);&lt;br /&gt;
                     DevOutH2[k] = 1.0/(sqr(cosh(HLayer2In[k])));&lt;br /&gt;
                   }&lt;br /&gt;
                   //Calculate the Outputs of Neurons in the output Layer and also their derivatives&lt;br /&gt;
                   for(m=1;m&amp;lt;NEURONSLAYER3+1;m++)&lt;br /&gt;
                   {&lt;br /&gt;
                     OLayerIn[m] = BiasO;&lt;br /&gt;
                     for(k=1;k&amp;lt;NEURONSLAYER2+1;k++)&lt;br /&gt;
                     {&lt;br /&gt;
                       OLayerIn[m] += HLayer2Out[k]*WeightsOH2[m][k];&lt;br /&gt;
                     }&lt;br /&gt;
                     OLayerOut[m] = tanh(OLayerIn[m]);&lt;br /&gt;
                     DevOutO[m] = 1.0/(sqr(cosh(OLayerIn[m])));&lt;br /&gt;
                   }&lt;br /&gt;
                   //Calculate error&lt;br /&gt;
                   lin_error = ExpectedOut[n] - OLayerOut[m];&lt;br /&gt;
                   error_sum += sqr(lin_error);&lt;br /&gt;
                   deltaOut = lin_error*DevOutO[m];&lt;br /&gt;
                   //Propagate error&lt;br /&gt;
                   for(m=1;m&amp;lt;NEURONSLAYER3 +1;m++)&lt;br /&gt;
                   {&lt;br /&gt;
                     for(k=1;k&amp;lt;NEURONSLAYER2 +1;k++)&lt;br /&gt;
                     {&lt;br /&gt;
                       deltaLayer2[k] = WeightsOH2[m][k]*deltaOut*DevOutH2[k];&lt;br /&gt;
                     }&lt;br /&gt;
                   }&lt;br /&gt;
                   //-----------------------------------------------------------&lt;br /&gt;
                   for(j=1;j&amp;lt;NEURONSLAYER1 +1;j++)&lt;br /&gt;
                   {&lt;br /&gt;
                     for(k=1;k&amp;lt;NEURONSLAYER2 +1;k++)&lt;br /&gt;
                     {&lt;br /&gt;
                       sumLayer1[j]+=WeightsH2H1[k][j]*deltaLayer2[k];&lt;br /&gt;
                     }&lt;br /&gt;
                   }&lt;br /&gt;
                   for(j=1;j&amp;lt;NEURONSLAYER1 +j;k++)&lt;br /&gt;
                     {&lt;br /&gt;
                       deltaLayer1[j]=sumLayer1[j]*DevOutH1[j];&lt;br /&gt;
                     }&lt;br /&gt;
                   //Update weights &lt;br /&gt;
                   //---Output Layer&lt;br /&gt;
                   BiasO += 2.0*LRATE*deltaOut;&lt;br /&gt;
                   for(m=1;m&amp;lt;NEURONSLAYER3 +1;m++)&lt;br /&gt;
                   {&lt;br /&gt;
                     for(k=1;k&amp;lt;NEURONSLAYER2 +1;k++)&lt;br /&gt;
                     {&lt;br /&gt;
                       WeightsOH2[m][k] += LRATE*deltaOut*HLayer2Out[k]; &lt;br /&gt;
                     }&lt;br /&gt;
                   }&lt;br /&gt;
                   //---Hidden Layer 2&lt;br /&gt;
                   for(k=1;k&amp;lt;NEURONSLAYER2 +1;k++)&lt;br /&gt;
                   {&lt;br /&gt;
                     WeightsH2H1[0][k] += LRATE*deltaLayer2[k];&lt;br /&gt;
                     for(j=1;j&amp;lt;NEURONSLAYER1 +1;j++)&lt;br /&gt;
                     {&lt;br /&gt;
                       WeightsH2H1[k][j] += LRATE*deltaLayer2[k]*HLayer1Out[j]; &lt;br /&gt;
                     }&lt;br /&gt;
                   } &lt;br /&gt;
                   //---Hidden Layer 1&lt;br /&gt;
                   for(j=1;j&amp;lt;NEURONSLAYER1 +1;j++)&lt;br /&gt;
                   {&lt;br /&gt;
                     WeightsH1In[0][j] += LRATE*deltaLayer1[j];&lt;br /&gt;
                     for(i=1;i&amp;lt;INPUTS +1;i++)&lt;br /&gt;
                     {&lt;br /&gt;
                       WeightsH1In[j][i] += LRATE*deltaLayer1[j]*HLayer1Out[i]; &lt;br /&gt;
                     }&lt;br /&gt;
                   }&lt;br /&gt;
             }   &lt;br /&gt;
             avg_error = error_sum/l;                                  &lt;br /&gt;
           }while(avg_error &amp;gt; ERR_LIMIT );&lt;br /&gt;
           flag = 1;&lt;br /&gt;
        }&lt;br /&gt;
      }     &lt;br /&gt;
   }while(read != EOF);&lt;br /&gt;
    &lt;br /&gt;
    return 0;       &lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;</description>
      <guid isPermaLink="true">http://www.programmersheaven.com/mb/CandCPP/430642/430642/c-program-crashes-after-compiling-without-error/</guid>
      <pubDate>Sat, 15 Dec 2012 16:04:53 -0700</pubDate>
      <category>C and C++</category>
    </item>
    <item>
      <title>Re: C Program crashes after compiling without error</title>
      <link>http://www.programmersheaven.com/mb/CandCPP/430642/430706/re-c-program-crashes-after-compiling-without-error/#430706</link>
      <description>I have no good debugger for this so I replaced some of your&lt;br /&gt;
// comment....&lt;br /&gt;
with printf("comment....\n");&lt;br /&gt;
 and got this:&lt;br /&gt;
&lt;br /&gt;
Timer variable&lt;br /&gt;
Initialize weights&lt;br /&gt;
&lt;br /&gt;
before the crash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Have you tested any of the neural net programs by karsten Kutza?&lt;br /&gt;
They are in C and works well with my compiler (Borland 5.5)&lt;br /&gt;</description>
      <guid isPermaLink="true">http://www.programmersheaven.com/mb/CandCPP/430642/430706/re-c-program-crashes-after-compiling-without-error/#430706</guid>
      <pubDate>Wed, 19 Dec 2012 11:17:56 -0700</pubDate>
      <category>C and C++</category>
    </item>
    <item>
      <title>Re: C Program crashes after compiling without error</title>
      <link>http://www.programmersheaven.com/mb/CandCPP/430642/430861/re-c-program-crashes-after-compiling-without-error/#430861</link>
      <description>thanks it works&lt;br /&gt;</description>
      <guid isPermaLink="true">http://www.programmersheaven.com/mb/CandCPP/430642/430861/re-c-program-crashes-after-compiling-without-error/#430861</guid>
      <pubDate>Fri, 11 Jan 2013 02:00:58 -0700</pubDate>
      <category>C and C++</category>
    </item>
  </channel>
</rss>