Вычисление периода дроби

Вообще, вычисление периода дроби - очень простая операция, но у новичков может вызвать затруднения. Привожу код:

// Тестовые данные: 12/13 
// Ввод данных
/*
output
Vvedite chislitel
12

vvedite znamenatel
13
drob ravna
0,923076
period raven
923076
*/

#include "stdafx.h"
#include "iostream.h"

// объявление переменных
int m,n;
int* ostatki;
int* period;
unsigned int len;

// проверка остатков
int IsInOstatki(int ost,int len)
{
//len-1 чтоб не проверять остаток, ввденый на текущем шаге
for(int i=0;i<len-1;i++)
{
if(ostatki[i]==ost) return i;
}
return 0;
}
// Главная функция вычисления периода дроби
int main(int argc, char* argv[])
{
cout<<"Vvedite chislitel drobi:\r\n";
cin>>m;
cout<<"\r\nvvedite znamenatel drobi:\r\n";
cin>>n;
ostatki=new int[n+1];
period=new int[n+1];

int d=m,q=n;
int r,pos;
len=1;

do
{
r=d%q;
ostatki[len]=r;
d/=q;
period[len]=d;

d=10*r;
len++;
}
while((pos=IsInOstatki(r,len/*сколько остатков помещено в массив
остатков*/))==0);

// вывод результатов
cout<<"drob= \r\n";
cout<<period[1]<<",";
for(r=2;r<len;r++)
{
cout<<period[r];
}
cout<<"\r\n period= ";
for(r=pos+1;r<len;r++)
cout<<period[r];

cout<<"\r\n";

// освобождение ресурсов
delete[] ostatki;
delete[] period;

return 0;
}
 
« Предыдущая статья   Следующая статья »