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

Add a static data member of the class Resistor to keep track of the number of Re

ID: 3644631 • Letter: A

Question

Add a static data member of the class Resistor to keep track of the number of Resistor objects that are dynamically created. This will also be used to limit the number of objects that are dynamically created to the maximum array size of the pointer array in the test function main().

In the Resistor constructor, use a random-number generator to randomly assign a nominal resistance value to the object between 1,000 and 10,000 ohms. The resistance values are not required to be standard resistance values.


Here is what i have now..

#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class ResistorClass
{
private:
double m_dResValue;
double m_dTolerance;
double m_dMinResistance;
double m_dMaxResistance;
public:
string m_cResistorName;
void DisplayResistor( void );
void EnterResistance (void );
void AddSeries ( ResistorClass Resistor1, ResistorClass Resistor2 );
ResistorClass();
ResistorClass( string Name, double nominalResistance, double Tolerance );
ResistorClass( const ResistorClass &ResistorObject );
~ResistorClass();
};
int main( void )
{
ResistorClass oResOne;
//Resistor tolerance = 20% ;
ResistorClass oResTwo("Resistor 2",4700,20);
ResistorClass oResThree(oResTwo);
oResOne.DisplayResistor();
oResTwo.DisplayResistor();
oResThree.DisplayResistor();
system("pause");
return 0;
}
void ResistorClass:: DisplayResistor ( void )
{
cout << fixed << setprecision (2);
cout<<"Values for "<<m_cResistorName<<" are: "<<endl;
cout<<"Resistor Nominal Value = "<<m_dResValue<<endl;
cout<<"ohmsResistorTolerance = "<<m_dTolerance*100<<" %"<<endl;
cout<<"Mininimum Resistance = "<<m_dMinResistance<<" ohms"<<endl;
cout<<"Maximum Resistance = "<<m_dMaxResistance<<" ohms"<<endl;
cout<<endl;
}
void ResistorClass::EnterResistance (void)
{
m_dResValue = -1;
while (m_dResValue < 1)
{
cout << "Enter Resistor Value: " <<endl;
cin >> m_dResValue;
if (m_dResValue < 1 || m_dResValue > 10000000)
{
cout << "Input Error Resistor Value must be > 1" << endl;
cout << "Please Enter a value that is > 1: " << endl;
cin >> m_dResValue;
}
else break;
}
m_dTolerance = -1;
while (m_dTolerance < 1)
{
cout << "Enter Resistor Tolerance: " << endl;
cin >> m_dTolerance;
if (m_dTolerance < 1 || m_dTolerance > 10000000)
{
cout << "Input Error Resistor Tolerance Value must be > 1: " << endl;
cout << "Please Enter a value that is > 1: " << endl;
cin >> m_dTolerance;
}
else break;
}
m_dTolerance = m_dTolerance/100;
m_dMinResistance = m_dResValue - (m_dResValue * m_dTolerance);
m_dMaxResistance = m_dResValue + (m_dResValue * m_dTolerance);
cout<<endl;
}
void ResistorClass:: AddSeries ( ResistorClass Resistor1, ResistorClass Resistor2)
{
if( Resistor1.m_dTolerance > Resistor2.m_dTolerance )
m_dTolerance = Resistor1.m_dTolerance;
else
m_dTolerance = Resistor2.m_dTolerance;
m_dResValue = Resistor1.m_dResValue + Resistor2.m_dResValue;
m_dMinResistance = m_dResValue - (m_dResValue * m_dTolerance);
m_dMaxResistance = m_dResValue + (m_dResValue * m_dTolerance);
cout<<endl;
}
ResistorClass::ResistorClass( )
{
cout << "Enter Resistor Name <default>: " ;
getline(cin, m_cResistorName, ' ');
m_dResValue = 1000.0;
m_dTolerance = 0.10;
m_dMinResistance = m_dResValue - (m_dResValue * m_dTolerance);
m_dMaxResistance = m_dResValue + (m_dResValue * m_dTolerance);
cout <<endl<< "Default Constructor Called:" <<endl;
}
ResistorClass::ResistorClass( string Name, double nominalResistance, double Tolerance )
{
cout <<endl<<"Parameterized Constructor Called:" <<endl;
m_dResValue = nominalResistance;
m_dTolerance = double(Tolerance/100);
m_cResistorName = Name;
m_dMinResistance = m_dResValue - (m_dResValue * m_dTolerance);
m_dMaxResistance = m_dResValue + (m_dResValue * m_dTolerance);
}
ResistorClass::ResistorClass(const ResistorClass &ResistorObject)
{
cout<<endl <<"Enter Resister Name <copy>: ";
getline(cin, m_cResistorName, ' ');
m_dResValue=ResistorObject.m_dResValue;
m_dTolerance=ResistorObject.m_dTolerance;
m_dMaxResistance=ResistorObject.m_dMaxResistance;
m_dMinResistance=ResistorObject.m_dMinResistance;
cout <<endl<<"Copy Constructor Called:"<<endl;
}
ResistorClass:: ~ResistorClass( )
{
cout << "Destructor Called "<<endl;
}

Explanation / Answer

#include #include #include using namespace std; #ifndef RESISTOR_H #define RESISTOR_H enum resistorValues{NOMINAL,TOLERANCE,MAX,MIN}; class Resistor { private: static int ResCounter; double* ptrRes; char* ResName; public: Resistor();//default constructor //argument constructor Resistor(const string&, double nominalResistance=1000, double Tolerance =.10); //fuction getName void getName(); //to display void DisplayResistor(void); // void EnterResistance(void); ~Resistor(); }; int Resistor::ResCounter = 0; Resistor::Resistor() { ptrRes=new double[4]; //default values ptrRes[NOMINAL]=1000; ptrRes[TOLERANCE]=.10; //calculate min and max values ptrRes[MIN]=ptrRes[NOMINAL]-(ptrRes[NOMINAL] * ptrRes[TOLERANCE]); ptrRes[MAX]=ptrRes[NOMINAL]+(ptrRes[NOMINAL] * ptrRes[TOLERANCE]); ResName = NULL; Resistor::ResCounter++; } Resistor::Resistor(const string& name,double nominalResistance,double Tolerance) { ptrRes=new double[4]; //default values ptrRes[NOMINAL]=nominalResistance; ptrRes[TOLERANCE]=Tolerance; //calculate min and max values ptrRes[MIN]=ptrRes[NOMINAL]-(ptrRes[NOMINAL] * ptrRes[TOLERANCE]); ptrRes[MAX]=ptrRes[NOMINAL]+(ptrRes[NOMINAL] * ptrRes[TOLERANCE]); //Resistors Name int length=(int)name.length(); ResName=new char[length+ 1]; strcpy_s(ResName,length+1,name.c_str()); //Increments number of resistor objects that exist Resistor::ResCounter++; } Resistor::~Resistor() { delete[]ptrRes; delete[]ResName; ptrRes=NULL; ResName=NULL; Resistor::ResCounter--; } void Resistor::getName() { string Name; cout Name; int length=(int)Name.length(); if(ResName) { delete[] ResName; ResName=NULL; } ResName=new char[length+ 1]; strcpy_s(ResName,length+1,Name.c_str()); } void Resistor::DisplayResistor () { //Displays all Resistor object data members //sets the output parameters cout
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