STEP 1: Create a Multifile Project Back to top Create a new multifile project us
ID: 3560356 • Letter: S
Question
STEP 1: Create a Multifile Project Back to top Create a new multifile project using the Resistor class developed in Week 1, and include a new main() test function. STEP 2: Modify the Resistor-Class Definition Back to top 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. STEP 3: Create the Test Function Main() and the Support Function Back to top Create an array of pointers of type Resistor. Use elements of the pointer array to allow the user to dynamically allocate memory and to instantiate objects of the Resistor class. Use the indirect member-selection operator (pointer) in the test routine to access function members of the Resistor class. Write a new, nonclass function called in function main() to sort the pointers to the Resistor objects in order from lowest nominal resistance value to highest, passing a pointer to the Resistor-object pointer as the only passed data argument. Display the sorted Resistor objects according to the nominal resistance value, from lowest to highest. Within the sorting function, use pointer arithmetic to access the individual Resistor objects. Function main() should also ensure that there are no memory leaks when the program ends.
________________________________________
Source App
#include<iostream>
#include<string>
#include<conio.h>
#include"Resistor.h"
using namespace std;
const int SIZE = 5;
void sortResistors(Resistor **resArray)
{
Resistor * temp;
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE - 1 - i ; j++)
{
if( resArray[j]->getResistance() > resArray[j+1]->getResistance())
{
temp = resArray[j];
resArray[j] = resArray[j+1];
resArray[j+1] = temp;
}
}
}
}
int main(void)
{
Resistor *myArray[SIZE];
for (int i = 0; i < SIZE; i++)
{
myArray[i] = new Resistor;
}
cout << "Displaying unsorted resistor objects ";
for (int i = 0; i < SIZE; i++)
{
myArray[i] -> displayResistor();
}
sortResistors(myArray);
cout << "Displaying sorted resistor objects ";
for (int i = 0; i < SIZE; i++)
{
delete myArray[i];
}
}
________________________________________________
Resistor.h
#pragma once
#include <iostream>
using namespace std;
class Resistor
{
private:
int resistance;
double tolerance;
static int numberObjects;
public:
Resistor(void);
Resistor(int r, double t);
int getResistance(void);
double getTolerance(void);
void setResistance(int);
void setTolerance(double);
static int getNumberObjects(void);
double findMinResistance(void);
double findMaxResistance(void);
void displayResistor(void);
~Resistor();
};
_________________________________________________________
Resistor.cpp
#include "Resistor.h"
#include <ctime>
int Resistor::numberObjects = 0;
Resistor::Resistor(void)
{
srand((int)time(0));
rand() % 10000 + 1000;
rand() % + 1000;
resistance = rand() % + 1000;
tolerance = 0.1;
numberObjects++;
}
Resistor::Resistor(int r, double t)
{
setResistance (r);
setTolerance (t);
numberObjects++;
}
int Resistor::getResistance(void)
{
return resistance;
}
double Resistor::getTolerance(void)
{
return tolerance;
}
void Resistor::setResistance(int r)
{
if (r < 0 || r > 10000)
resistance = 0;
else
resistance = r;
}
void Resistor::setTolerance(double t)
{
if(t == 0.1 || t == 0.2 || t == 0.05 || t == 0.01)
tolerance = 0;
else
tolerance = t;
}
double Resistor::findMaxResistance(void)
{
double maxResistance;
maxResistance = resistance * (1.0 + tolerance);
return maxResistance;
}
void Resistor::displayResistor (void)
{
cout << "***Resistor information*** ";
cout << "Nominal Resistance: " << resistance << endl;
cout << "Tolerance: " << tolerance << endl;
cout << "Maximum Resistance: " << findMaxResistance() << endl;
cout << "Minimum Resistance: " << findMinResistance() << endl;
}
Explanation / Answer
In your Resistor.cpp file you need to define the two functions which are missing,
Resistor::~Resistor(){
// Code for destructor
}
double Resistor::findMinResistance(void)
{
double minResistance;
// calculate min resistance
return minResistance;
}
in your main program file (Source App)
you need to include resistor.cpp instead of resistor.h
Here is the updated code, remeber to define your functions where commented
Resistor.h
#pragma once
#include <iostream>
using namespace std;
class Resistor
{
private:
int resistance;
double tolerance;
static int numberObjects;
public:
Resistor(void);
Resistor(int r, double t);
int getResistance(void);
double getTolerance(void);
void setResistance(int);
void setTolerance(double);
static int getNumberObjects(void);
double findMinResistance(void);
double findMaxResistance(void);
void displayResistor(void);
~Resistor();
};
Resistor.cpp
#include "Resistor.h"
#include <ctime>
int Resistor::numberObjects = 0;
Resistor::Resistor(void)
{
srand((int)time(0));
rand() % 10000 + 1000;
rand() % + 1000;
resistance = rand() % + 1000;
tolerance = 0.1;
numberObjects++;
}
Resistor::Resistor(int r, double t)
{
setResistance (r);
setTolerance (t);
numberObjects++;
}
Resistor::~Resistor(){
// Code for destructor
}
int Resistor::getResistance(void)
{
return resistance;
}
double Resistor::getTolerance(void)
{
return tolerance;
}
void Resistor::setResistance(int r)
{
if (r < 0 || r > 10000)
resistance = 0;
else
resistance = r;
}
void Resistor::setTolerance(double t)
{
if(t == 0.1 || t == 0.2 || t == 0.05 || t == 0.01)
tolerance = 0;
else
tolerance = t;
}
double Resistor::findMaxResistance(void)
{
double maxResistance;
maxResistance = resistance * (1.0 + tolerance);
return maxResistance;
}
double Resistor::findMinResistance(void)
{
double minResistance;
// calculate min resistance
return minResistance;
}
void Resistor::displayResistor (void)
{
cout << "***Resistor information*** ";
cout << "Nominal Resistance: " << resistance << endl;
cout << "Tolerance: " << tolerance << endl;
cout << "Maximum Resistance: " << findMaxResistance() << endl;
cout << "Minimum Resistance: " << findMinResistance() << endl;
}
Source App
#include <iostream>
#include <string>
#include <conio.h>
#include "Resistor.cpp"
using namespace std;
const int SIZE = 5;
void sortResistors(Resistor **resArray)
{
Resistor * temp;
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE - 1 - i ; j++)
{
if( resArray[j]->getResistance() > resArray[j+1]->getResistance())
{
temp = resArray[j];
resArray[j] = resArray[j+1];
resArray[j+1] = temp;
}
}
}
}
int main(void)
{
Resistor *myArray[SIZE];
for (int i = 0; i < SIZE; i++)
{
myArray[i] = new Resistor;
}
cout << "Displaying unsorted resistor objects ";
for (int i = 0; i < SIZE; i++)
{
myArray[i] -> displayResistor();
}
sortResistors(myArray);
cout << "Displaying sorted resistor objects ";
for (int i = 0; i < SIZE; i++)
{
delete myArray[i];
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.