Другие языки программирования и технологии

Что делаю не так? C++.Удаление элемента массива

#include <iostream>
using namespace std;
int main()
{
int n , x[100], a;
cin >> n ;
for ( int i = 0 ; i < n ; i++ )
{
cin >> x;
}
cin >> a;
for ( int i = 0 ; i < n ; i++ )
{
if ( a == i )
{
x = x[++i];
cout << x;
}
}
cin.get();
cin.get();
return 0;
}

Неправильный вывод
#include <iostream>
using namespace std;
int main()
{
int n, a, x[100];
cout << " n?.. "; cin >> n;
cout << endl;
for (int k = 0; k < n; k++)
{
cout << "x[" << k << "] = ";
cin >> x[k];
}
cout << endl << " a?.. "; cin >> a;
cout << endl;
if (a > n) a = n;
if (a < 1) a = 1;
--a;
--n;
for (int k = 0; k < n; k++)
{
if (k < a) continue;
else x[k] = x[k + 1];
}
for (int k = 0; k < n; k++) cout << x[k] << ' ';
cin.get(); cin.get();
return 0;
}
NA
Nursultan Apsatarov
87 217
Лучший ответ
cin >> x; - тут бы индекс не помешал
да и много где такой косяк

ещё:
for ( int i = 0 ; i < n ; i++ )
{
if ( a == i )
{
x = x[++i];
cout << x;
}
}
ты меняешь только удалённый элемент на следующий, а тебе, наверное, нужно все сдвинуть, и n сделать меньше.
for ( int i = a ; i < n-1 ; i++ )
{
x = x[i+1];
cout << x;
}
n--;

Похожие вопросы