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

Write the following class to solve the traveling salesman problem. Array -n: int

ID: 3572978 • Letter: W

Question

Write the following class to solve the traveling salesman problem. Array -n: int//number of elements +x: int[]//the array +Array()//Set n to 0 +Array(int n_in, int x_in[]) +pop: int//pop the last element from array +push: int[]//current (random) path +delete(int k): int//delete kth element and return it +insert(int k, int value)//insert value at element k +append(int dim, int more[]): void//append more[] to end +getN(): int +copy(int out []): void//copy x[] to out[] +setRand(int n_in, int min, int max): void +randPerm(int n_in): void +getAve(): float getVariance(): float +sort(): void -swap(int *a, int *b) +getCountInRange(int min, int max): int +getValuesInRange (int min, int max, int out[])

Explanation / Answer

Solution:

Note: Given question is not clear.Didn’t specify the use of function. Based on given information class is created in c++.

#include<iostream>

#include<time.h>

#include<algorithm>

using namespace std;

class Array

{

     int n;

     int x[50];

public:

     Array()

     {

          n=0;

     }

     Array(int n_in,int x_in[])

     {

          n=n_in;

          for(int k=0;k<n_in;k++)

          {

              x[k]=x_in[k];

          }

     }

     int pop()

     {

          int temp=x[n-1];

          n--;

          return temp;

     }

     int* push()

     {

          int out[50];

          srand(time(NULL));

          for(int k=0;k<n;k++)

          {

              bool ch;

              int temp;

              do

              {

                   temp=rand()%n;

                   ch=true;

                   for(int j=0;j<k;j++)

                   {

                        if(temp==out[j])

                        {

                             ch=false;

                             break;

                        }

                   }

              }while(!ch);

              out[k]=temp;

          }

          return out;

     }

     int Delete(int k)

     {

         

          int temp=x[k-1];

          for(int i=k-1;i<n-1;i++)

          {

              x[i]=x[i+1];

          }

          n--;

          return temp;

     }

     void insert(int k,int value)

     {

          for(int i=n-1;i>k-1;i--)

          {

              x[i+1]=x[i];

          }

          x[k-1]=value;

          n++;

     }

     void append(int dim,int more[])

     {

          int i=n;

          for(int k=0;k<dim;k++)

          {

              x[i++]=more[k];

          }

          n=n+dim;

     }

     int getN()

     {

          return n;

     }

     void copy(int out[])

     {

          for(int k=0;k<n;k++)

          {

              out[k]=x[k];

          }

     }

     void setRand(int n_in,int min,int max)

     {

          for(int i=0;i<n_in;i++)

          {

              x[i]=rand()%(max-min+1)+min;

          }

     }

     void randPerm(int n_in)

     {

          random_shuffle(x,x+n_in);

     }

     float getAve()

     {

          float sum=0.00;

          for(int i=0;i<n;i++)

          {

              sum=sum+x[i];

          }

          float avg=(float)sum/(float)n;

          return avg;

     }

     float getVariance()

     {

          float variance;

          float total=0.00;

          float mean=getAve();

          for(int i=0;i<n;i++)

          {

              total=total+(x[i]-mean)*(x[i]-mean);

          }

          variance=total/n;

          return variance;

     }

     void Sort()

     {

          sort(x,x+n);

     }

     void swap(int *a,int *b)

     {

          if(b!=a)

          {

              *a=*a+*b;

              *b=*b-*a;

              *a=*a-*b;

          }

     }

     int getCountInRange(int min,int max)

     {

          int count=0;

          for(int i=0;i<n;i++)

          {

              if((x[i]>=min)&&(x[i]<=max))

              {

                   count++;

              }

          }

          return count;

     }

     void getValuesInRange(int min,int max,int out[])

     {

          int k=0;

          for(int i=0;i<n;i++)

          {

              if((x[i]>=min)&&(x[i]<=max))

              {

                   out[k++]=x[i];

              }

          }

     }

};