Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
100 ₴

Лабораторні роботи з АСД C++

выбран исполнитель


imageimageimageimage

Приложения 2

Просмотр приложений доступен только зарегистрированным пользователям.


  1. 1 день100 ₴Победившая ставка
    Дмитрий
    Дмитрий Кузнецов
    186     3  0

    Могу сделать . Есть опыт написания программ на С++. Опыт разработки графовых алгоритмов на С++. Связь Телеграм dimaprogr.

    Украина Одесса | 21 октября в 19:56 |
  1.  фрилансер больше не работает на сервисе
  2. 2 дня200 ₴
    Андрій
    Андрій Макарчук
    222     2  0

    Добрый день!
    Готов сделать. Имею опыт решения такого рода задач. Если нужно, то поясню и/или прокомментирую. Сделаю качественно.
    Обращайтесь!

    Украина Камень-Каширский | 21 октября в 14:04 |
  3. 2 дня200 ₴
    Энвер
    Энвер Халилов
    1943   проверен    62  1

    Добрый день, готов выполнить данную лабораторную работу, учту все пожелания.

    Россия Москва | 21 октября в 14:43 |
  • Anton Kravtsov
    21 октября в 11:57 |

    "Теоретическое" кол-во сравнений и обменов для лабы по сортировке вы сами посчитаете или это тоже надо сделать?

    Под сортировку у вас , возможно, есть какие-то заготовки/наработки в виде исходного кода на C++?

  • Stas Semkov — заказчик проекта
    21 октября в 12:28 |

    В мене є готовий код тільки потрібно заповнити таблицю для сорт. На рахунок завд з деревом немає нічого

  • Anton Kravtsov
    21 октября в 12:37 |

    В мене є готовий код тільки потрібно заповнити таблицю для сорт. 

    Если у вас есть работающая программа , то она должна выводить те значения, которые помещаются в таблицу (в колонку "Експерим.")

    А теоретические величины рассчитываются на бумажке, скорее всего 🙂

    На рахунок завд з деревом немає нічого 

    Ваш варианта (библиотека с книгами) - как-то не очень стыкуется с деревьями: не понятно, как именно дерево использовать под хранение данных о книгах. Возможно, требуется упорядочивать по УДК...

    Этот момент целесообразно уточнить у того, кто задание выдал 🙂

  • Anton Kravtsov
    21 октября в 12:41 |

    На мой взгляд, лабы стоило бы разделить по разным проектам (возможно, для разных исполнителей), т.к. они не очень связаны и , по-моему, требуют разных навыков: деревья с библиотекой - это Прикладное программирование, а сортировка - это, скорее, Обработка данных (учитывая, что программа есть)

  • Stas Semkov — заказчик проекта
    21 октября в 12:55 |

     

    #include "pch.h"

    #include <iostream>


    using namespace std;


    static int countComparison = 0;

    static int countChange = 0;



    void bubleSort(int* arr, int size) {

           int countComparison = 0, countChange = 0;

           int temp = 0;

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

                 for (int v = 1; v < (size - i); v++) {

                        countComparison++;

                        if (arr[v - 1] < arr[v]) {

                              temp = arr[v - 1];

                              arr[v - 1] = arr[v];

                              arr[v] = temp;

                              countChange++;

                        }


                 }

           }

           cout << "Amount of comparisons: " << countComparison << " and amount of change: " << countChange << endl;

    }


    void shell_sort(int* arr, int size, bool(*cmp)(int, int)) {

           int j, num, countComparison=0, countChange=0;

           for (int m = size >> 1; m > 0; m >>= 1) {

                 for (int k = 0; k < m; k++) {

                        countComparison++;

                        for (int i = m + k; i < size; i += m) {

                              num = *((arr)+i);

                              j = k;

                              while ((j < i) && (cmp(arr[j], num)))

                                     j += m; countChange++;

                              for (int p = i - m; p >= j; p -= m)

                                     *((arr)+p + m) = *((arr)+p);

                              *((arr)+j) = num;

                        }

                 }

           }

           cout << "Amount of comparisons: " << countComparison << " and amount of change: " << countChange << endl;

    }


    bool cmp_desc(int a, int b) { return (a > b); }


    void swap(int Array[], int one, int two) {

           int temp = Array[one];

           Array[one] = Array[two];

           Array[two] = temp;

           countChange++;

    }


    int partition(int Array[], int left, int right) {

           int pivot = Array[right];

           int leftPointer = left - 1;

           int rightPointer = right;

           for (;;) {

                 while (Array[++leftPointer] > pivot) {

                 }

                 while (rightPointer > 0 && Array[--rightPointer] < pivot) {

                 }

                 if (leftPointer >= rightPointer) {

                        break;

                 }

                 else {

                        swap(Array, leftPointer, rightPointer);

                 }

           }

           swap(Array, leftPointer, right);

          

           return leftPointer;

    }


    void Quicksort(int Array[], int left, int right) {

           if (left < right) {

                 int PartitionPoint = partition(Array, left, right);

                 countComparison++;

                 Quicksort(Array, left, PartitionPoint - 1);

                 Quicksort(Array, PartitionPoint + 1, right);



           }

          

    }


    void randArrFor1k(int * arr){


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

           {

                 arr[i] = rand() % 1000 + 1;

           }

    }

    void randArrFor10k(int * arr) {


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

           {

                 arr[i] = rand() % 10000 + 1;

           }

    }

    void randArrFor100k(int * arr) {


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

           {

                 arr[i] = rand() % 100000 + 1;

           }

    }



    int main()

    {

           int SIZE1k = 1000;

           int SIZE10k = 10000;

           int SIZE100k = 100000;

          

           int* arr = new int[SIZE1k];

           randArrFor1k(arr);

           int* arr1 = arr;

           int* arr2 = arr;

          

          

           cout << "Buble sort: ";

           bubleSort(arr, SIZE1k);

           cout << "Shell sort: ";

           shell_sort(arr1, SIZE1k, cmp_desc);

           cout << "Quick sort: ";

           Quicksort(arr2,0,SIZE1k);

           cout << "Amount of comparisons: " << countComparison << " and amount of change: " << countChange << endl;

          

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

                 cout << "[" << arr[i] << "] ";

           }

                 return 0;

           }

  • Anton Kravtsov
    21 октября в 14:01 |
    int* arr = new int[SIZE1k];
    randArrFor1k(arr);
    int* arr1 = arr;
    int* arr2 = arr;

    :)

    В общем, ясно, и эту программу придётся подрихтовать 🙂

  • Stas Semkov — заказчик проекта
    21 октября в 14:02 |

    Даа