Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Вычисляем период дроби

Иногда в форумах возникает вопрос по поводу вычисления периода дроби. Операция конечно проста до безобразия, но думаю, что она имеет право на жизнь в виде FAQ.

//тестовые данные: 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)
{
for(int i=0;i<len-1;i++)//len-1 чтоб не проверять остаток, ввденый на
текущем шаге
{
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 ravna\r\n";
cout<<period[1]<<",";
for(r=2;r<len;r++)
{
cout<<period[r];
}
cout<<"\r\n period raven ";
for(r=pos+1;r<len;r++)
cout<<period[r];

cout<<"\r\n";
delete[] ostatki;
delete[] period;
return 0;
}





<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS