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

I am having trouble with this problem. It keeps giving me the wrong outputs. Ple

ID: 3912559 • Letter: I

Question

I am having trouble with this problem. It keeps giving me the wrong outputs. Please help!

Define a class counterType to implement a counter. Your class must have a private data member counter of type int. Define a constructor that accepts a parameter of type int and initializes the counter data member. Add functions to:

Set counter to the integer value specified by the user

Initialize counter to 0

Return the value of counter with a function named getCounter

Increment and decrement counter by one.

Print the value of counter using the print function

The value of counter must be nonnegative.

My code:

counterType.h

class counterType
{
private:
   int counter;
public:
   counterType();
   counterType(int counter);
   void print();
   void incrementCounter();
   void decrementCounter();
   void setCounter(int c);
   int getCounter();
};

counterTypeImp.cpp


#include <iostream>
#include "counterType.h"
using namespace std;

counterType::counterType(int counter)
{
    setCounter(counter);
}

counterType::counterType()
{
    counter = 0;
}

void counterType::setCounter(int c)
{
    cout << "Enter a positive number: " << endl;
    cin >> c;
    if (c > 0)
    {
        c = counter;
    }
    else
    {
        cout << "Please enter a positive number" << endl;
    }
}

int counterType::getCounter()
{
      return counter;
}

void counterType::incrementCounter()
{
    counter++;
}

void counterType::decrementCounter()
{
    counter--;
}

void counterType::print()
{
    cout << counter << endl;
}


main.cpp (PROVIDED BY PROFESSOR)

//Main program

#include <iostream>
#include "counterType.h"

using namespace std;

int main()
{
    counterType counter1;
    counterType counter2(5);

    counter1.print();

    cout << endl;

    counter1.incrementCounter();
    cout << "After Increment counter1: " << counter1.getCounter() << endl;

    cout << "Counter2 = " << counter2.getCounter() << endl;

    counter2.decrementCounter();
    cout << "After decrement counter2 = " << counter2.getCounter() << endl;

    counter1.setCounter(-6);
    cout << "After resetting counter1: " << counter1.getCounter() << endl;

    return 0;
}

The results I keep getting:

Enter a positive number:
5
0

After Increment counter1: 1
Counter2 = 4197568
After decrement counter2 = 4197567
Enter a positive number:

Explanation / Answer

#include <iostream>
using namespace std;
class counterType
{
private:
   int counter;
public:
   counterType();
   counterType(int counter);
   void print();
   void incrementCounter();
   void decrementCounter();
   void setCounter(int c);
   int getCounter();
};
counterType::counterType(int counter)
{
    setCounter(counter);
}
counterType::counterType()
{
    counter = 0;
}
void counterType::setCounter(int c)
{
  
    if (c > 0)
    {
        counter = c;
    }
    else
    {
       // cout << "Please enter a positive number" << endl;
       counter = 0;
    }
}
int counterType::getCounter()
{
      return counter;
}
void counterType::incrementCounter()
{
    counter++;
}
void counterType::decrementCounter()
{
    counter--;
}
void counterType::print()
{
    cout << counter << endl;
}

int main()
{
    counterType counter1;
    counterType counter2(5);
    counter1.print();
    cout << endl;
    counter1.incrementCounter();
    cout << "After Increment counter1: " << counter1.getCounter() << endl;
    cout << "Counter2 = " << counter2.getCounter() << endl;
    counter2.decrementCounter();
    cout << "After decrement counter2 = " << counter2.getCounter() << endl;
    counter1.setCounter(-6);
    cout << "After resetting counter1: " << counter1.getCounter() << endl;
    return 0;
}

Output:

0

After Increment counter1: 1
Counter2 = 5
After decrement counter2 = 4
After resetting counter1: 0

Do ask if any doubt. Please upvote