Computer Science Canada

Need help regarding a program

Author:  A.J [ Fri Feb 22, 2008 1:19 pm ]
Post subject:  Need help regarding a program

I am new to C++, so I needed help regarding why this program always crashes:
code:

#include <iostream>
#include <cmath>
using namespace std;
int sd(int x)
{
    int c=1;
    for (int k=1;k<=floor(sqrt(x));k++)
    {
        if (x % k==0)c++;
    }
    return c;
}
int main()
{
        clock_t starttime=clock();
    double count=0;
    int a[9999999];
    for (int i=1;i<=9999999;i++)
    {
        a[i]=sd(i);
    }
    for (int j=1;j<=9999998;j++)
    {
        if (a[j]==a[j+1])count++;
    }
        clock_t endtime=clock();
        double elapsedtime=(double)(endtime-starttime)/CLOCKS_PER_SEC;
        cout<<elapsedtime<<" second(s)."<<endl;
    cout<<count<<endl;
        return 0;
}

Author:  Saad [ Fri Feb 22, 2008 1:54 pm ]
Post subject:  RE:Need help regarding a program

Woah there,
code:
int a[9999999];
is a really huge array. The array a is a local variable to the main function and as a result, when memory needs to be allocated for a local variable it is taken off the stack. There isn't enough stack space to assign all that memory.

However if you made a global, the memory are assigned before the program starts and don't use the stack.

Author:  wtd [ Fri Feb 22, 2008 2:03 pm ]
Post subject:  RE:Need help regarding a program

Or just dynamically allocate it.

Author:  A.J [ Fri Feb 22, 2008 2:21 pm ]
Post subject:  Re: Need help regarding a program

and how do i do that?

Author:  Tony [ Fri Feb 22, 2008 2:31 pm ]
Post subject:  RE:Need help regarding a program

malloc

Author:  Saad [ Fri Feb 22, 2008 2:37 pm ]
Post subject:  Re: RE:Need help regarding a program

Tony @ Fri Feb 22, 2008 2:31 pm wrote:
malloc


Err, for C++ you should use new and delete

Author:  wtd [ Fri Feb 22, 2008 2:48 pm ]
Post subject:  RE:Need help regarding a program

Additional note, use a constant for 9999999, instead of magic numbers.

Author:  OneOffDriveByPoster [ Fri Feb 22, 2008 4:34 pm ]
Post subject:  Re: Need help regarding a program

A.J @ Fri Feb 22, 2008 1:19 pm wrote:
code:
    int a[9999999];
    for (int i=1;i<=9999999;i++)
    {
        a[i]=sd(i);
    }
Array indices start at 0. You are indexing out-of-bounds. Also, please #include <ctime>.

Author:  A.J [ Fri Feb 22, 2008 9:13 pm ]
Post subject:  Re: Need help regarding a program

thx for your help guys!!!
sooooo..................... can you help me with this program?
code:

#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;

unsigned long long factorial[100];
long choose(unsigned long long x,unsigned long long y,unsigned long long factorial[10])
{
    if (y=0 or x==y)
    {
        return 1;
    }
    else
    {
        int m=max(x,y);
        return factorial[x]/((factorial[y])*(factorial[x-y]));
    }
}
int main()
{
    int count=0;
    factorial[1]=1;
    for (unsigned long long i=2;i<=100;i++)
    {
        factorial[i]=factorial[i-1]*i;
    }
    for (unsigned long long j=1;j<=100;j++)
    {
        for (unsigned long long k=1;k<=j/2;k++)
        {
            if (choose(j,k,factorial)>1000000)count++;
        }
    }
    cout<<count;
        return 0;
}

Author:  OneOffDriveByPoster [ Fri Feb 22, 2008 9:23 pm ]
Post subject:  Re: Need help regarding a program

A.J @ Fri Feb 22, 2008 9:13 pm wrote:
code:
...
unsigned long long factorial[100];
...
    for (unsigned long long i=2;i<=100;i++)
    {
        factorial[i]=factorial[i-1]*i;
    }
...
Same mistakes still. Some comments or description of what you are doing may help (considering the fact that the people who are trying to help you may be almost asleep). What problem are you having? Crash?--if so, fix your array indices.

Author:  A.J [ Sat Feb 23, 2008 12:51 am ]
Post subject:  Re: Need help regarding a program

well, this was #53 on project euler.
it doesn't matter, I finished it in turing (using pascal's triangle)
thanks for helping


: