Код не работает за пределами определенного значения
Итак, мы получили практическую задачу найти число нулей за факториалом числа. Я подумал о 2 подходах, пожалуйста, скажите, какой бы вы оценили выше.
Итак, теперь к проблеме: первый не отвечает с 13 и далее и отображает одно и то же отрицательное число для каждого числа после 13, Вот код:
#include<iostream> using namespace std; int fact(int n){ float f=1; while(n){ f=f*n; n--; } return f; } int main(){ float temp; int ans, zero=0, num; cout<<"enter a number :"; cin>>num; ans=fact(num); cout<<"factorial of "<<num<<" is "<<ans; temp=ans; for( ; ; ){ ans=ans/10; temp=temp/10; if(ans==temp){ zero++; continue; } else{ break; } } cout<<"number of zero's :"<<zero; }
Второй код ничего не показывает после ввода данных:
#include<iostream> using namespace std; int fact(int n){ float f=1; while(n){ f=f*n; n--; } return f; } int main(){ int two=0, ten=0, fiv=0, ft=0 ,num; float fac; cout<<"enter a number"; cin>>num; fac=fact(num); cout<<"factorial of "<<num<<" is "<<fac; while(num){ if(num%10==0){ ten++; } else if(num%2==0){ two++; } else if(num%5==0){ fiv++; } else{ continue; } num--; } while(two!=0||fiv!=0){ ft++; fiv--; two--; } cout<<"number of zeroes behind the number is "<<ft+ten; }
(я новичок, и если оба работают, то какой из них я должен представить?)
Что я уже пробовал:
изменил int на float, и это должно быть по крайней мере 30 символов, так что ... да