Глюк с stdio.h исправила, но проблема не пропала.
Тогда, если компилятор не даёт развёрнутого объяснения, что ему не нравится при линковке, могу лишь посоветовать закомментировать по очереди каждую из трёх строчек в функции main и эмпирическим путём выяснить, которая из функций даёт ошибку.
Ещё подумалось: возможно, дело в том, что out.cpp не скомпилирована. К сожалению, в BC++3.1 никогда не писал, поэтому не знаю, как там организована компиляция "составных" проектов из нескольких модулей.
Если ошибка, по итогам вышеуказанного эксперимента, возникает на вызове out(), значит, надо разбираться в том, как организовать такой проект с двумя .cpp-файлами.
А если Сделать #include "out.cpp" - это же не правильно будет?
Технически - так можно сделать. #include всего лишь подставляет текст указанного файла в исходный.
Идеологически - так делать не стоит. Модули - они на то и модули, чтобы один ничего не знал про реализацию другого, и всё это компилировалось по отдельности. Кроме того, если у тебя будет 2 .cpp-файла, каждый из которых будет включать в себя out.cpp, этот код просто не слинкуется: линковщик скажет, что у него есть две скомпилированных копии функции out, а так быть не должно.