Автор работы: Пользователь скрыл имя, 05 Декабря 2010 в 09:49, Не определен
зачетная работа
int int_shild()
{
char a[2]={0},x=0;
int q=0, i=0;
do {
x=_getch();
if (x>=48 && x<=57 && i<2)
{printf ("%c",x);
a[i]=x;
i++;}
if (x==8 && i>0)
{printf ("%c %c",8,8);
i--;
a[i]=0;}
q=atoi (a);
}while (x!=13 || q==0 || i==0);
return q;
}
//***********************
//***********************
//Функция защиты действительных чисел
//***********************
double protect(double maxnum,double minnum)
{const int max=17;
int g=0, // флажек точки
k=0,// флажек "е"
m=0, // счетчик знаков до запятой
i=0,t; // счетчик знаков
char a[max]={0}, //числовой массив на 13 символов
x=0; // вводимое значение строки
double q=0; // переменная , отвечающая за выводимый результат
do {
t=i-1;
x=_getch();
if (x>=48 && x<=57 && i<max && m<8) //если ввeдены числа
{printf ("%c",x);
a[i]=x;
m++;i++;}
if (x==8 && i>0) // если нажата <BACKSPACE>
{
printf ("%c %c",8,8);
m--; i--;
if (a[i]=='.') {g=0;m=i;}
if (a[i]=='e') {k=0;t--;}
a[i]=0;
}
if (x==46 && i<max && g==0) // если нажата точка
{printf ("%c",x);
a[i]=x;
i++; m=0;g=1;}
if (x==45 && i==0) // если нажата клавиша "-"
{printf ("%c",x);
a[i]=x;
++m;++i;}
if (x==45 && a[t]=='e')
{
printf ("%c",x);
a[i]=x;
i++;m++;
}
if (x==101 && i>0 && i<max-1 && k==0 )//если нажата "е"
{
printf("%c",x);
a[i]=x;
m++; i++; k=1;
}
}
while (x!=13 || i==0); // делать пока не нажата клавиша <ENTER>
q=atof (a);//преобразуем массив
if(fabs(q)<minnum || fabs(q)>maxnum)
{ a[i]='\0';
for (int j=i;j>0;j--)
{ printf("\b \b");}
return protect(maxnum,minnum);// возвращаем прверку на условие вновь, если число выходит за рамки границ
}
else
return q; //возвращаем значение
}
Рисунок 1 - Схема функции main( )
Рисунок
2 - Схема функции massiv( )
Рисунок 3 - Схема функции void func1(int n, double *s)
Рисунок
4 - Схема функции int_shild()