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

#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;
}