codingBlonde Ответов: 2

Почему этот код не работает? Я должен заполнить массив.


#include <iostream>
using namespace std;

const int CAPACITY=20;

void displayArray(int array[], int numElements);

void fill_array (int array[], int CAPACITY, int &numElements);

int main ()
{
    int NumArray[CAPACITY];	// an int array with a given CAPACITY
    int numElements=0;  // the array is initially empty, i.e., contains 0 elements
    
    fill_array(numArray[], numElements);
    
    return 0;

}

void fill_array (int NumArray[], int &numElements)
{
    cout << "Enter a list up to 20 integers or -1 to end the list" << endl;
    for (numElements=0; numElements<CAPACITY;numElements++)
    {
        cin >> NumArray[numElements];
    }
    
}

void displayArray(int array[], int numElements)
{
    for (int i = 0; i < numElements; i++)
        cout << array[i] << " ";
        cout << endl;
}


Что я уже пробовал:

Пример Вывода:
Введите список из 20 целых чисел или -1, чтобы закончить список
3 2 4 8 12 5 6 9 0 11 10 13 -1
3 2 4 8 12 5 6 9 0 11 10 13
Введите значение и позицию для вставки: 18 5
3 2 4 8 12 18 5 6 9 0 11 10 13
Введите значение для удаления из массива: 18
3 2 4 8 12 5 6 9 0 11 10 13
Введите значение для добавления: 15
3 2 4 8 12 5 6 9 0 11 10 13 15


Я должен добавить всю эту часть в код:
Начните с функции simiplest, например, для поиска содержимого массива.
Предлагаемый порядок записи функции таков:
Функция поиска значения в массиве
Функция для заполнения массива целыми положительными числами
Функция удаления элемента из массива: после удаления в массиве не должно быть отверстий.
Функция для вставки элемента в массив
Напишите одну функцию, протестируйте ее, чтобы убедиться, что она действительно работает, а затем переходите к следующей функции.
Пишите комментарии к 1) документируйте свои алгоритмы и дизайн, 2) Сделайте свой код читабельным, 3) отладьте код.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Почему этот код не работает? Я должен заполнить массив.

Что заставляет вас думать, что этот код не работает ?

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


codingBlonde

Эй, спасибо. Я просто не знаю, как решить эту проблему. У меня возникли проблемы с частью 1. Я не знаю, как я должен взять 20 целых чисел, а затем, когда кто-то вводит -1, он должен остановиться? Я новичок в c++.

Nelek

Как насчет проверки, если входной сигнал равен -1, а затем с помощью break?

Рейтинг:
2

CPallini

Попробуй:

#include <iostream>
using namespace std;

const int CAPACITY=20;

void displayArray(int array[], int numElements);

void fill_array (int array[], int &numElements);

int main ()
{
    int NumArray[CAPACITY]; // an int array with a given CAPACITY
    int numElements=0;  // the array is initially empty, i.e., contains 0 elements

    fill_array(NumArray, numElements);
    displayArray(NumArray, numElements);

    return 0;

}

void fill_array (int NumArray[], int &numElements)
{
    cout << "Enter a list up to 20 integers or -1 to end the list" << endl;
    for (numElements=0; numElements<CAPACITY;numElements++)
    {
        cin >> NumArray[numElements];
        if ( NumArray[numElements] == -1 ) break;
    }

}

void displayArray(int array[], int numElements)
{
    for (int i = 0; i < numElements; i++)
        cout << array[i] << " ";
        cout << endl;
}


Пожалуйста, обратите внимание:
  • Ваша схема именования непоследовательна.
  • Вы используете out-параметр без причины (вы можете использовать возвращаемое значение функции)
  • Использование глобалов не очень хорошо