Member 13899806 Ответов: 1

Как получить доступ к переменной вне цикла?


#include<iostream>
using namespace std;
int fact(int n)
{
   int i=5;
   int c=n/i;
   while(c!=0)
   {
    i=i*i;
    c+=n/i;
    return c;
   }
   return 0; 
}
int main(){
    long t;
    unsigned int a[100001],x[100001];
    cin>>t;
    for(int i=0;i<t;i++)
    {
        cin>>a[i];
        int c=a[i];
        x[i]=fact(c);
    }
    for(int i=0;i<t;i++)
    {
    cout<<x[i]<<endl;
    }
}

Проблема состоит в том, чтобы вывести конечные нули в факториале набора чисел, и числа могут быть до 100000. Но я, кажется, получаю неправильный ответ для чисел с 4 цифрами или выше.

Что я уже пробовал:

Я попытался просто поместить оператор return c вне цикла, но это приводит к тому, что код переходит в бесконечный цикл.

KarstenK

лучше сделать больше выходных данных, чтобы пользователь видел состояние вычислений.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Ваша факториальная процедура не выглядит корректной, и цикл while будет делать только одну итерацию. Факториал N равен 1*2*3 вам также нужно избавиться от этих двух огромных массивов, они не служат никакой цели. Логика вашей программы должна быть такой:

Get number of tries
DO
    Get next number
    Calculate the factorial
    Display the number, and the factorial
    Set number of tries = (number of tries - 1)
    If number of tries is zero, break
    Repeat
END DO