Следующий код вычисляет факториал входного целого. Я запустил его в Codeblocks для 2 тестовых случаев - 9 & 2 и получил правильный результат. Для того же входа идеал выводит факториал 2 как 6, но он выводит 9 факториалов правильно. Что происходит не так? Кроме того, когда я делаю b статическим массивом размером 200 вместо динамического, ideone дает правильный вывод.Различные выходные данные в идеоне и кодовые блоки для одного и того же ввода (малые факториалы)
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int t,i,j,k,temp,carry=0,len=0;
scanf("%d",&t);
int *b=new int;
int *a=new int[t];
for (i=0;i<t;i++){
scanf("%d",&a[i]);
}
for (i=0;i<t;i++){
len=0;
b[0]=1;
for (j=1;j<=a[i];j++){
carry=0;
for (k=0;k<=len;k++){
temp=b[k]*j+carry;
b[k]=temp%10;
carry=temp/10;
}
while (carry!=0){
b[++len]=carry%10;
carry/=10;
}
}
for (j=len;j>=0;j--){
printf("%d",b[j]);
}
printf("\n");
}
return 0;
}
'междунар * б = новый INT;' - Почему вы используете указатель здесь? Почему бы просто не объявить 'int'? – PaulMcKenzie
Кроме того, я не понимаю, что вы вводите в свою программу. Вы говорите, что вы вводите '9' и' 2', но ваша программа показывает, что 'scanf' вызывается в цикле. Почему бы просто не жестко закодировать данные в программе, чтобы никто не запутался? – PaulMcKenzie