Question: C++ Help please run this shell file to test the program please attach sortrace.log and screenshots ############################################################ # this file should be called sortrace.sh Please

C++ Help

please run this shell file to test the program

please attach sortrace.log and screenshots

############################################################ # this file should be called sortrace.sh Please rename it # it must have execute privilege set to run # run it as a background task like this: # $ rm sortrace.log # start with fresh log file # $ sortrace.sh >> sortrace.log & ########################################################### echo Generating 1000000 random numbers sleep 1 generate 1000000 100000 999999 # you have to write generate.cpp sleep 1 echo Starting system sort sleep 1 { time sort numbers.dat > systemsort.out; } 2>> sortrace.log sleep 1 echo Starting my sort sleep 1 { time mysort numbers.dat mysort.out; } 2>> sortrace.log # you have to write mysort.cpp sleep 1 sort -c mysort.out 2>> sortrace.log # verify file is sorted

1.cpp

#include

#include

#include

using namespace std;

int main(int argc, char* argv[]) {

if (argc != 4) {

cerr << "Usage: generate COUNT MIN MAX" << endl;

return 1;

}

int count = stoi(argv[1]);

int min = stoi(argv[2]);

int max = stoi(argv[3]);

ofstream numbers_file("numbers.dat");

if (!numbers_file) {

cerr << "Error: Unable to open numbers.dat file." << endl;

return 1;

}

for (int i = 0; i < count; i++) {

int num = (rand() % (max - min + 1)) + min;

numbers_file << num << endl;

}

numbers_file.close();

return 0;

}

2.cpp

#include

#include

#include

using namespace std;

void merge(vector& arr, int l, int m, int r) {

int i, j, k;

int n1 = m - l + 1;

int n2 = r - m;

vector L(n1), R(n2);

for (i = 0; i < n1; i++) {

L[i] = arr[l + i];

}

for (j = 0; j < n2; j++) {

R[j] = arr[m + 1 + j];

}

i = 0;

j = 0;

k = l;

while (i < n1 && j < n2) {

if (L[i] <= R[j]) {

arr[k] = L[i];

i++;

}

else {

arr[k] = R[j];

j++;

}

k++;

}

while (i < n1) {

arr[k] = L[i];

i++;

k++;

}

while (j < n2) {

arr[k] = R[j];

j++;

k++;

}

}

void merge_sort(vector& arr, int l, int r) {

if (l < r) {

int m = l + (r - l) / 2;

merge_sort(arr, l, m);

merge_sort(arr, m + 1, r);

merge(arr, l, m, r);

}

}

int main(int argc, char* argv[]) {

if (argc != 3) {

cerr << "Usage: " << argv[0] << " INPUT_FILE OUTPUT_FILE" << endl;

return 1;

}

ifstream input_file(argv[1]);

if (!input_file) {

cerr << "Error: Unable to open input file." << endl;

return 1;

}

vector numbers;

int num;

while (input_file >> num) {

numbers.push_back(num);

}

input_file.close();

merge_sort(numbers, 0, numbers.size() - 1);

ofstream output_file(argv[2]);

if (!output_file) {

cerr << "Error: Unable to open output file." << endl;

return 1;

}

for (int i = 0; i < numbers.size(); i++) {

output_file << numbers[i] << endl;

}

output_file.close();

cout << "Sorting complete" << endl;

return

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!