0

I am trying to compile my shell sort program, and it is failing. Visual studio shows no errors, only text: ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========. What could be cause of that? At now I tried to change the loop order and no luck so far. I am using the latest visual studio 2019

#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;


struct dati
{
    int len = 6;
    int* mas = new int[len];
    int* mas1 = new int[len / 2];
    int* mas2 = new int[len / 2];
    dati()
    {
        for (int i = 0; i < len; i++)
        {
            cout << "enter arrays " << i << ". element:";
            cin >> mas[i];
        }
    }
};

void shella(dati *ret)
{

    int d = ret->len/2;
    int* temp2 = new int[ret->len];

    for (int i = 0; i < ret->len; i++)
    {
        if (ret->len > ret->len / 2)
        {
            ret->mas1[i] = ret->mas[i];
        }
        else
            ret->mas2[i] = ret->mas[i];
    }

    int *temp = new int[ret->len];

    for (int i = 0; i < ret->len; i++)
    {
        if (ret->len > ret->len / 2)
        {
            temp[i] = ret->mas1[i];
        }
        else
            temp[i] = ret->mas2[i];
    }

    for (int i = 0; i < ret->len; i++)
    {
        if (ret->len > ret->len / 2)
        {
            ret->mas1[i] = temp[i];
        }
        else
            ret->mas2[i] = temp[i];
    }

    for (int i = 0; i < ret->len; i++)
    {
        if (ret->len > ret->len / 2)
        {
            ret->mas1[i] = temp[i];
        }
        else
            ret->mas2[i] = temp[i];
    }

    for (int i = 0; i < ret->len/2 - 1; i++)
    {
        if (ret->mas1[i] > ret->mas1[i + 1])
            swap(ret->mas1[i], ret->mas1[i + 1]);

        if (ret->mas2[i] > ret->mas2[i + 1])
            swap(ret->mas2[i], ret->mas2[i + 1]);
    }

    for (int i = 0; i < ret->len / 2; i++)
    {
        if (i % 2 == 0)
            temp2[i] = ret->mas1[i];
        else
            temp2[i] = ret->mas2[i];
    }

    int a = 0;
    for (int a = 0; a != 1000; a++) {
        for (int i = 0; i < ret->len - 1; i++)
        {
            if (temp2[i] > temp2[i + 1])
                swap(temp2[i], temp2[i + 1]);
        }
    }

    for (int i = 0; i < ret->len; i++)
    {
        cout << temp2[i] << "\t";
    }

    delete[] temp2;
    delete[] temp;
    system("pause");
}

int main()
{
    dati *ret;

    ret = new dati();

    shella(ret);
}
Raicha
  • 110
  • 6

0 Answers0