Информатика и технология программирования
содержат итерационные циклы, используемые
Примеры 1- 5 содержат итерационные циклы, используемые в приближенных вычислениях. Содержательно определить смысл алгоритма и назначение
указателя на функцию. В остальных примерах определить результат.
//------------------------------------------------------bk56-04.cpp
double F1(double a, double b, double (*pf)(double))
{ double m;
if ((*pf)(a) * (*pf)(b) > 0 )return(a);
while ( b-a > 0.0001 )
{
m = (b + a)/2;
if ((*pf)(a) * (*pf)(m) < 0) b=m; else a=m;
}
return a;
}
//------------------------------------------------------- 2
double F2(double x, double s0, double (*pf)(double,int))
{ double s; int n;
for (n=1, s=0.0; fabs(s0) > 0.0001; n++)
{ s += s0; s0 = s0 * (pf)(x,n); }
return s; }
double ff(double x, int n) { return( x/n); }
void main()
{ double x,y; y = F2(x, 1, ff); }
//------------------------------------------------------- 3
double F(double a, double b, double (*pf)(double))
{ double dd;
for (dd = 0.0001; b-a > dd;)
if ((*pf)(a) > (*pf)(b)) b -=dd; else a +=dd;
return a;
}
//------------------------------------------------------- 4
double F4(double x, double (*pf)(double))
{ double x1;
do {
x1 = x; x = (*pf)(x1) + x1;
if (fabs(x) > fabs(x1)) return(0.0);
}
while (fabs(x1-x) > 0.0001);
return x;
}
//------------------------------------------------------- 5
double F5(double a, double b, int n, double(*pf)(double))
{ double s,h,x;
for (s=0., x=a, h = (b-a)/n; x <=b; x+=h)
s += (*pf)(x) * h;
return s;}
extern double sin(double);
void main() { cout << F5(0.,1.,40,sin)); }
//------------------------------------------------------- 6
void ( *P(void(*ff)(void)))(void) { return ff; }
void foo(void){ cout << "I'm foo" << endl; }
void main(){(*P(foo))();}
//------------------------------------------------------- 7
int ( *P(int(*ff)(int)))(int) { return ff; }
int inc(int n){ return n+1; }
void main(){ cout << (*P(inc))( 5);}
//------------------------------------------------------- 8
typedef void (*PF)(void);
PF P(PF ff) { return ff; }
void foo(void){ cout << "I'm foo" << endl; }
void main(){(*P(foo))();}
//------------------------------------------------------- 9
typedef int (*PF)(int);
PF P(PF ff) { return ff; }
int inc(int n){ return n+1; }
void main(){ cout << (*P(inc))( 7);}
//------------------------------------------------------ 10
double P(double(*ff [])(double) ,int n, double x )
{ return (*ff [n])(x); }
double(*FF [])(double) ={sin,cos,tan};
void main(){ cout << P( FF,1,0.5);}
//------------------------------------------------------ 11
typedef double(*PF)(double) ;
double P( PF ff [],int n, double x )
{ return (*ff [n])(x); }
PF FF []={sin,cos,tan};
void main(){ cout << P( FF,2,1.5);}
Содержание
Назад
Вперед
Fore
kc
.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий