Выручайте очень срочно нужно узнать почему не считает: Найти произведение всех целых...

0 голосов
43 просмотров

Выручайте очень срочно нужно узнать почему не считает:
Найти произведение всех целых чисел от a до 20 (значение a вводится с клавиатуры: 1 <=a <= 20).<br>
#include
using namespace std;
void main()
{
int a;
cin >> a;
int res = 1;
for (int i = a; i <= 20; ++i)<br> res *= i;
cout << a;<br> return ;
}


Информатика (32 баллов) | 43 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

#include
using namespace std;
int main() {
int a;
cin>>a;
long res = 1;
for (int i=a; i<=<strong>20; ++i)
res *= i;
cout<<res<<"\n";<br>return 0;
}

Значение 20 (выделено в программе) вызывает арифметическое переполнение при небольших а. Попробуйте задать a=19 или 18.

(142k баллов)
0 голосов

Если вам надо включать в произведение:
#include
using namespace std;
void main()
{
int a;
cin >> a;
int res = 1;
if (a < 20) 
{
for (int i = a; i <= 20; ++i)</span>
res = i*res;
}
cout << res;<br>
system("pause");
}

Если не надо то измените i<=20 на i<20</span>

(1.8k баллов)