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

Based on my code please implement the following. (c++) - Use try/catch structure

ID: 652499 • Letter: B

Question

Based on my code please implement the following. (c++)

- Use try/catch structure for error handling.

- Define a linked list node class with data element being a Shape pointer which pointers either to a Rectangle or Triangle object. ( implementation should contain functions such as InsertAfter(), Remove(), PrintArea(), Search(), and InsertInOrder(). )

- program should read from files and then build a linked list containing Shape pointers which point either to a Rectangle or Triangle object, depending on sides you read. The linked list is sorted by area of the shape with ascending order. Then, it keeps performing the following operations:

prints out areas of all shapes in the list.

prompts the user to enter an area value to search. Note that we don't do random number but ask user to enter.

If there is a shape with the same area value, the shape element will be removed from the linked list (also from the memory heap). Then, prints out areas of all shapes in the list.

Otherwise, prints out "Not found!"

repeat the above steps until user decides to quit. You should ask user "do you want to quit(y/n)?" and quit if "y" is typed, or something similar.

------------------------------------------------------------ My code from the last project


using namespace std;
char userAnswer = ' ';
double areaVal;
class Shape{
public:
   virtual double GetArea() = 0;
   virtual bool CheckValidity() = 0;
};
class Rectangle : public Shape{
public:
   Rectangle(double a, double b);
   double getA() const { return a; }
   double getB() const { return b; }
   void setA(double val){ a = val; }
   void setB(double val){ b = val; }
   bool CheckValidity(){
       if (a > 0 && b > 0){
           return true;
       }
       return false;
   }
   double GetArea(){
       return a * b;
   }
private:
   double a, b;
};
class Triangle : public Shape {
private:
   double a, b, c;
public:
   Triangle(double a, double b, double c);
   double getA() const { return a; }
   double getB() const { return b; }
   double getC() const { return c; }
   void setA(double val){ a = val; }
   void setB(double val){ b = val; }
   void setC(double val){ c = val; }
   bool CheckValidity(){

       if (!((a + b > c)&(a + c > b)&(b + c > a)&(a > 0)&(b > 0)&(c > 0))){
           return false;
       }

       return true;
   };
   double GetArea(){
       double p = (a + b + c) / 2;
       return sqrt(p * (p - a) * (p - b) * (p - c));
   }
};
Rectangle::Rectangle(double a, double b)
{
   setA(a);
   setB(b);
}
Triangle::Triangle(double a, double b, double c){
   setA(a);
   setB(b);
   setC(c);
}

template // Template function that takes both Triangle and Rectangle to sort.
void selSort(vector& ta){
   int i = 0;
   int j = 0;
   int indexSmallest = 0;
   for (i = 0; i < ta.size(); ++i){
       indexSmallest = i;
       for (j = i + 1; j < ta.size(); ++j){
           if (ta.at(j).GetArea() < ta.at(indexSmallest).GetArea()){
               indexSmallest = j;
           }
       }
       T temp = ta.at(i);
       ta.at(i) = ta.at(indexSmallest);
       ta.at(indexSmallest) = temp;
   }
   return;
}
template
int valSearch(vector& ab, double areaVal){
   int i = 0;
   for (i = 0; i < ab.size(); ++i){
       if (ab.at(i).GetArea() == areaVal){
           return i;
       }
   }
   return -1;
}


int main(){
   Triangle;
   vector vecRect;
   vector vecTriangle;
   ifstream input;
   input.open("Tsides.txt");
   double a, b, c;
   if (input.is_open()){
       while (input >> a){
           input >> b >> c;
           Triangle temp = Triangle(a, b, c);
           if (temp.CheckValidity()){
               vecTriangle.push_back(temp);
           }
       }
   }
   input.close();
   input.open("Rsides.txt");
   if (input.is_open()){
       while (input >> a){
           input >> b;
           Rectangle temp = Rectangle(a, b);
           if (temp.CheckValidity()){
               vecRect.push_back(temp);
           }
       }
   }
   selSort(vecRect); // Sort Rectangle by area
   selSort(vecTriangle); // Sort Triangle by area

   cout << "Enter 'q' to quit at any time and save areas to file." << endl;
   while (userAnswer != 'q'){
       cout << "Would you like to search for a Triangle or Rectangle area? Enter 't' or 'r'." << endl;
       cin >> userAnswer;
       if (userAnswer == 'r'){
           cout << "Enter Area Value: ";
           cin >> areaVal;
           valSearch(vecRect, areaVal);
           if (valSearch(vecRect, areaVal) == -1){
               cout << "Rectangle area not found." << endl;
           }
           else {
               cout << "Rectangle at index " << (valSearch(vecRect, areaVal) + 1) << " has an area of " << areaVal << endl;
           }


       }
       if (userAnswer == 't'){
           cout << "Enter Area Value: ";
           cin >> areaVal;
           valSearch(vecTriangle, areaVal);
           if (valSearch(vecTriangle, areaVal) == -1){
               cout << "Triangle area not found." << endl;
           }
           else {
               cout << "Triangle at index " << (valSearch(vecTriangle, areaVal) + 1) << " has an area of " << areaVal << endl;
           }

       }

   };
   ofstream output;
   output.open("Rareas.txt");
   for (int i = 0; i < vecRect.size(); ++i){
       output << vecRect[i].GetArea() << endl;
   }
   output.close();
   input.close();
   output.open("Tareas.txt");
   for (int i = 0; i < vecTriangle.size(); ++i){
       output << vecTriangle[i].GetArea() << endl;
   }
   output.close();

}

Explanation / Answer

it may helps you ...

#include <iostream.h>
#include <conio.h>

class Sape
{
protected:
       double x,y;
//declaration of variables...
public://this is public prototype...
       virtualvoid get_data()=0;//intializing variables..
       virtualvoid display_area()=0;//intializing variables...
};

class triangle : public Sape
{
   public://prototype...
    void get_data(void)
    {//get data method....
     
       cout<<"Enter Dimensions : ";
//it takes the dimensions accordingly...
       cin>>x>>y;//input the values here ....
    }
    void display_area(void)
    {//this method performs area calculation....
       cout<<"Area Triangle";
       double aot;//decalration of variable...
       aot = 0.5 * x * y;
//it calculates the area of traingle...
       cout<<" Triangle Area "<<aot;
    }
};

class rectangle : public Sape
{
   public:
    void get_data(void)//this method calculates the area of rectangle...
    {

       cout<<" two sides : ";
       cin>>x>>y;input the two values ....
    }
    void display_area(void)
    {//this method calculates the area....
    
       double aor;
       aor = x * y;//calculates the area using this formula,....
       cout<<"Rectangle ares "<<aor;
    }
};


void main()
{
clrscr();
triangle tri;
rectangle rect;
shape *list[2];
list[0]=&tri;
list[1]=&rect;

int ch;
while(1)
{


cout<<" select Sape";
cout<<"1) Area of Triangle ";
cout<<"2) Area of Rectangle ";
cout<<"3) Exit ";
cout<<"ch:-";
cin>>ch;
switch(ch)
{
     case 1 : list[0]->get_data();
          list[0]->display_area();
          getch();
          break;
     case 2 : list[1]->get_data();
          list[1]->display_area();
          getch();
          break;
     case 3 : goto end;
     default: cout<<"some thing wrong try again...";
          getch();
}
}
end:
}

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