2014-01-07 3 views
0

Я изучаю C++. Вот кодовый счет факториал (silnia). Liczba означает номер.Simple C++ script - Factorial - Errors

#include <iostream> 

using namespace std; 

int _main() 
{ 
    int silnia; 
    int n; 
    if (n == 0) return 1; 
    else; 
    return n * silnia(n-1); 

    int liczba; 
    cout << "Podaj liczbe: "; 
    cin >> liczba; 
    cout << liczba << "! = " << silnia(liczba) << endl; 
    return 0; 
} 

Однако я до сих пор стало сообщение об ошибке:

main.cpp: In function 'int _main()': 
main.cpp:9:20: error: 'silnia' cannot be used as a function 
return n*silnia(n-1); 
        ^
main.cpp:14:42: error: 'silnia' cannot be used as a function 
cout << liczba << "! = " << silnia(liczba) << endl 

Что может быть проблема?

+0

Сообщение об ошибке очень ясно. в чем именно проблема?: – 0x499602D2

+0

Не думаю, что вам нужен StackOverflow, чтобы ответить на это. Google должно быть более чем достаточно, чтобы найти рабочий пример того, чего вы пытаетесь достичь. Хорошая кошка, кстати ... –

+0

Вы пытаетесь использовать silnia как функцию. Silnia - целочисленная переменная. Вероятно, вы захотите написать код, который вычисляет значение silnia внутри функции, называемой silnia. –

ответ

0
silnia(liczba) 

Похоже, вы пытаетесь «назвать» целое число silnia. Именно то, что говорит ваше сообщение об ошибке. Я не уверен, что вы пытаетесь сделать в этой строке.

+0

Итак, как его можно улучшить? Я нахожусь в начале обучения и поиска в Интернете для решения, но почему-то я до сих пор не понимаю эту ошибку :( – pgr

+0

@ PawełGranat Знаете ли вы, как правильно создавать функции? – 0x499602D2

+0

Подсказка: вы уже сделали это с 'main'. – chris

1

удалить эту часть из главного:

int silnia; 
int n; 
if (n == 0) return 1; 
else; 
return n * silnia(n-1); 

положить эту функцию вне основной функции

int silnia(int a) 
{ 
if(a==0) return 1; 
else return silnia(a-1)*a; 
} 
+0

Хорошо спасибо всем за помощь! Я сделал анализ этого кода, затем похожее приложение, все работает отлично :) – pgr