C/C++

Помогите с кодом, пожалуйста

Внизу написано, какая там ошибка, но я не могу понять, что это
Попробуй убрать код и написать хелловорлд. Скомпилируется? Если нет, VS сломана.
Сергей Черкасов
Сергей Черкасов
92 464
Лучший ответ
Андрей Зейдин не помогло
Андрей Зейдин как ещё скрин сделать, там же и так есть?
Андрей Зейдин вывести это на консоль?
В строке 16 у вас объявлен прототип функции: double s(double). Он объявлен внутри функции main(). Объявлять функции внутри другой функции не разрешается. Исключением из правила являются лямбда-функции. Для каждой функции существуют следующие правила. Она должна быть объявлена, определена и вызвана. Объявление функции должно быть выполнено выше места её вызова в коде вне других функций. Определение функции (её реализация, код, который она содержит) может быть находиться в любом месте файла, ниже её объявления вне тела других функций. Синтаксически позволено совмещать объявление функции с её определением. Идентификаторы по другому именуются символами. При вызове функции, программа обращается ко внешнему коду через его имя, то есть через внешний символ. Вы свою функцию вызываете дважды на 28 строке и один раз в 29 строке. Однако компилятор не находит функцию s() и сообщает о том, что вами предпринята попытка сослаться на неразрешённый внешний символ. То есть на не существующий объект в памяти. Следовательно, компиляция невозможна.

Теперь как правильно.

#include <iostream>
#include <iomanip>
using namespace std;

// Объявление
double sum(unsigned);

// Объявление с определением
double fact(unsigned n) {
return n <= 0? 1.0 : n * fact(n - 1);
}

int main() {
unsigned n = 10;

// Вызов функций, с сохранением результатов
auto m = fact(n);
auto s = sum(n);

cout << n << "! = " << fixed << setprecision(0) << m << '\n';
cout << "sum = " << fixed << setprecision(0) << s << '\n';

system("pause > nul");
}
Mikle Kurenkov
Mikle Kurenkov
74 932
1. Зачем тебе iostream?
2. Setlocale можно заменить на: system ("chcp 1251"); system ("cls");
3. double s(double N), что это вообще может значить?