Динамический массив не устанавливается C++

Я делал программу сортировки массивов, с 2 режимами работы:

  1. сортировка одного массива, сформированного случайным образом;
  2. режим накопления статистических данных;

В первом режиме все нормально работает, но во втором какие-то проблемы. Динамический массив не устанавливается - создается всего один случайный элемент. Пытался исправить путем замены типа переменной размера (int -> size_t), названия самого массива (создавал доп. массив k, но там была такая же ситуация).
Код ниже

    #include <iostream>
    using namespace std;
    #include <time.h>
    #include <math.h>
    #include <locale>
    #include <fstream>
    #include <cstring>
    #pragma warning(disable : 4996)

    // Даные по количеству сравнений и перестановок
    int result[2] = { 0, 0 };

    // Сортировка выбором
    int* selectSort(int* mass, int size) {
        int x, k;

        for (int i = 0; i < size; i++) {
            k = i;
            x = mass[i];
            for (int j = i + 1; j < size; j++) {
                result[0] += 1;
                if (mass[j] < x) {
                    k = j;
                    x = mass[j];
                    result[1] += 2;
                }
            }
            mass[k] = mass[i];
            mass[i] = x;
            result[1] += 2;
        }
        return result;
    }

    // Быстрая сортировка
    int* quickSort(int* mass, int size) {
        long i = 0, j = size;
        int temp = 0, p;

        p = mass[size >> 1];

        do {
            while (mass[i] < p) i++;
            while (mass[j] > p) j--;
            result[0] += 1;
            if (i <= j){
                temp = mass[i]; mass[i] = mass[j]; mass[j] = temp;
                result[1] += 2;
            }
        } while (i < j);

        if (j > 0) quickSort(mass, j);
        if (size > i) quickSort(mass + i, size - i);

        return result;
    }

    // Функционал первого режима
    void one(int size, int from, int till, int sortType, char* fileName) {
        int* mass = new int[size];

        ofstream f, fs;
        f.open(fileName, ios::app | ios::out);
        fs.open(strncpy(fileName, "Sorted\n", 100), ios::app | ios::out);

        // Заполенение массива и запись элементов в файл
        for (int i = 0; i < size; i++) {
            mass[i] = rand() % (till - from) + from;
            f << i << ": " << mass[i] << endl;
        }
        // Сохранеие данных о перестановках и сравнениях в массив
        int* result = sortType == 1 ? selectSort(mass, size) : quickSort(mass, size);

        for (int i = 0; i < size; i++)
            fs << i << ": " << mass[i] << endl;

        fs.close();
        cout << "Количество сравнений: '" << result[0] << endl << "Количество перестановок : " << result[1] << endl;
        delete [] mass;
    }

    // Меню первого режима
    void oneMenu() {
        int size = 0, from = 0, till = 0;
        int sortType = 0;
        char fileName[100];

        cout << "Введите размер массива: \n";
        cin >> size;

        cout << "Введите максимальный элемент массива: \n";
        cin >>till;

        cout << "Введите минимальный элемент массива: \n";
        cin >>from;

        cout << "Введите тип сортировки: \n1. Cортировка прямым выбором \n2. Сортировка прямыми обменами \n";
        cin >>sortType;

        cout << "Введите файл для записи результатов: " << endl;
        cin >> fileName;

        one(size, from, till, sortType, fileName);
    }

    // Функционал второго режима
    void two(int step, int from, int till, int sortType, int generateType, char* fileName) {
        ofstream f;
        f.open(fileName);
        double d = 0;

        for (size_t size = from; size <= till; size += step) {
            int *mass = new int[size]; //проблема в этом массиве

            if (generateType == 1)  
                for (int i = 0; i < size; i++) {
                    mass[i] = rand();
                }               
            else if (generateType == 2)
                for (int i = 0; i < size; i++) {
                    mass[i] = i * size;
                }
            else 
                for (int i = size; i > size; i--) {
                    mass[size - i] = i * size;
                }

            clock_t start = clock();
            if (sortType == 1){
                selectSort(mass, size);
            }
            else {
                quickSort(mass, size);
            }
            clock_t end = clock();
            d = (end - start) / CLOCKS_PER_SEC;
            f << size << ": " << d << endl;
            delete [] mass;
        }

        f.close();
    }

    // Меню второго режима
    void twoMenu() {
        int step = 0, from = 0, till = 0, generateType = 0, sortType = 0;
        char fileName[100];

        cout << "Введите шаг изменения размеров массива: \n";
        cin >> step;

        cout << "Введите минимальное количество элементов массива: \n";
        cin >> from;

        cout << "Введите максимальное количество элементов массива: \n";
        cin >> till;    

        cout << "Введите тип сортировки: \n 1. Cортировка прямым выбором \n 2. Сортировка быстрая сортировка\n";
        cin >> sortType;

        cout << "Введите способ формирования массива: \n 1. Cлучайные значения \n 2. Упорядоченная последовательность значений \n 3. Значения расположены в обратном порядке\n";
        cin >> generateType;

        cout << "Введите файл для записи результатов(с расширением .txt):\n";
        cin >> fileName;

        two(step, from, till, sortType, generateType, fileName);
    }

    // Главное меню
    void menu() {
        while (1) {
            cout << "1. Сортировка одного массива, сформированного случайным образом \n2. Режим накопления статистических данных \n3. Выход\n";
            char c;
            cin >> c;

            if (c == '1')
                oneMenu();
            else if (c == '2')
                twoMenu();
            else if (c == '3')
                break;
        }
    }

    int main() {
        srand((int)time(NULL));
        setlocale(0, "");

        menu();

        return 0;
    }

Скриншоты значений: введите сюда описание изображения


Ответы (0 шт):