Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please help me I tryed over and over again and I can\'t get it to work HELP plea

ID: 3627505 • Letter: P

Question

Please help me I tryed over and over again and I can't get it to work HELP please.

Write a program that generates all the factors of a number entered by the user. For instance, the number 12 has the factors 2 * 2 * 3. This program has the following requirements:

A. The user must enter a positive integer. If the user enters something else, your program should output an error message and let the user enter a new value. Use a do/while loop to make sure the user input is successful.

B. The factors must be output in increasing order. The lowest factor your program should report is 2.

C. Your program should output 4 factors per line, each factor in a field of 10 characters. (Hint: the number of factors output determines when to output endl!)

D. You will need a while loop to report the factors. Here are some helpful hints:


1. If (a % b == 0) then a is a factor of b.

2. When you have found a factor, output the factor and then reduce the number you are working with by dividing the number by the factor… ie) b = b / a;

Explanation / Answer

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void get_number( int &number )
{
    number = -1;

    while ( number < 0 )
    {
        cout << "Enter a positive number : " << endl;
        cin >> number;

        if ( number < 0 )
            continue;
        else
            break;
    }   
}

void find_factors ( int number, vector<int> &factors )
{
    if ( 0 == number || 1 == number )
    {
        factors.push_back(number);
    }
    else
    {
        int tempFactor = 2;
        while ( tempFactor <= number )
        {
            if ( number % tempFactor == 0 )
            {   //Factor found. Now find factors of remaining number.
                factors.push_back(tempFactor);
                find_factors( number/tempFactor, factors );
                break;
            }
            else
            {
                tempFactor++;   //Try with the next number
            }
        } //End of while
    } // end of outer else
}

void print_factors( vector<int> &factors )
{
    vector<int>::iterator begin = factors.begin();
    vector<int>::iterator end = factors.end();
    int numberCount = 0;

    sort( begin, end );

    cout << "Factors are :: " << endl;
    while( begin != end )
    {
        cout << *begin++ << " ";
        numberCount++;

        if ( 4 == numberCount )
        {
            cout << endl;
            numberCount = 0;
        }
    } // end of while
}

int main()
{
    int number = 0,
        factor = 0;
    vector<int> factors;

    get_number( number );

    find_factors( number, factors);

    print_factors( factors );

    return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote