Имеется код:
#include <iostream>
#include <ctime>
#include <limits>
using namespace std;
void generateArray(int *arr, int size);
void showArray(int *arr, int size);
void changeElementsWithRecursion(int *arr, int size, int &i);
void input(int &size);
int main() {
cout << "Enter the size:" << endl;
int size = 0;
while (true) {
input(size);
if (size > 0)
break;
}
int i = 0;
int *arr = new int[size];
generateArray(arr, size);
showArray(arr, size);
changeElementsWithRecursion(arr, size, i);
cout << "Transformed array:" << endl;
showArray(arr, size);
system("pause");
return 0;
}
void generateArray(int *arr, int size) {
srand(time(NULL));
for (int i = 0; i < size; i++)
arr[i] = rand() % 2;
}
void showArray(int *arr, int size) {
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
}
void changeElementsWithRecursion(int *arr, int size, int &i) {
if (i == 0)
if (arr[1] == 1)
arr[i] = 0;
else if (i == size - 1) {
if (arr[i - 1] == 1)
arr[i] = 0;
return;
}
else if (arr[i - 1] == 1 || arr[i + 1] == 1)
arr[i] = 0;
i++;
changeElementsWithRecursion(arr, size, i);
}
void input(int &size) {
while (true) {
cin >> size;
if (cin.good())
break;
cout << "Wrong input" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
Задача - заменить все элементы массива, граничащие с 1 на 0, при помощи рекурсии. Рассуждал так: если нулевой элемент массива - проверял только следующий элемент, если последний - проверял предыдущий, а в других случаях проверял и следующий и предыдущий. Однако при выполнении выбивает исключение:
Необработанное исключение по адресу 0x003E2509 в Project1.exe: 0xC00000FD: Stack overflow (параметры: 0x00000001, 0x00C02F9C).
И указывает на строку
void changeElementsWithRecursion(int *arr, int size, int &i) {
В чём проблема?
if (i == 0)
if (arr[1] == 1)
arr[i] = 0;
else if (i == size - 1) {
Скобки поставь.
if (i == 0) {
if (arr[1] == 1)
arr[i] = 0;
} else if (i == size - 1) {
PS: Отладчик же есть.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
в библиотеке qwt, в файле qwt_series_datah, объявлен класс: QwtSeriesData