как переместить значение массива пользовательского ввода в конец массива и установить для него значение 0?

#c

#c

Вопрос:

Что мне нужно, так это создать программу, в которой пользователь вводит 10 целых чисел в массив, а затем вводит еще одно целое число, которое необходимо заменить на 0 и переместить в конец конечного массива.

Перепробовал все, что я могу найти в Google, но все равно не работал.

 #include <iostream>
using namespace std;

int main ()
{
    int i, array[10], v;

cout << "Please enter 10 integer elements of an array!n" << endl;
    for (int i = 0; i < 10; i  )
    {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
cout << "The final array is:n" << endl;

    for (int i = 0; i < 10; i  )
    {
        cout << "array[" << i << "]: " << array[i] << endl;
        if (array[i] == v)
        {
            v = 0;
        }
    }
    for (i = 0; i < 1; i  )
    cout << "array[" << array[8] << "]: " << v << endl;
 

Вот как далеко я закончил, почти закончил, но не знаю, как сделать это правильно, чтобы увидеть в финале только 10 значений массива, а не 11, когда пользователь вводит то же значение основного массива.

есть конечный результат, как он должен выглядеть, потому что, я думаю, вы ничего не поймете, что мне нужно из этого описания, потому что мой английский — мусор ;/

Комментарии:

1. i затеняется объявлением в цикле for и недоступно за пределами его области.

2. Что произойдет, если массив содержит более одного вхождения v??

3. Почему вы устанавливаете v значение 0 if array[i] == v ? Вы хотите установить для индекса массива значение 0 yes?

4. for (i = 0; i < 1; i ) это очень сложный способ сделать что-то ровно один раз. Значение девятого элемента также очень неясно.

5. ребята, у меня 0 понимания всего этого sht … я даже не знаю, что я делаю, поэтому я не могу объяснить вам, почему я делаю то или это … для меня это черное изображение, мне просто нужно закончить эту домашнюю работу, и я больше не хочу думать об этом мусоре.. Наш учитель начал изучать c для начинающих, сказал он, потому что тогда нам будет легче начать кодирование на других языках.. Я думаю, что самая большая ошибка — начать изучать программирование с c …

Ответ №1:

это код для перемещения всех равных элементов в массиве, вы можете сослаться на него

 #include <iostream>
using namespace std;

int main ()
{
    const int N = 10;
    int array[N];
    int v;

    cout << "Please enter 10 integer elements of an array!n" << endl;
    for (int i = 0; i < N; i  )
    {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
    cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
    cout << "The final array is:n" << endl;

    int pos = 0;
    // move element which are not equal backward
    for (int i = 0; i < N; i  )
    {
        if (array[i] != v)
        {
            array[pos] = array[i];
              pos;
        }
    }
    // set value in remaining position to 0
    for ( ; pos < N;   pos){
        array[pos] = 0;    
    }

    // print output
    for (int i = 0; i < N; i  ){
        cout << "array[" << i << "]: " << array[i] << endl;    
    }


}
 

Комментарии:

1. Да, это то, что я искал! Спасибо, что вы так подходите! 🙂 Но можете ли вы объяснить, что такое k? Потому что я не вижу, что вы где-то его объявляете? Также я сделаю ваш код для решения, спасибо, чувак!

2. привет, я объявил k в цикле for (int k = i; k < 9; k). это для перемещения значения массива после того, как мы встретим ‘V’ назад, и в конце установите для последнего элемента массива значение 0. имеет ли это смысл?

3. хорошо, это означает, что вам не нужно объявлять k поверх кода? где int i, array[10], v; ? Спасибо за объяснение 🙂 Хорошо, я понял, вы можете объявить даже в цикле for 🙂 Или, если вы определили сверху, вы можете написать так? ->> (k = i; k < 9; k) без int я прав?

4. на самом деле, вам не нужно объявлять i в верхней части кода. конечно, мы должны объявить array[10], v поскольку они нигде больше не объявлены. в этом случае у нас будет 2 переменные с именем ‘i’, и сначала во внутренней будет приоритет ‘i’ (i в верхней части кода рассматривается как внешняя переменная)… я думаю, что вы новичок в c , пожалуйста, найдите время, чтобы узнать об этом 🙂

5. да, вы правы, просто «без int k», а не «без int i»

Ответ №2:

Чтобы заменить i-е значение в массиве на ноль, вы пишете array[i] = 0 , а не v = 0 .
Чтобы скопировать i-й элемент в последнюю позицию, вы пишете array[9] = array[i] .

Кроме того, вы должны сначала изменить массив, а затем распечатать его, а не печатать его по ходу работы.

Комментарии:

1. Более близкое к этому, но все еще не то, что должно быть. <br> Теперь у меня 0 в конце конечного массива, но это значение V integer все еще отображается в конечном массиве, оно должно исчезнуть и увидеть 0 в конце массива. Как будто они движутся снизу вверх. Можете ли вы, пожалуйста, посмотреть эту картинку из первого сообщения?

Ответ №3:

 #include <iostream>
using namespace std;

int main () {

    const size_t MAX_SIZE = 10;
    size_t i = 0, array[MAX_SIZE], v;

    cout << "Please enter 10 integer elements of an array!n" << endl;

    for (int i = 0; i < MAX_SIZE; i  ) {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
    cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
    cout << "The final array is:n" << endl;

    while (true)
    {
        if (i == MAX_SIZE) {
            break;
        }

        if (array[i] == v) {

            for (size_t j = i; j < MAX_SIZE - 1; j  ) {
                array[j] = array[j   1];
            }

            array[MAX_SIZE - 1] = 0;
            continue;
        }

        cout << "array[" << i << "]: " << array[i] << endl;

        i  ;
    }

}
 

_

Вы также можете сделать это с помощью цикла for .

 for (size_t i = 0; i < MAX_SIZE; /*EMPTY*/) {

    if (array[i] == v)
    {
        for (size_t j = i; j < MAX_SIZE - 1; j  ) {
            array[j] = array[j   1];
        }

        array[MAX_SIZE - 1] = 0;
        continue;
    }

    cout << "array[" << i << "]: " << array[i] << endl;

    i  ;
}
 

_

 Please enter 10 integer elements of an array!

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 2
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 1

Now, enter the integer, 'V': 1

The final array is:

array[0]: 2
array[1]: 0
array[2]: 0
array[3]: 0
array[4]: 0
array[5]: 0
array[6]: 0
array[7]: 0
array[8]: 0
array[9]: 0
 

_

 Please enter 10 integer elements of an array!

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 2
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 1

Now, enter the integer, 'V': 2

The final array is:

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 1
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 0