пропуск инициализации из-за метки case. помогите срочно, завтра экзамен(

Писал код для экзамена и возникла проблема которая все портит.

#include <iostream>
using namespace std;
// Функция для поиска элемента elem в массиве arr размера size
bool search(int* arr, int size, int elem)
{
    for (int i = 0; i < size; ++i) 
    {
        if (arr[i] == elem) 
        {
            return true;
        }
    }
    return false;
}
// Функция для удаления элементов, превышающих указанное значение
int* remove_excess(int* arr, int& size, int max_value)
{
    int* new_arr = new int[size];
    int new_size = 0;
    for (int i = 0; i < size; ++i) 
    {
        if (arr[i] <= max_value) 
        {
            new_arr[new_size++] = arr[i];
        }
    }
    delete[] arr;
    size = new_size;
    return new_arr;
}
// Функция для сортировки массива по убыванию
void sort_desc(int* arr, int size)
{
    for (int i = 0; i < size - 1; ++i) 
    {
        for (int j = i + 1; j < size; ++j) 
        {
            if (arr[i] < arr[j]) {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
// Функция для вывода массива на экран
void print_array(int* arr, int size)
{
    for (int i = 0; i < size; ++i) 
    {
        cout << arr[i] << ' ';
    }
    cout << '\n';
}
int main()
{
    setlocale(0, "");
    srand(time(0));
    int M, N, SET;
    bool valid_input = false;
    while (!valid_input) 
    {
        cout << "Введите размер массива Аrray1: ";
        cin >> M;
        if (M > 0) 
        {
            valid_input = true;
        }
        else 
        {
            cerr << "Ошибка: размер массива должен быть положительным\n";
        }
    }
    valid_input = false;
    while (!valid_input) 
    {
        cout << "Введите размер массива Аrray2: ";
        cin >> N;
        if (N > 0) 
        {
            valid_input = true;
        }
        else 
        {
            cerr << "Ошибка: размер массива должен быть положительным\n";
        }
    }
    int* A = new int[M];
    int* B = new int[N];
    int valid_count = 0;
    bool valid_elem = false;
    cout << "Введите элементы массива Аrray1:\n";
    for (int i = 0; i < M; ++i) 
    {
        valid_elem = false;
        while (!valid_elem) 
        {
            cout << "A[" << i << "] = ";
            cin >> A[i];
            if (A[i] >= 1 && A[i] <= 99) 
            {
                valid_elem = true;
                ++valid_count;
            }
            else 
            {
                cerr << "Ошибка: элементы массива должны быть в диапазоне от 1 до 99\n";
            }
        }
    }
    cout << "Массив Аrray2, сгенерированный случайным образом:\n";
    for (int i = 0; i < N; ++i) 
    {
        B[i] = rand() % 99 + 1;
        cout << B[i] << ' ';
    }
    cout << '\n';
    int max_value;
    valid_input = false;
    while (!valid_input) 
    {
        cout << "Введите значение, до которого нужно удалить элементы: ";
        cin >> max_value;
        if (max_value >= 1 && max_value <= 99) 
        {
            valid_input = true;
        }
        else 
        {
            cerr << "Ошибка: значение должно быть в диапазоне от 1 до 99\n";
        }
    }
    cout << "1. Создание массива, не включающего элементы массива B\n";
    cout << "2. Создание массива, не включающего общие элементы массивов A и B\n";
    cout << "3. Массив, включающий все элементы обоих массивов, отсортированный по убыванию\n";
    switch (SET)
    {
    case 1:
        // Создание третьего массива, не включающего элементы массива B
        int* C = new int[valid_count];
        int c_cnt = 0;
        for (int i = 0; i < M; ++i)
        {
            if (!search(B, N, A[i]) && !search(C, c_cnt, A[i]))
            {
                C[c_cnt++] = A[i];
            }
        }
        // Вывод третьего массива на экран
        cout << "Массив, не включающий элементы массива B:\n";
        print_array(C, c_cnt);
        break;
    case 2:
        // Создание четвертого массива, не включающего общие элементы массивов A и B
        int* D = new int[valid_count + N];
        int d_cnt = 0;
        for (int i = 0; i < M; ++i)
        {
            if (!search(B, N, A[i]) && !search(D, d_cnt, A[i]))
            {
                D[d_cnt++] = A[i];
            }
        }
        for (int i = 0; i < N; ++i)
        {
            if (!search(A, M, B[i]) && !search(D, d_cnt, B[i]))
            {
                D[d_cnt++] = B[i];
            }
        }
        // Вывод четвертого массива на экран
        cout << "Массив, не включающий общие элементы массивов A и B:\n";
        print_array(D, d_cnt);
        break;
    case 3:
        // Создание пятого массива, включающего все элементы обоих массивов
        int* E = new int[valid_count + N];
        int e_cnt = 0;
        for (int i = 0; i < M; ++i)
        {
            if (!search(E, e_cnt, A[i]))
            {
                E[e_cnt++] = A[i];
            }
        }
        for (int i = 0; i < N; ++i)
        {
            if (!search(E, e_cnt, B[i]))
            {
                E[e_cnt++] = B[i];
            }
        }
        // Удаление элементов, превышающих указанное пользователем значение
        int* new_E = remove_excess(E, e_cnt, max_value);
        // Сортировка пятого массива по убыванию
        sort_desc(new_E, e_cnt);
        // Вывод пятого массива на экран
        cout << "Массив, включающий все элементы обоих массивов, отсортированный по убыванию:\n";
        print_array(new_E, e_cnt);
        delete[] A;
        delete[] B;
        delete[] C;
        delete[] D;
        delete[] new_E;
        return 0;
    }
}

Оставить код без меню нельзя, т.к. этого просит задание. Можете исправить мою ошибку?


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