2023 Use a simple vector you created before to create two other more | Assignment Collections

Computer Science 2023 Complex Vector

2023 Use a simple vector you created before to create two other more | Assignment Collections

 

Use a simple vector you created before to create two other more complex vectors with

   A) Memory allocation that doubles size of memory when end reached, and 1/2’s memory when the size reaches 1/4.

   B) Implemented with a singularly linked list.

Main.cpp

#include <cstdlib>
#include “SimpleVector.h”
//System Libraries
#include <iostream> //Input/Output Library
using namespace std;
//User Libraries
//Global Constants, no Global Variables are allowed
//Math/Physics/Conversions/Higher Dimensions – i.e. PI, e, etc…
//Function Prototypes
void fillVec(SimpleVector<int> &);
void addVec(SimpleVector<int> &);
void delVec(SimpleVector<int> &);
void prntVec(SimpleVector<int> &,int);
//Execution Begins Here!
int main(int argc, char** argv) {
    //Declare Variables
    int size;
    //Read in the size
    cout<<“What size vector to test?”<<endl;
    cin>>size;
    SimpleVector<int> sv(size);
    //Initialize or input i.e. set variable values
    fillVec(sv);
    //Display the outputs
    prntVec(sv,10);
    //Add and subtract from the vector
    addVec(sv);
    //Display the outputs
    prntVec(sv,10);
    //Add and subtract from the vector
    delVec(sv);
    //Display the outputs
    prntVec(sv,10);
    //Exit stage right or left!
    return 0;
}
void addVec(SimpleVector<int> &sv){
    int add=sv.size()*0.1;
    for(int i=1;i<=add;i++){
        sv.push_front(i+add-1);
        sv.push_back(i-add);
    }
}
void delVec(SimpleVector<int> &sv){
    int del=sv.size()*0.2;
    for(int i=1;i<=del;i++){
        sv.pop_front();
        sv.pop_back();
    }
}
void fillVec(SimpleVector<int> &sv){
    for(int i=0;i<sv.size();i++){
        sv[i]=i%10;
    }
}
void prntVec(SimpleVector<int> &sv,int n){
    cout<<endl;
    for(int i=0;i<sv.size();i++){
        cout<<sv[i]<<” “;
        if(i%n==(n-1))cout<<endl;
    }
    cout<<endl;
}

SimpleVector.h

// SimpleVector class template
#ifndef SIMPLEVECTOR_H
#define SIMPLEVECTOR_H
#include <iostream>
#include <new>       // Needed for bad_alloc exception
#include <cstdlib>   // Needed for the exit function
using namespace std;

template <class T>
class SimpleVector
{
private:
   T *aptr;          // To point to the allocated array
   int arraySize;    // Number of elements in the array
   void memError(); // Handles memory allocation errors
   void subError(); // Handles subscripts out of range

public:
   // Default constructor
   SimpleVector()
      { aptr = 0; arraySize = 0;}
   // Constructor declaration
   SimpleVector(int);
   // Copy constructor declaration
   SimpleVector(const SimpleVector &);
   // Destructor declaration
   ~SimpleVector();
   //Adding and subtracting from the Vector
   void push_front(T);
   void push_back(T);
   T    pop_front();
   T    pop_back();
   // Accessor to return the array size
   int size() const
      { return arraySize; }
   // Accessor to return a specific element
   T getElementAt(int position);
   // Overloaded [] operator declaration
   T &operator[](const int &);
};
// Constructor for SimpleVector class. Sets the size of the *
// array and allocates memory for it.                       *
template <class T>
SimpleVector<T>::SimpleVector(int s)
{
   arraySize = s;
   // Allocate memory for the array.
   try
   {
      aptr = new T [s];
   }
   catch (bad_alloc)
   {
      memError();
   }
   // Initialize the array.
   for (int count = 0; count < arraySize; count++)
      *(aptr + count) = 0;
}
// Copy Constructor for SimpleVector class. *
template <class T>
SimpleVector<T>::SimpleVector(const SimpleVector &obj)
{
   // Copy the array size.
   arraySize = obj.arraySize;
 

   // Allocate memory for the array.
   aptr = new T [arraySize];
   if (aptr == 0)
      memError();
 

   // Copy the elements of obj’s array.
   for(int count = 0; count < arraySize; count++)
      *(aptr + count) = *(obj.aptr + count);
}
// Add 1 or Delete 1 front or back for SimpleVector class. *
template<class T>
void SimpleVector<T>::push_front(T val){
    // Allocate memory for the array.
    T *newarr = 0;
    try
    {
        newarr = new T [arraySize + 1];
    }
    catch (bad_alloc)
    {
        memError();
    }
    *(newarr) = val;//Add value to the front of the new array
    // Copy previous array contents.
    arraySize++;//Increment array size
    for (int count = 1; count < arraySize; count++)
        *(newarr + count) = *(aptr + count – 1);
    delete aptr;//Delete previous array
    aptr = newarr;
}
template<class T>
void SimpleVector<T>::push_back(T val){
    // Allocate memory for the array.
    T *newarr = 0;
    try
    {
        newarr = new T [arraySize + 1];
    }
    catch (bad_alloc)
    {
        memError();
    }
    // Copy previous array contents.
    for (int count = 0; count < arraySize; count++)
        *(newarr + count) = *(aptr + count);
    *(newarr + arraySize) = val;//Add value at back of the array
    arraySize++;//Increment array size
    delete aptr;//Delete previous array
    aptr = newarr;
}
template<class T>
T SimpleVector<T>::pop_front(){
    T dummy = 0;
    if(arraySize != 0)//If array is not empty then only pop
    {
        dummy = *aptr;
        if(arraySize == 1){
            delete aptr;
            aptr = 0;
        }
        else {
            // Allocate memory for the array.
            T *newarr = 0;
            try {
                newarr = new T[arraySize – 1];
            }
            catch (bad_alloc) {
                memError();
            }

            // Copy previous array contents.
            for (int count = 1; count < arraySize; count++)
                *(newarr + count – 1) = *(aptr + count);
            delete aptr;//Delete previous array
            aptr = newarr;
        }
        arraySize–;//Decrease array size
    }
    return dummy;//Return popped value
}
template<class T>
T SimpleVector<T>::pop_back(){
    T dummy = 0;
    if(arraySize != 0)//If array is not empty then only pop
    {
        dummy = *(aptr + arraySize – 1);
        if(arraySize == 1){
            delete aptr;
            aptr = 0;
        }
        else {
            // Allocate memory for the array.
            T *newarr = 0;
            try {
                newarr = new T[arraySize – 1];
            }
            catch (bad_alloc) {
                memError();
            }

            // Copy previous array contents.
            for (int count = 0; count < arraySize – 1; count++)
                *(newarr + count) = *(aptr + count);
            delete aptr;//Delete previous array
            aptr = newarr;
        }
        arraySize–;//Decrease array size
    }
    return dummy;//Return popped value
}
//**************************************
// Destructor for SimpleVector class. *
//**************************************
template <class T>
SimpleVector<T>::~SimpleVector()
{
   if (arraySize > 0)
      delete [] aptr;
}
// memError function. Displays an error message and
// terminates the program when memory allocation fails.
template <class T>
void SimpleVector<T>::memError()
{
   cout << “ERROR:Cannot allocate memory.n”;
   exit(EXIT_FAILURE);
}
// subError function. Displays an error message and         *
// terminates the program when a subscript is out of range. *
template <class T>
void SimpleVector<T>::subError()
{
   cout << “ERROR: Subscript out of range.n”;
   exit(EXIT_FAILURE);
}
// getElementAt function. The argument is a subscript. *
// This function returns the value stored at the sub-   *
// cript in the array.                                  *
template <class T>
T SimpleVector<T>::getElementAt(int sub)
{
   if (sub < 0 || sub >= arraySize)
      subError();
   return aptr[sub];
}
// Overloaded [] operator. The argument is a subscript. *
// This function returns a reference to the element     *
// in the array indexed by the subscript.               *
template <class T>
T &SimpleVector<T>::operator[](const int &sub)
{
   if (sub < 0 || sub >= arraySize)
      subError();
   return aptr[sub];
}
#endif

 

We give our students 100% satisfaction with their assignments, which is one of the most important reasons students prefer us to other helpers. Our professional group and planners have more than ten years of rich experience. The only reason is that we have successfully helped more than 100000 students with their assignments on our inception days. Our expert group has more than 2200 professionals in different topics, and that is not all; we get more than 300 jobs every day more than 90% of the assignment get the conversion for payment.

Place Order Now

#write essay #research paper #blog writing #article writing #academic writer #reflective paper #essay pro #types of essays #write my essay #reflective essay #paper writer #essay writing service #essay writer free #essay helper #write my paper #assignment writer #write my essay for me #write an essay for me #uk essay #thesis writer #dissertation writing services #writing a research paper #academic essay #dissertation help #easy essay #do my essay #paper writing service #buy essay #essay writing help #essay service #dissertation writing #online essay writer #write my paper for me #types of essay writing #essay writing website #write my essay for free #reflective report #type my essay #thesis writing services #write paper for me #research paper writing service #essay paper #professional essay writers #write my essay online #essay help online #write my research paper #dissertation writing help #websites that write papers for you for free #write my essay for me cheap #pay someone to write my paper #pay someone to write my research paper #Essaywriting #Academicwriting #Assignmenthelp #Nursingassignment #Nursinghomework #Psychologyassignment #Physicsassignment #Philosophyassignment #Religionassignment #History #Writing #writingtips #Students #universityassignment #onlinewriting #savvyessaywriters #onlineprowriters #assignmentcollection #excelsiorwriters #writinghub #study #exclusivewritings #myassignmentgeek #expertwriters #art #transcription #grammer #college #highschool #StudentsHelpingStudents #studentshirt #StudentShoe #StudentShoes #studentshoponline #studentshopping #studentshouse #StudentShoutout #studentshowcase2017 #StudentsHub #studentsieuczy #StudentsIn #studentsinberlin #studentsinbusiness #StudentsInDubai #studentsininternational