Форум программистов, компьютерный форум CyberForum.ru

Что не так в программе для нахождения факториала? - C++

Восстановить пароль Регистрация
 
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
05.11.2011, 21:01     Что не так в программе для нахождения факториала? #1
Вроде бы всё так, но учитель говорит переделать...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main()
{
int n, res=1;
cout<<"Vvedite chislo N:\n";
cin>>n;
for (int i=0; i<=n; i++)
{
        res=n*i;
}
cout<<res;
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.11.2011, 21:27     Что не так в программе для нахождения факториала? #2
Цитата Сообщение от jock Посмотреть сообщение
int i=0
res сначала умножиться на 0, а затем этот 0 будет умножаться на что-то. В ответе стабильно будет 0.
edward_jonson
 Аватар для edward_jonson
157 / 157 / 25
Регистрация: 23.02.2011
Сообщений: 388
05.11.2011, 21:31     Что не так в программе для нахождения факториала? #3
Программа не считает факториал, у тебя каждая итерация в цикле перезаписывает значение res.
поменяй цикл на
C++
1
2
3
4
for (int i=1; i<=n; i++)
{
                res*=i;
}
Добавлено через 50 секунд
Цитата Сообщение от diagon Посмотреть сообщение
res сначала умножиться на 0, а затем этот 0 будет умножаться на что-то. В ответе стабильно будет 0.
нуля не будет, будет стабильно n*n в ответе
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.11.2011, 21:33     Что не так в программе для нахождения факториала? #4
Цитата Сообщение от edward_jonson Посмотреть сообщение
нуля не будет, будет стабильно n*n в ответе
А, ну да, не разглядел.
Алгоритм вообще никакой тогда.
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
05.11.2011, 21:39     Что не так в программе для нахождения факториала? #5
Вот тебе две функции на вычисление факториала рекурсивно и итеративно:
C++
1
2
3
4
5
6
7
long fact(long n)
{
    long answer;
    if (n == 1) return 1;
    answer = fact(n - 1) * n;
    return answer;
}
C++
1
2
3
4
5
6
7
long fact(long n)
{
    long answer = 1;
    if (n == 1) return answer;
    for (long i = 1; i <= n; ++i) answer *= i;
    return answer;
}
Yandex
Объявления
05.11.2011, 21:39     Что не так в программе для нахождения факториала?
Ответ Создать тему
Опции темы

Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru