have source code in C++ and I need to develope the class (.h) file and the class
ID: 3559613 • Letter: H
Question
have source code in C++ and I need to develope the class (.h) file and the class (.cpp) file to make this ncode work properly. I have a basic understanding of how this works, but this is the second time that I have had to take this course so my understanding must not be too good.
Comp 220 week 2
Objective: Create a C++ console application that will model the characteristics of a resistor.
1. Create a multifile project. Create and add to the project an h file containing the resistor-class definition.
2. Create and add to the project a cpp file containing the implementation of the class-member functions.
3. Create and add to the project a ccp file containing the main() function, which will instantiate a resistor object and test its member functions.
STEP 2: Required Class Members
The resistor class will, at minimum, have members that do the following.
1. store the nominal resistance value of a resistor
2. store the tolerance of a resistor
3. initialize any and all nominal-resistance values to correct, EIA, nonzero values that are greater than 0 and less than 1,000,000 ohms
4. initialize any and all resistance-tolerance values to correct, E12, E24, E48, or E96 resistance-tolerance values
5. allow the nominal-resistance and tolerance values of a resistor object to be changed by the user
6. All member functions should have a test message stating the name of the function. All the test messages should be displayed or not displayed, depending on the value of a Boolean variable declared in main().
a. If the Boolean value = true, display the message.
b. If the Boolean value = false, do not display the message.
STEP 3: Program Operations
1. Function main() should instatiate two objects of class resistor.
2. Function main() should display the current values of all resistor objects.
a. Function main() should also calculate and display the minimum and maximum in-tolerance resistance values of each resistor object from the resistor data members.
3. Function main() should allow the user to change the values of the nominal resistance and the resistor tolerance of both resistor objects, and it should also correctly handle out of numeric-range input. Main() is also responsible for making sure that the user can successfully enter only correct, EIA resistance and tolerance values.
a. The user should be given the following data-entry choices:
1. accept current EIA values for resistance and tolerance;
4. The function main() should display the new, modified values of the resistor object, including the new min and max in-tolerance resistance values.
5. The function main() should be executed twice: once with the test messages displayed and once without.
STEP 4: Lab Questions
You are not required to copy the question text into your document, but all answers should be listed with the question number they answer.
1. List the complete reference-source information for where you found the EIA standard resistor value and tolerance information.
2. How was this reference discovered and where?
3. The constructor requires the initialization values for the nominal resistance and the tolerance when an object is instantiated to be a correct E-series resistance and tolerance combination. Describe how this was accomplished in your program design and implementation.
4. In the lab, you were required to provide mutator functions to change the nominal-resistance and tolerance values of a resistor object.
a. Describe how this was accomplished so that the user could not enter an invalid nominal-resistance and E-series tolerance combination.
5. Describe how this process was different and/or similar to how you implemented this validation in the class constructor.
Hello Class,
You are REQUIRED to use this code for your ResistorMain.cpp file.
====================
//Filename: ResistorMain.cpp
//Description: Contains CResistor class test function
//Class: COMP 220
//Student Name: ???????
#include "Resistor.h"
#include <iostream>
#include <iomanip>
#include <Windows.h>
#include <math.h>
using namespace std;
//EIA Standard array element sizes per tolerance class
const int E12 = 12;
const int E24 = 24;
const int E48 = 48;
const int E96 = 96;
//EIA Standard Resistor Values
//E12 10% tolerance
//E24 5% tolerance
//E48 2% tolerance
//E96 1% tolerance
//10% standard values
const int nominalE12Values[E12] =
{ 100, 120, 150, 180, 220, 270,
330, 390, 470, 560, 680, 820};
//5% standard values
const int nominalE24Values[E24] =
{ 100, 110, 120, 130, 150, 160, 180, 200, 220, 240,
270, 300, 330, 360, 390, 430, 470, 510, 560, 620,
680, 750, 820, 910};
//2% standard values
const int nominalE48Values[E48] =
{ 100, 105, 110, 115, 121, 127, 133, 140, 147, 154,
162, 169, 178, 187, 196, 205, 215, 226, 237, 249,
261, 274, 287, 301, 316, 332, 348, 365, 383, 402,
422, 442, 464, 487, 511, 536, 562, 590, 619, 649,
681, 715, 750, 787, 825, 866, 909, 953};
//1% standard values
const int nominalE96Values[E96] =
{ 100, 102, 105, 107, 110, 113, 115, 118, 121, 124,
127, 130, 133, 137, 140, 143, 147, 150, 154, 158,
162, 165, 169, 174, 178, 182, 187, 191, 196, 200,
205, 210, 215, 221, 226, 232, 237, 243, 249, 255,
261, 267, 274, 280, 287, 294, 301, 309, 316, 324,
332, 340, 348, 357, 365, 374, 383, 392, 402, 412,
422, 432, 442, 453, 464, 475, 487, 499, 511, 523,
536, 549, 562, 576, 590, 604, 619, 634, 649, 665,
681, 698, 715, 732, 750, 768, 787, 806, 825, 845,
866, 887, 909, 931, 953, 976};
void DisplayResistance(CResistor &, bool );
void EnterResistance(CResistor &, bool);
void main(void)
{
//Control variable to display function names when called
bool fnDisp = false;
CResistor Res1(4700.0, 0.10, "Res1", fnDisp);
CResistor Res2(330.0, 0.10, "Res2", fnDisp);
CResistor Res3(10000.0,0.10, "Res3", fnDisp);
DisplayResistance(Res1, fnDisp);
DisplayResistance(Res2, fnDisp);
DisplayResistance(Res3, fnDisp);
EnterResistance(Res1, fnDisp);
DisplayResistance(Res1, fnDisp);
system("pause");
}
// Function displays all data member values of a CResistor object
void DisplayResistance(CResistor & resObj, bool fnDisplay)
{
//Local variables to hold CResistor data copies
double nom, tol, min, max;
nom = resObj.getNominal(fnDisplay);
tol = resObj.getTolerance(fnDisplay);
min = nom * (1.0 - tol);
max = nom * (1.0 + tol);
cout << endl << "Resistor object name is " << resObj.getResName(fnDisplay) << endl;
cout << setiosflags(ios::fixed) << setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << "Nominal resistance value = " << setw(15) << nom << " ohms ";
cout << endl << "Tolerance = " << setw(15) << tol * 100 << " %";
cout << endl << "Minimum Resistance = " << setw(15) << min << " ohms";
cout << endl << "Maximum Resistance = " << setw(15) << max << " ohms";
cout << endl << endl;
}
// Function allows user to enter new values for CResistor data members
void EnterResistance(CResistor & resObj, bool fnDisplay)
{
//Local variables to hold CResistor data copies
double nom, tol;
string name;
//Local variable for user data entry
int nomEdit = 0;
int tolEdit = 0;
int powerOfTen = 0;
//Valid EIA entry value check boolean
bool validEIA = false;
//Local loop counter
int i = 0;
nom = resObj.getNominal(fnDisplay);
tol = resObj.getTolerance(fnDisplay);
name = resObj.getResName(fnDisplay);
cout << endl << endl;
cout << "Resistor being edited: " << name << endl << endl;
do
{
cout << "Current resistance tolerance = " << tol * 100 << " %" << endl;
cout << "Valid tolerances are 1%, 2%, 5% or 10%" << endl << endl;
cout << "Enter 1, 2, 5 or 10: ";
cin >> tolEdit;
cout << endl;
}
while(tolEdit != 1 && tolEdit != 2 && tolEdit != 5 && tolEdit != 10);
cout << "Tolerance set to " << tolEdit << " %" << endl << endl;
resObj.setTolerance((double)tolEdit*0.01, fnDisplay);
do
{
cout << "Current nomimal resistance = " << nom << " ohms" << endl;
cout << "Standard 10% Resistance Values, First Three Digits" << endl << endl;
if(tolEdit == 10)
{
for( i = 0; i < E12; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE12Values[i] << " ";
}
}
else if(tolEdit == 5)
{
for( i = 0; i < E24; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE24Values[i] << " ";
}
}
else if(tolEdit == 2)
{
for( i = 0; i < E48; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE48Values[i] << " ";
}
}
else
{
for( i = 0; i < E96; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE96Values[i] << " ";
}
}
cout << endl << endl << "Enter first three digits: ";
cin >> nomEdit;
cout << "You entered " << nomEdit << endl;
validEIA = false;
if(tolEdit == 10)
{
for( i = 0; i < E12; i++)
{
if(nomEdit == nominalE12Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else if(tolEdit == 5)
{
for( i = 0; i < E24; i++)
{
if(nomEdit == nominalE24Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else if(tolEdit == 2)
{
for( i = 0; i < E48; i++)
{
if(nomEdit == nominalE48Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else
{
for( i = 0; i < E96; i++)
{
if(nomEdit == nominalE96Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
if (validEIA == false)
{
cout << "Invalid EIA value entered, try again" << endl;
}
}
while(validEIA == false);
do
{
cout << endl << "Enter a power of ten multiplier between -2 (0.01) and 3 (1000): ";
cin >> powerOfTen;
cout << "You entered " << powerOfTen << endl;
}
while(powerOfTen < -2 || powerOfTen > 3);
resObj.setNominal((double)nomEdit * pow(10.0,(double)powerOfTen), fnDisplay);
}
Explanation / Answer
//Filename: ResistorMain.cpp
//Description: Contains CResistor class test function
//Class: COMP 220
//Student Name:
#include "Resistor.h"
#include <iostream>
#include <iomanip>
#include <Windows.h>
#include <math.h>
#include <string>
using namespace std;
//EIA Standard array element sizes per tolerance class
const int E12 = 12;
const int E24 = 24;
const int E48 = 48;
const int E96 = 96;
//EIA Standard Resistor Values
//E12 10% tolerance
//E24 5% tolerance
//E48 2% tolerance
//E96 1% tolerance
//10% standard values
const int nominalE12Values[E12] =
{ 100, 120, 150, 180, 220, 270,
330, 390, 470, 560, 680, 820};
//5% standard values
const int nominalE24Values[E24] =
{ 100, 110, 120, 130, 150, 160, 180, 200, 220, 240,
270, 300, 330, 360, 390, 430, 470, 510, 560, 620,
680, 750, 820, 910};
//2% standard values
const int nominalE48Values[E48] =
{ 100, 105, 110, 115, 121, 127, 133, 140, 147, 154,
162, 169, 178, 187, 196, 205, 215, 226, 237, 249,
261, 274, 287, 301, 316, 332, 348, 365, 383, 402,
422, 442, 464, 487, 511, 536, 562, 590, 619, 649,
681, 715, 750, 787, 825, 866, 909, 953};
//1% standard values
const int nominalE96Values[E96] =
{ 100, 102, 105, 107, 110, 113, 115, 118, 121, 124,
127, 130, 133, 137, 140, 143, 147, 150, 154, 158,
162, 165, 169, 174, 178, 182, 187, 191, 196, 200,
205, 210, 215, 221, 226, 232, 237, 243, 249, 255,
261, 267, 274, 280, 287, 294, 301, 309, 316, 324,
332, 340, 348, 357, 365, 374, 383, 392, 402, 412,
422, 432, 442, 453, 464, 475, 487, 499, 511, 523,
536, 549, 562, 576, 590, 604, 619, 634, 649, 665,
681, 698, 715, 732, 750, 768, 787, 806, 825, 845,
866, 887, 909, 931, 953, 976};
void DisplayResistance(CResistor&, bool );
void EnterResistance(CResistor&, bool);
void main(void)
{
//Print programmer's name and assignment number name.
cout << setfill('*') << setw(25) << "" << endl;
cout << setfill('*') << setw(2) << "" << " Paul Michael " << setw(2) << "" << endl;
cout << setfill('*') << setw(2) << "" << " iLab assignment wk2 " << setw(2) << "" << endl;
cout << setfill('*') << setw(25) << "" << endl;
//Control variable to display function names when called
bool fnDisp = false;
string Resistor1 = "Res1";
string Resistor2 = "Res2";
string Resistor3 = "Res3";
CResistor Res1(4700.0, 0.10, Resistor1, fnDisp);
CResistor Res2(330.0, 0.10, Resistor2, fnDisp);
CResistor Res3(10000.0,0.10, Resistor3, fnDisp);
DisplayResistance(Res1, fnDisp);
DisplayResistance(Res2, fnDisp);
DisplayResistance(Res3, fnDisp);
EnterResistance(Res1, fnDisp);
DisplayResistance(Res1, fnDisp);
system("pause");
}
// Function displays all data member values of a CResistor object
void DisplayResistance(CResistor& resObj, bool fnDisplay)
{
//Local variables to hold CResistor data copies
double nom, tol, min, max;
nom = resObj.getNominal(fnDisplay);
tol = resObj.getTolerance(fnDisplay);
min = nom * (1.0 - tol);
max = nom * (1.0 + tol);
cout << endl << "Resistor object name is " << resObj.getResName(fnDisplay) << endl;
cout << setiosflags(ios::fixed) << setiosflags(ios::showpoint)
<< setprecision(3);
cout << endl << "Nominal resistance value = " << setw(15) << nom << " ohms ";
cout << endl << "Tolerance = " << setw(15) << tol * 100 << " %";
cout << endl << "Minimum Resistance = " << setw(15) << min << " ohms";
cout << endl << "Maximum Resistance = " << setw(15) << max << " ohms";
cout << endl << endl;
}
// Function allows user to enter new values for CResistor data members
void EnterResistance(CResistor& resObj, bool fnDisplay)
{
//Local variables to hold CResistor data copies
double nom, tol;
string name;
//Local variable for user data entry
int nomEdit = 0;
int tolEdit = 0;
int powerOfTen = 0;
//Valid EIA entry value check boolean
bool validEIA = false;
//Local loop counter
int i = 0;
nom = resObj.getNominal(fnDisplay);
tol = resObj.getTolerance(fnDisplay);
name = resObj.getResName(fnDisplay);
cout << endl << endl;
cout << "Resistor being edited: " << name << endl << endl;
do
{
cout << "Current resistance tolerance = " << tol * 100 << " %" << endl;
cout << "Valid tolerances are 1%, 2%, 5% or 10%" << endl << endl;
cout << "Enter 1, 2, 5 or 10: ";
cin >> tolEdit;
cout << endl;
}
while(tolEdit != 1 && tolEdit != 2 && tolEdit != 5 && tolEdit != 10);
cout << "Tolerance set to " << tolEdit << " %" << endl << endl;
resObj.setTolerance((double)tolEdit*0.01, fnDisplay);
do
{
cout << "Current nomimal resistance = " << nom << " ohms" << endl;
cout << "Standard 10% Resistance Values, First Three Digits" << endl << endl;
if(tolEdit == 10)
{
for( i = 0; i < E12; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE12Values[i] << " ";
}
}
else if(tolEdit == 5)
{
for( i = 0; i < E24; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE24Values[i] << " ";
}
}
else if(tolEdit == 2)
{
for( i = 0; i < E48; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE48Values[i] << " ";
}
}
else
{
for( i = 0; i < E96; i++)
{
if(!(i % 10))
cout << endl;
cout << nominalE96Values[i] << " ";
}
}
cout << endl << endl << "Enter first three digits: ";
cin >> nomEdit;
cout << "You entered " << nomEdit << endl;
validEIA = false;
if(tolEdit == 10)
{
for( i = 0; i < E12; i++)
{
if(nomEdit == nominalE12Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else if(tolEdit == 5)
{
for( i = 0; i < E24; i++)
{
if(nomEdit == nominalE24Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else if(tolEdit == 2)
{
for( i = 0; i < E48; i++)
{
if(nomEdit == nominalE48Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
else
{
for( i = 0; i < E96; i++)
{
if(nomEdit == nominalE96Values[i])
{
validEIA = true;
cout << "Valid EIA value entered" << endl;
}
}
}
if (validEIA == false)
{
cout << "Invalid EIA value entered, try again" << endl;
}
}
while(validEIA == false);
do
{
cout << endl << "Enter a power of ten multiplier between -2 (0.01) and 3 (1000): ";
cin >> powerOfTen;
cout << "You entered " << powerOfTen << endl;
}
while(powerOfTen < -2 || powerOfTen > 3);
resObj.setNominal((double)nomEdit * pow(10.0,(double)powerOfTen), fnDisplay);
}
--------------------------------------------------------------------------------------------------------------------
// In this file, all the class member functions that are
// declared in the "Resistor.h" file are defined.
#include "Resistor.h"
#include <iostream>
#include <iomanip>
#include <string.h>
#include <Windows.h>
using namespace std;
//This functions retrieves the nominal resistance value from the user.
double CResistor::getNominal(bool fnDisplay)
{
fnDisplay = true;
if (fnDisplay != false)
{
cout << " The 'getNominal' function has been called" << endl;
}
return nominalRes;
}
//This function retrieves the nominal tolerance from the user and display's
//a test message that states the function has been called if the correct boolean
//value has been set.
double CResistor::getTolerance(bool fnDisplay)
{
fnDisplay = true;
if (fnDisplay != false)
{
cout << " The 'getTolerance()' function has been called" << endl;
}
return nominalTol;
}
//This function retrieves the resistor name from the user.
string CResistor::getResName(bool fnDisplay)
{
fnDisplay = true;
if (fnDisplay != false)
{
cout << " The 'getResName()' function has been called" << endl;
}
return (resistorName);
}
//This function defines the Constructor. The Constructor has 4 defualt parameters that will
//initialize the class member attributes nominalRes, nominalTol and resistorName to a default
//value.
CResistor::CResistor(double R,double T,string rN,bool fnDisplay)
{
fnDisplay = true;
if(fnDisplay != false)
{
cout << "The Constructor is called" << endl;
cout << endl;
if(0.0 < R)
{
nominalRes = R;
}
else
{
nominalRes = 0.0;
}
if(.00 < T)
{
nominalTol = T;
}
else
{
nominalTol = .00;
}
resistorName = rN;
}
}
//This function will reset the class member attribute "nominalTol"
//to the user defined tolerance value.
void CResistor::setTolerance(double Tol,bool fnDisplay)
{
fnDisplay = true;
if(fnDisplay != false)
{
cout <<"The setTolerance function was called" << endl;
}
nominalTol = Tol;
}
void CResistor::setNominal(double nom,bool fnDisplay)
{
fnDisplay = true;
if(fnDisplay != false)
{
cout <<"The setNominal function was called" << endl;
}
nominalRes = nom;
}
---------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <string.h>
#include <Windows.h>
using namespace std;
class CResistor
{
public:
double getNominal(bool);
double getTolerance(bool);
string getResName(bool);
void setTolerance(double,bool);
void setNominal(double,bool);
CResistor(double,double,string,bool);
CResistor();
private:
double nominalRes;
double nominalTol;
string resistorName;
};
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.