1

Тема: [C++] Замінити елемент масиву на 0

Доброго дня, допоможіть вирішити помилку в коді функції (dellmas), яка видаляє (замість вибраного числа записує 0).
Типу я розумію, що неправильний цикл, але не розумію як побудувати вірний, і чому не ініціалізує змінну int j{}, потрібно ставити {}.

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

using namespace std;

void menu() {
    cout << endl;
    cout << "1 - Додати елементи масиву" << endl;
    cout << "2 - Вивести масив" << endl;
    cout << "3 - Видалити елементи масиву" << endl;
    cout << "4 - Очистити пам'ять" << endl;
    cout << "0 - Вихід" << endl;
    cout << endl;
}
//додавання елементів
void input(int** array, int n, int k) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            cout << "Array[" << i << "][" << j << "] : ";
            cin >> array[i][j];
        }
    }
}

//видалення елементів
void dellmas(int** array, int n, int k) {

    cout << "Індекс елементу: ";
    int pos;
    cin >> pos;
    int pos1;
    int j{}, i;
    cin >> pos1;
    for (i = 0; i < pos; i++) {
        array[i++][j] = 0;
        for (j = 0; j < pos1; j++) {
            array[i][j++] = 0;
        }
    }
    cout << endl;
}

//вивід елементів
void print(int** array, int n, int k) {
    
  
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < k; j++) {
                cout << array[i][j] << ' ';
            }
            cout << endl;
    }
}
//очищення пам'яті
void clear(int** array, int n) {
    
        for (int i = 0; i < n; ++i)
            delete[] array[i];
        delete[] array;
        cout << "\nМасив знищено." << endl;
    
}

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int** array_f;
    int choose = -1;
    int r_first, c_first;
    cout << "|масив|" << endl;
    cout << "Rows : ";
    cin >> r_first;
    cout << "Columns : ";
    cin >> c_first;
    cout << endl;
    array_f = new int* [r_first];
    for (int i = 0; i < r_first; i++) {
        array_f[i] = new int[c_first];
    }
    while (choose != 0) {
        menu();
        cout << "Ваш вибір: ";
        cin >> choose;
        if (choose == 0) break;
        while (choose != 1 && choose != 2 && choose != 3 && choose != 4) {
            cout << "Невірно, виберіть іншу цифру : ";
            cin >> choose;
        }
        switch (choose) {
        case 1:
            cout << endl;
            input(array_f, r_first, c_first);
            cout << endl;
            break;
        case 2: cout << endl;
            cout << "Ваш масив: " << endl;
            print(array_f, r_first, c_first);
            cout << endl;
            break;
        case 3:  
            dellmas(array_f, r_first, c_first);
            break;
        case 4:
            clear(array_f, r_first);
            break;
        }

    }

    return 0;
}

2

Re: [C++] Замінити елемент масиву на 0

Нафіга Вам pos1, де він ініціалізується?
Мабуть я щось недогледів ..

3

Re: [C++] Замінити елемент масиву на 0

Droid 77 написав:

Нафіга Вам pos1, де він ініціалізується?
Мабуть я щось недогледів ..

Для того щоб дійти до потрібного символу в стовбці

4

Re: [C++] Замінити елемент масиву на 0

Вам треба видалити одне число? То одне і видаляйте. Щоб дістатися елемента в масиві, цикл не потрібен, просто саме цей елемент і замінюйте на 0.