#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
ifarray[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