0

С чем может быть это связано? ERROR 1: Undefined symbols: ERROR 2: Linker command failed with exit code 1 (use -v to see invocation) КОД ПРОГРАМЫ:

#include <iostream>
#include <ctime>
#include <algorithm>

using namespace std;

void fillRandomNum(int arr[], int size); void fillAscending(int arr[], int size); void fillDescending(int arr[], int size); void printArray(int arr[], int size); void quickSort(int arr[], int low, int high, long long& comparisons, long long& assignments); int partition(int arr[], int low, int high, long long& comparisons, long long& assignments); bool isSorted(int arr[], int size);

struct Menu{ short num; };

int main() {

srand(static_cast<unsigned>(time(NULL)));

Menu menu;

const int sizes[] = {10, 100, 1000, 5000, 10000};

cout<<"\tQuickSort\n"; cout<<"------------------------------------------"<<endl; while (menu.num!=1 && menu.num != 2 && menu.num != 3) { cout<<"Натисність: "<<endl; cout<<"1 - сортування масиву з випадковою послідовністью елементів."<<endl; cout<<"2 - сортування масиву зі зростаючою послідовністью елементів."<<endl; cout<<"3 - сортування масиву зі спадаючою послідовністью елементів."<<endl; cin>>menu.num; }

for (int size : sizes) { int arr[size];

switch (menu.num) {
    case 1:
        fillRandomNum(arr, size);
        break;

    case 2:
        fillAscending(arr, size);
        break;

    case 3:
        fillDescending(arr, size);
        break;

    default:
        break;
}

long long comparisons = 0;
long long assignments = 0;
clock_t start = clock();
quickSort(arr, 0, size - 1, comparisons, assignments);
clock_t end = clock();
double timeTaken = double(end - start) / CLOCKS_PER_SEC;


cout &lt;&lt; &quot;Розмір масиву: &quot; &lt;&lt; size &lt;&lt; endl;
cout &lt;&lt; &quot;Час сортування: &quot; &lt;&lt; timeTaken &lt;&lt; &quot; секунд&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;Кількість порівнянь: &quot; &lt;&lt; comparisons &lt;&lt; endl;
cout &lt;&lt; &quot;Кількість присвоєнь: &quot; &lt;&lt; assignments &lt;&lt; endl;
cout&lt;&lt;&quot;------------------------------------------&quot;&lt;&lt;endl;

if (isSorted(arr, size)) {
    cout &lt;&lt; &quot;Масив відсортовано правильно.&quot; &lt;&lt; endl;
} else {
    cout &lt;&lt; &quot;Масив не відсортовано правильно.&quot; &lt;&lt; endl;
}

}

return 0; }

void fillRandomNum(int arr[], int size){ for (int i = 0; i < size; i++) { arr[i] = rand() % 100; } }

void fillAscending(int arr[], int size){ for (int i = 0; i < size; i++) { arr[i] = i; } }

void fillDescending(int arr[], int size){ for (int i = 0; i < size; i++) { arr[i] = size - i; } }

void printArray(int arr[], int size){ for (int i = 0; i < size; i++) { cout<<arr[i]<<" "; } cout<<endl; }

void quickSort(int arr[], int low, int high, long long& comparisons, long long& assignments){

if (low < high) { int pi = partition(arr,low,high, comparisons, assignments);

quickSort(arr, low, pi - 1, comparisons, assignments);
quickSort(arr, pi + 1, high, comparisons, assignments);

}

}

int partition(int arr[], int low, int high, long long& comparisons, long long& assignments){

int pivot = arr[high]; int i = low - 1;

for (int j = low; j <= high; j++) { comparisons++; if (arr[j] < pivot) { i++; swap(arr[i], arr[j]); assignments++; } }

swap(arr[i+1], arr[high]); assignments++;

return i+1; }

whoime
  • 1
  • Заметим, что стандарт ваше int arr[size]; не допускает... Во-вторых, у вас menu не инициализирована. В-третьих, и это ответ на ваш вопрос — где реализация функции isSorted? – Harry Oct 20 '23 at 11:37

0 Answers0