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];
}
}
}
};
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.