
C/C++
Помогите с кодом, пожалуйста
Внизу написано, какая там ошибка, но я не могу понять, что это


Попробуй убрать код и написать хелловорлд. Скомпилируется? Если нет, VS сломана.
Андрей Зейдин
не помогло
Андрей Зейдин
как ещё скрин сделать, там же и так есть?
Андрей Зейдин
вывести это на консоль?
В строке 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");
}
Теперь как правильно.
#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");
}
1. Зачем тебе iostream?
2. Setlocale можно заменить на: system ("chcp 1251"); system ("cls");
3. double s(double N), что это вообще может значить?
2. Setlocale можно заменить на: system ("chcp 1251"); system ("cls");
3. double s(double N), что это вообще может значить?
Похожие вопросы
- Помогите с кодом C++
- Помогите с кодом с++
- Помогите с кодом С++
- Помогите пожалуйста решить задачку по C++, напишите полный текст кода пожалуйста
- Помогите дописать код с массивом
- Помогите дописать код с массивом?
- Помогите с кодом с++
- Помогите дописать код с массивом C++
- Помогите дописать код с массивом c++
- Помогите переделать код на Си