Start New Discussion within our Software Development Community

G'Day guys,

Being working on some code, and was just wondering if there are any obvious places i have gone wrong. I am trying to make 2 functions, 1 that will find the factors of a given number, and the other function to find the percentage of the even factors.
E.g. 12: factors = 1,2,3,4,6,12 even factors = 2,4,6,12
so the percentage of even factors is = (4/6)*100
any help is always appreciated.

to find the factors:

int factors (int number)
{
    for(int i=1; i<=number; i++)
      {
         if(number%i==0) 
         {
            if (i%2==0) 
            {
              return i;
            }
         }
      }
}

and.. to find the percentage of even factors

int percentageOfEvenFactors (int number)
{
    int percentage=0;
    int allFactors;
    int evenFactors=0;
    for (int i=1; i<=number; i++)
    {
        if (number%i==0)
        {
           i=allFactors;
                        
          if(i%2==0)
          {
            evenFactors++;
          }
          percentage=(allFactors/evenFactors)*100;
        }
    }
    cout<<percentage<<endl;
}

Cheers.

My mind is a little bit rusty, so I can't think what this line should be, but I know that it should not be this:

i=allFactors;

You're assigning i some random crap that's contained in allFactors , because you never initalized it. Perhaps you want

allFactors++;

?
But you'll still have to initalize allFactors with 0 or something.

Another interesting problem:

int percentageOfEvenFactors (int number)
{
    int evenFactors=0;

And then...

percentage=(allFactors/evenFactors)*100;

NO NO NO! You're dividing by zero, which will cause the program to crash!

I think you got it backwards (don't you want evenFactors/allFactors?). And the percentage should only be calculated after the for() loop, not in it. That will prevent division from 0.

Hope this helps

This article has been dead for over six months. Start a new discussion instead.