Как сделать факториальную программу на С++

Я новичок на этом сайте; на самом деле это мой первый вопрос. Поэтому, если я задаю этот вопрос в неправильном контексте, пожалуйста, сообщите мне, чтобы я мог внести коррективы. У меня есть программа, созданная в Visual Studio 2010, позволяющая пользователю вводить целое число от 1 до 10. Этот пользователь нажимает кнопку, которая, в свою очередь, должна вычислять и отображать факториал целого числа в текстовом поле. Я думал, что все выглядит правильно, но в текстовом поле ничего не появляется.

Следующий код - это то, что я использовал:

#pragma endregion
        private: System::Void btnFactorial_Click(System::Object^  sender, System::EventArgs^  e) 
        {
            int n;
            int nfact = 1;
            Int32::TryParse(txtNum->Text, n);
            if (n > 0)
            {
                for (int i = 1; i <= n; i++)
                    nfact *= i;
                txtResult->Text = nfact.ToString();
            }
            else
                MessageBox::Show ("Please enter a value > 0");      
        }

        private: int Factorial (int n)
        {
            if (n == 0)
                return 1;
            else
                return n * Factorial (n-1);
        }
    };
}

Могу ли я попросить помощи относительно того, что я делаю неправильно здесь?


person New Programmer    schedule 31.10.2012    source источник
comment
Кажется, вы нигде не звоните в Факториал. Во всяком случае, не от btnFactorial.   -  person imreal    schedule 01.11.2012
comment
пройти через отладчик. F10 переходит на следующую строку...   -  person Mitch Wheat    schedule 01.11.2012
comment
Спасибо, сейчас попробую. Я не получаю никаких ошибок или предупреждений, и форма загружается правильно, чтобы пользователь мог ввести целочисленное значение, но ничего не происходит, когда я нажимаю кнопку.   -  person New Programmer    schedule 01.11.2012
comment
Мелочь для того, что вы делаете, может быть, но 0! является действительным.   -  person Craig Wright    schedule 01.11.2012
comment
не делает этот код: txtResult->Text = nfact.ToString(); вызвать значение в текстовое поле?   -  person New Programmer    schedule 01.11.2012


Ответы (1)


Вам нужно где-то вызвать свою собственную функцию. Замените это:

for (int i = 1; i <= n; i++)
                nfact *= i;

и напишите это:

nfact = Factorial(n);
person imreal    schedule 01.11.2012
comment
Я попытался сделать это и получил тот же результат; ничего не появляется в текстовом поле, которое должно показывать значение факториала целого числа, введенного пользователем в первое текстовое поле. - person New Programmer; 01.11.2012
comment
Да, который не показывает мне ошибок. Разве что есть другой способ отладки и я что-то не так делаю. Я очень новичок в использовании Visual Studio 2010. - person New Programmer; 01.11.2012
comment
Извините, есть много вещей, которые могут быть неправильными где-то еще. В качестве последней попытки замените int n; для Int32 n; и на самом деле; для Int32 nfact; - person imreal; 01.11.2012
comment
Я понял. По какой-то причине объект btnFactorial_Click_1 работал неправильно. Поэтому я снова дважды щелкаю по нему, чтобы повторно задействовать его, скопировал существующий код, удалил старый объект щелчка, и он работает. Спасибо всем. - person New Programmer; 01.11.2012