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
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
vector
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
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
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
Get step-by-step solutions from verified subject matter experts
