Удаление элементов в массиве

211
19 декабря 2016, 19:51

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

using namespace::std;
int main() 
{ 
    int n, a, b, c; 
    int x[100], m[100];
    cout << " n?.. "; cin >> n;  //количество  элементов
    cout << endl; 
    for (int k = 0; k < n; k++) 
    { 
        cout << "x[" << k << "] = "; 
        cin >> x[k]; 
    }
    for (int i = 0; i < 3; i++) 
    {
        cout << endl << " №?.. "; cin >> m[i]; // номера удаляемых элементов
        cout << endl;
        if (m[i] > n) m[i] = n; 
        if (m[i] < 1) m[i] = 1; 
        --m[i]; 
        --n;
        for (int k = 0; k < n; k++) 
        { 
            if (k < m[i]) continue; 
            else x[k] = x[k + 1];   
        }
        for (int k = 0; k < n; k++) cout << x[k] << ' '; 
    }
    getch(); 
}
Answer 1

Так Вы каждый раз вводите номера в первоначальном массиве. А он же меняется при каждом удалении.

В Вашем случае (и только при вводе последовательно возрастающих индексов удаляемых элементов) нужно после ввода m[i] вычесть из него i (т.е. количество уже удаленных).

READ ALSO
Как отредактировать файл C:\Windows\&hellip;\hosts?

Как отредактировать файл C:\Windows\…\hosts?

Если это вообще реально?

233
Сниффер C++

Сниффер C++

Есть сниффер , ловит пакеты записывает заголовочную информацию в файлПрепод требует допустим если udp пакет записывал еще порты , icmp - тип icmp и код...

229
Как работает оператор &gt;&gt; в fstream?

Как работает оператор >> в fstream?

У меня есть небольшая программа, которая считает слова, я знаю как она работает, но не совсем понимаю как именно устроен механизмКонкретно...

239