Функции вызывают друг друга с++

102
01 августа 2019, 14:40

Я совсем поверхностно знаю с++, но эту проблему мне необходимо срочно решить(нет времени на прочтение книги).

Две функции remover и found рекурсивно вызывают друг друга. Но т.к remover объявлена выше, то она не видит found. Если их поменять местами, аналогично found не будет видеть remover. Понятно, что это происходит из-за того, что одна объявлена раньше другой. Тогда как решить эту проблему?

#include <iostream>
#include <string>
using namespace std;
int remover(int *arr, int size, int a, int b) {
int secondArr[size];
for(int i = a; i < size-b; i++) {
    secondArr[i] = arr[i];
}
size = size - a - b;
return found(secondArr, size, a, b);
}
int found(int *arr, int size, int a, int b) {
if ( size > (a+b) ) {
    return remover(arr,size,a,b) + remover(arr,size,b,a);
} else {
    return 1;   
};
};
int main()
{
  // Входные данные
  int size = 5;
  int a = 1;
  int b = 2;
  int arr[size];
  for (int i = 0; i < size; i++) { // Заполнение массива
      arr[i] = i+1;
    }

   found(arr,size,a,b);
}
Answer 1

Объявить одну из функций предварительно

int found(int *arr, int size, int a, int b);
int remover(int *arr, int size, int a, int b) {
  ...
  return found(secondArr, size, a, b);
}
int found(int *arr, int size, int a, int b) {
  ...
  return remover(arr,size,a,b) + remover(arr,size,b,a);
}

P.S. int arr[size];, int secondArr[size]; для неконстантного size - такого в С++ не разрешается.

READ ALSO
Global Libraries как зависимость Gradle в IDEA

Global Libraries как зависимость Gradle в IDEA

Есть некие глобальные библиотеки заданные в IDEA, могу ли я их подключить в buildgradle? Если я подключаю их вручную, то они сбрасываются при первом...

127
Массив огромных размеров [закрыт]

Массив огромных размеров [закрыт]

Есть олимпиадная задача, ограничение по памяти 256 мебибайтНужно создать матрицу 100000 х 100000

99
Почему Graphics размывается после масштабирования?

Почему Graphics размывается после масштабирования?

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

99