Я довольно новыми для понятий нового, удалить и указатели, поэтому, возможно, решение очевидно для людей, читающих это, но я честно озадачен.Проблема обработки массива, созданного с новым оператором
У меня должен быть массив, который инициализирован на 2 элемента, но поскольку пользователь вводит больше чисел, он будет постоянно расширяться на 2 элемента с помощью оператора , пока пользователь не войдет в «-1».
Хотя у меня есть кодирование, позволяющее массиву расти, results are disappointing, когда программа затем обрабатывает массив, чтобы вернуть разность между наименьшим числом в массиве и каждым другим числом. Единственный намек, который мне дал: «Когда вы меняете емкость, вы не копируете исходный массив в новый». Однако я не уверен, что с этим делать.
Подсказка в правильном направлении была бы принята с благодарностью.
#include <iostream>
using namespace std;
int main(){
int *ptr; //pointer to array
int capacity = 2; //capactity of array
int size = 0; //how many ints recorded in array
ptr = new int[capacity];
int tmp = 0;
int *numArray = new int[capacity];
while (true){
cout << "Enter a number: ";
int num;
cin >> num;
if (num == -1) break;
if (size == capacity){
int *temp = new int[capacity + 2];
capacity += 2;
delete[]ptr;
ptr = temp;
}
ptr[size++] = num;
}
int smallest = numArray[0];
// Code to process array and look for smallest number
for (int i = 0; i < capacity; i++){
if (numArray[i] < smallest){
smallest = numArray[i];
}
}
cout << endl << "The smallest number in the array is: " << smallest << endl << endl;
for (int i = 0; i < capacity; i++){
int difference = numArray[i] - smallest;
cout << "The difference between " << numArray[i] << " and the smallest number in the array is : " << difference << endl;
}
system("pause");
}
Для дальнейшего использования, эта цитата вводит в заблуждение: «При изменении емкости, вы не копировать из исходного массива в новый.» Не был уверен, что это была * инструкция * задания или просто наблюдение. –
@ColinBasnett - Вероятно, я должен был объяснить, что это был намек, который дал человек, который смотрел на мой код. Упс. –