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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.