Николай Богданов, вы не обрабатываете файлы в текущей директории в DiffBetween. Можно избавиться от глобального состояния, если просто передавать его по ссылке в функцию. Или сделать функции возвращающими списки удаленных и новых файлов. Соответсвенно после рекурсивного вызова надо будет накапливать возвращенные данные и возвращать итог. Но это будет медленнее чем с параметром.
Но вообще, у вас функции члены класса похоже - это нормально иметь какое-то состояние. Можно сделать у класса конструктор, который получает 2 каталога и обрабатывает их. И методы для получения всяких уже подсчитанных данных.
Очевидно, что тут нужен список. Автор что-то путает.
А зачем задания, запрещающие стандартную библиотеку - Ну соберет автор вызовы max, find, insert в кучу. Задание в 3 строчки не сложнее a+b. Чему тут можно научиться? Вот и будет программист на С++ вообще не знающий, что такое указатели, не умеющий в циклы и, если стандартный контейнер чего-то не умеет, то считающий, что это сделать принципиально невозможно.
Нет. Если читать через %d, как у автора, то введется число - цифры. Если во вводе идут символы, не прочитается ничего. Никакой код символа в int читаться не будет.
polger, Да, строковые константы хранятся скорее всего в rdata. Если у вас есть какая-то строка во время исполнения, то под нее надо выделять память. Ну, или прямо в эту выделенную в (*arr)[i] часть ее создавать. Если строка вводится откуда-то, то вот сюда и записывайте. Если строка приходит из другой части программы, то там под нее должно быть выделенно место (или взят глобальный массив char).
Теоретически, вы можете просто в arr скопировать указатель на ту строку, но это опасно, потому что неясно, где и кто ее удалять будет.
Оберните код в тег code (кнопка </> в редакторе). Тогда символы всякие парсер не съест.
И еще, не хорошо редактировать вопрос на совершенно другой, после того, как на него уже ответили. Правильнее задать новый вопрос.
А так, одним math.h вы не обойдетесь. Вам надо еще с какой-то библиотекой слинковаться, ибо хедеры содержат только объявления функций. Обычно math идет как часть libc. Где оно у вашего компилятора и как его подключить - я не знаю. Гуглите "libc <ваша среда разработки>".
Dyikot, Еще раз, медленно: вы реализуете функции exp(x) и ln(x) через ряды (чуть сложнее с логарифмом, есть ряд для f(y) = ln((1+y)/(1-y)), и y надо сначала найти, чтобы (1+y)/(1-y) = x)
im_noob, Ничего не понял. X==Y, в общем-то, можно заменить на X ^ Y == 0, а X^Y выразить через битовые И, ИЛИ и НЕ. При чем тут swap и сдвиги, я не знаю.
Стоп, стоп, стоп. Зачем вам проверять, отдельно что a=0, size-1, но не делать проверок по b.
Если вы не делаете каемки вокруг поля (индексация с 1, массив размером size+2 x size+2), то надо внутри for по i проверять, что 0 <= a+dx[i] < size и 0 <= b+dy[i] < size.
Но вообще, у вас функции члены класса похоже - это нормально иметь какое-то состояние. Можно сделать у класса конструктор, который получает 2 каталога и обрабатывает их. И методы для получения всяких уже подсчитанных данных.