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

нахождение факториала - C++

Восстановить пароль Регистрация
 
romster
 Аватар для romster
5 / 3 / 1
Регистрация: 25.11.2011
Сообщений: 78
15.02.2012, 21:08     нахождение факториала #1
Вот, написал программу, но почему-то ответ неправильный постоянно выходит, подскажите, что я делаю не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include<cmath>
 
using namespace std;
 
int main()
{int a,c=1,i;
  cout<<"VVerH ";
  cin>>a;
  for (i=0;i<a;++i)
  {(a=a-i)&&(c=c*a);};
  cout<<c;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.02.2012, 21:15     нахождение факториала #2
Цитата Сообщение от romster Посмотреть сообщение
C++
1
{(a=a-i)&&(c=c*a);}
это что по вашему?
romster
 Аватар для romster
5 / 3 / 1
Регистрация: 25.11.2011
Сообщений: 78
15.02.2012, 21:17  [ТС]     нахождение факториала #3
Цитата Сообщение от Jupiter Посмотреть сообщение
это что
Ну это то же самое, что и
C++
1
2
3
 for (int i=0;i<a;++i)
  {a=a-i;
  c=c*a;}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.02.2012, 21:29     нахождение факториала #4
Цитата Сообщение от romster Посмотреть сообщение
Ну это то же самое, что и
Не совсем, но самая главная ошибка, влияющая на результат следующая:
Вы организуете цикл
C++
1
for (int i=0;i<a;++i)
и в самом цикле уменьшаете a (вот это и есть ошибка).

Цитата Сообщение от romster Посмотреть сообщение
C++
1
2
{a=a-i;
 c=c*a;}
можно просто заменить на
C++
1
c=c*(i+1);
romster
 Аватар для romster
5 / 3 / 1
Регистрация: 25.11.2011
Сообщений: 78
15.02.2012, 21:29  [ТС]     нахождение факториала #5
Блиииин!!! Это правда, я уменьшаю значение а, !!!! Спасибо
Ланселот
6 / 6 / 1
Регистрация: 30.08.2011
Сообщений: 32
15.02.2012, 21:34     нахождение факториала #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
#include <conio.h>
 
using namespace std;
 
int main()
{int a,c=1,i;
  cout<<"VVerH ";
  cin>>a;
    for (i=1;i<=a;i++)// 0!==1
        c=c*i;
  cout<<c;
  getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 21:43     нахождение факториала
Еще ссылки по теме:

Нахождение факториала C++
C++ C++ нахождение факториала числа n с вводом из файла
C++ Поменять нахождение min среди двумерного массива, на нахождение min в каждой сточке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
15.02.2012, 21:43     нахождение факториала #7
Цитата Сообщение от Jupiter Посмотреть сообщение
(a=a-i)&&(c=c*a);}
это что по вашему?
Цитата Сообщение от romster Посмотреть сообщение
Ну это то же самое, что и
C++
1
2
3
for (int i=0;i<a;++i)
 {a=a-i;
 c=c*a;}
совсем не то же самое
при a==i значение в первой скобке 0 "ложь" вторая скобка не будет выполнятся
а во второй записи
c=c*a
выполнится всегда
ну про ошибку алгоритма уже сказали
Yandex
Объявления
15.02.2012, 21:43     нахождение факториала
Ответ Создать тему
Опции темы

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