. , , , . , . . .
, .. . , .
. , .
, . - *.
, x y:
void zam(int *x, int *y)
{
int t = *x;
*x = *y;
*y = t;
}
:
void zam (int*, int*);
void main (void)
{
int a=2, b=3;
printf(" a = %d, b = %d\n", a, b);
zam (&a, &b);
printf(" a = %d, b = %d\n", a, b);
}
, ..
a = 2, b =3
a = 3, b =2
- , const, :
void f1(int, const double);
const , . , , , .. , , .
typedef
, , , typedef:
typedef _;
, , :
typedef unsigned int UINT; UINT ;
typedef char M _ s [101]; M _ s , , 100 .
UINT i, j; unsigned int;
M_s str[10]; 10 , 100 .
, .
. , (, , ).
|
|
.
1. , . :
(* -)( );
.. , , . , , .
,
double (* p_ f)(char, double);
, p_f, , double : , .
2. , - , :
- = ID_;
, : double f1(char, double);
p_f = f1;
p_ f .
3. :
(*-)( );
- ( );
:
ID_( );
:
(*-)( );
- ( );
, p_f .
f 1 :
f1(z, 1.5); (ID);
(* p_f)(z, 1.5); ;
p_f(z, 1.5); ID .
, , .
: sum, fun (x). , . , :
.
f 1 f 2 . typedef, : p_ f, , double double.
p_ f.
:
...
typedef double (*p_f)(double);
double sum(p_f, int, double); //
|
|
double f1(double);
double f2(double);
void main(void)
{
double x, s1, s2;
int n;
puts (" - n x: ");
scanf (" %d %lf ", &n, &x);
s1 = sum (f1, 2*n, x);
s2 = sum (f2, n, x);
printf("\n\t N = %d, X = %lf ", n, x);
printf("\n\t 1 = %lf\n\t 2 = %lf ", s1, s2);
}
/* , typedef */
double sum(p_f fun, int n, double x) {
double s=0;
for(int i=1; i<=n; i++)
s+=fun(x);
return s;
}
//
double f1(double r) {
return r/5.;
}
//
double f2(double r) {
return r/2.;
}
.
:
void main(void)
{
int vect[20];
fun(vect);
}
void fun(int v[ ]) {
}
, .. v[ ] *v. :
void fun(int *v) {
}
, . . , . , , :
void fun(int v[20]) {
...
}
, .. , (-) strlen.
:
,
void f1(int m[3][4]) {
int i, j;
for (i = 0; i<3; i++)
for (j = 0; j<4; j++)
... //
}
, , , . , :
void main(void)
{
int mas [3][3]={{1,2,3}, {4,5,6}};
fun (mas);
}
void fun(int m[ ][3]) {
}
, , ( ), , :
void fun(int**, int, int);
void main()
{
int **mas, n, m;
...
fun (mas, n, m);
}
void fun(int **m, int n, int m) {
... //
}
( ) , .
, .
. , , . () . , , .. .
, . , . , .
|
|
.
1. .
2. - , , , , .
3. .
1. a b, , .
:
...
double proc(double, double);
void main (void)
{
double a,b;
puts( a, b: );
scanf(%lf %lf, &a, &b);
printf(\n : %lf, proc(a,b));
}
//
double proc(double a, double b) {
if (a< b) return proc (b, a);
else return a/b;
}
a b, , , proc .
, proc , , .
2. k ( ).
double fact (int k) {
if (k < 1) return 1;
else
return k * fact (k 1);
}
1 (0! = 1), 1 . k
k * (k 1) * (k 2) *... * 3 * 2 * 1 * 1
1 k < 1 k = 0, .. fact fact (0). 1 , , , : 1 * fact (1 1).
3. f (x) = 0 [ , b ] eps. , , .. eps > 0, f (a)* f (b) < 0, b > , [ , b ] . :
...
int counter = 0; //
//
double Root(double f(double), double a, double b, double eps) {
double fa = f(a), fb = f(b), c, fc;
if (fa * fb > 0) {
printf("\n a,b !");
exit(1);
}
= ( + b) / 2.0;
fc = f(c);
if (fc == 0.0 || fabs(b a) < = eps) return c;
return (fa * f < 0.0)? Root(f, a, c, eps): Root(f, c, b, eps);
}
//
void main()
{
double x, a=0.1, b=3.5, eps=55;
double fun(double); //
x = Root (fun, a, b, eps);
|
|
printf ("\n = %d. ", counter);
printf ("\n = %lf. ", x);
}
// fun
double fun (double x) {
counter++; //
return (2.0/x * s(/2.0));
}
a, b eps , .
:
= 54.
= 3.141601.
, , , . Root f (a) f (b), .
, . , , , . , , .
, , .
, , .