#include \"Resistor.h\" #include <iostream> #include <iomanip> #include <Windows
ID: 3767858 • Letter: #
Question
#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(Resistor *, bool );
void EnterResistance(Resistor *, bool);
void SortResistance(Resistor **, int, bool);
void PointerSwap(Resistor ** res1, Resistor ** res2);
void main(void)
{
// General purpose loop counter
int i = 0;
// Number of resistors to dynamically create
int numRes = 3;
// Local variable for resistor name input
string resName;
// Create an array of
Resistor * resPtr[3];
// Dynamically allocate memory for new Resistor objects
// Enter name and values
// Enter your code here please
// Display all Resistor objects and values
for(i = 0; i < numRes; i++)
{
DisplayResistance(resPtr[i], false);
cout << endl;
}
// Sort all Resistor objects by value
SortResistance(resPtr, numRes, false);
// Display all Resistor objects and values
for(i = 0; i < numRes; i++)
{
// Enter your code here please
}
// Deallocate all allocated memory for Resistor objects
for(i = 0; i < numRes; i++)
{
delete resPtr[i];
}
system("pause");
}
// Function to sort Resistor objects by value
void SortResistance(Resistor ** resArray, int arraySize, bool fnDisplay)
{
// General purpose local loop variable
int i = 0, j = 0;
Resistor ** tempPtr1 = NULL;
Resistor ** tempPtr2 = NULL;
for(i = 0; i < arraySize; i++)
// Enter your code here please
for(i = 0; i < arraySize - 1; i++)
for(j = i + 1; j < arraySize; j++)
{
PointerSwap(resArray + i, resArray + j);
}
}
void PointerSwap(Resistor ** res1, Resistor ** res2)
{
Resistor *tempRes = NULL;
if((*res1)->getNominal(false) > (*res2)->getNominal(false))
{
tempRes = *res1;
*res1 = *res2;
*res2 = tempRes;
}
}
// Function displays all data member values of a Resistor object
void DisplayResistance(Resistor * resObj, bool fnDisplay)
{
//Local variables to hold Resistor 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 Resistor data members
void EnterResistance(Resistor * resObj, bool fnDisplay)
{
//Local variables to hold Resistor 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 << endl;
}
while(powerOfTen < -2 || powerOfTen > 3);
resObj->setNominal((double)nomEdit * pow(10.0,(double)powerOfTen), fnDisplay);
}
Explanation / Answer
Program:
// file Resistor.h
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Resistor
{
private:
string name;
double value;
double tolerance;
double minValue;
double maxValue;
public:
void DisplayResistor();
void GetResistance();
};
// file Resistor.cpp
#include "stdafx.h"
#include "Resistor.h"
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
void Resistor::DisplayResistor()
{
};
void Resistor::GetResistance()
{
};
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#include "Resistor.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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.