You are on page 1of 23

5.

++
,
. . 5.1 X.

12.1

0.13

-1,5

21.9

-3.7

5.0

121.7

0-
1-
2-
3-
4-
5-
6-
7-

5.1:
:
_ [n];
n , : 0 n 1.
:
int [10];
float g[25];

,
.
,
-1
3
2
0
-8
5
1
-2
0
1
2
3
4
5
6
7
x[0]
x[4]
() :
_ [n][m];
n ( 0 n-1), m ( 0 m-1).
, double m[3][4];
,
:
, a[1][2] a, .
, ,
.
,
float a[5]={1.2,(float)3/4, 5./6,6.1,7.8};

5.1.
- . 5.2.
++ .
// .
#include <stdio.h>
#include <math.h>
int main()
{
float x[10];
int i,n;
printf("\n N=");
scanf("%d",&n);

printf("\n X \n");
for(i=0;i<n;i++)
scanf("%f",&x[i]);
}

5.2: -
// .
#include <stdio.h>
#include <math.h>
int main()
{
float x[10],b;
int i,n;
printf("\n N=");
scanf("%d",&n);
printf("\n X \n");
for(i=0;i<n;i++)
{
scanf("%f",&b);
x[i]=b;
} }
// .
float x[10];
int i,n;
cout<<"\n N=";
cin>>n;
cout<<"\n Vvedite massiv X \n";
for(i=0;i<n;i++)
cin>>x[i];

5.2.
- . 5.3.

i=0;i<N;i++

x[i]

5.3: -
++ .
\t \n.
printf("\n X\n");
for(i=0;i<n;i++)
printf("%g\t",x[i]);
printf("\n");
cout<<"\n Massiv X \n";
for(i=0;i<n;i++)
cout<<x[i]<<"\t";

5.3.
5.3.1
X, n . .

. S
,
X. - . 5.4.

5.4: -

C++.
for(s=i=0;i<N;i++)
s+=X[i];
//
//for(s=i=0;i<N;s+=X[i],i++);

5.3.2
X, n . .
, ,
, i .
- . 5.5.

5.5:

C++.
for(P=1,i=0;i<n;i++)
P*=X[i];

5.3.3.
. max
, nmax . ,
nax,
nmax ( ). , ,
. ,
max, nmax i.
. 5.6.

5.6:

++.
for(max=X[0],nmax=0,i=1;i<n;i++)
if (x[i]>max)
{
max=x[i]; nmax=i;

}
.
() ,
, .
, .
for(i=k=0;i<n;i++)
// ,
if (x[i]>0)
{
// 1.
k++;
// ,
// ,
if (k==1) {min=x[i];nmin=i;}
//
else if (x[i]<min)
{
min=x[i]; nmin=i;
}
}

5.3.4.
, ,
. .
x[3]=x[4];x[4]=x[5];x[5]=x[6];
. 5.7.

5.7:

- M X, N
. 5.8.

++.
for(i=M;i<N-1;i++)
x[i]=x[i+1];
N--

5.8: -

, (
1) , M,
.
5.1. 4- 8- N . -
. 5.9.

5.9: - 5.1
- ++.
for(j=1;j<=5;j++,N--)
for(i=3;i<=N-2;i++) X[i]=X[i+1];
5.1 .
int main()
{
floxt x[20];
int i,j,n;
cout<<"n=";
cin>>n;
cout<<"Massiv x\n";
for(i=0;i<n;i++)
cin>>x[i];
for(j=1;j<=5;j++)
{
for(i=3;i<=n-2;i++)
x[i]=x[i+1];
n--;
}
cout<<"Massiv x\n";
for(i=0;i<n;i++)
cout<<"x("<<i<<")="<<x[i]<<"\t";
cout<<endl;
return 0;
}

5.3.5.
1 - . 5.10.
. n
.
, (n-1)- ,
1 - > <.

. (n-2)-
. n-1 ,
.

5.10:
++
int main()
{
float b,max,a[20];
int i,j,n,k,nom;
cout<<"n=";
cin>>n;
cout<<"Massiv a\n";
for(i=0;i<n;i++)
cin>>a[i];
k=n;
for(j=0;j<=k-2;j++)
{
max=a[0];nom=0;
for(i=1;i<k;i++)
if (a[i]>max)
{
max=a[i];
nom=i;
}
b=a[k-1];
a[k-1]=a[nom];
a[nom]=b;

k--;
}
cout<<"Massiv a\n";
for(i=0;i<n;i++)
cout<<"a("<<i<<")="<<a[i]<<"\t";
cout<<endl;
return 0;
}
.
. ,
- ,
, .

.
.
, ,
. , ,
i (i+1) , .
(n-1)- .
, (n-1)- , ,
.
(n 2)- . , . 2 . 5.11.

5.11:

2 - > <.

int main()
{
float b,max,a[20];
int i,j,n,k,nom;
cout<<"n=";
cin>>n;
cout<<"Massiv a\n";
for(i=0;i<n;i++)
cin>>a[i];
for(j=1;j<=n-1;j++)
for(i=0;i<=n-1-j;i++)
if (a[i]>a[i+1])
{
b=a[i];
a[i]=a[i+1];
a[i+1]=b;
}
cout<<"Massiv a\n";
for(i=0;i<n;i++)
cout<<"a("<<i<<")="<<a[i]<<"\t";
cout<<endl;
return 0;
}

5.3.6. A B
- . 5.12

5.12:

++.
int main()
{
float a[20],b[20];
int i,n,k;
cout<<"n=";
cin>>n;
cout<<"Massiv a\n";

for(i=0;i<n;i++)
cin>>a[i];
for(k=i=0;i<n;i++)
if (a[i]>0)
b[k++]=a[i];
cout<<"Massiv b\n";
for(i=0;i<k;i++)
cout<<"b("<<i<<")="<<b[i]<<"\t";
cout<<endl;
return 0;}

5.3.7.
(N) , b,
. - .5.13.

5.13:
int main()

float x[20],b;
int i,j,n;
cout<<"n=";
cin>>n;
cout<<"Massiv x\n";
for(i=0;i<n;i++)
cin>>x[i];
cout<<"b=";
cin>>b;
if (b>=x[n-1])
x[n]=b;
else
{
for(i=0;i<n;i++)
if (x[i]>b)
{j=i;break;}
for(i=n;i>j;i--)
x[i]=x[i-1];
x[j]=b;
}
n++;
cout<<"Massiv x\n";
for(i=0;i<n;i++)
cout<<"x("<<i<<")="<<
x[i]<<"\t";
cout<<endl;
return 0;}

5.4. ,
, ++ ,
. , ,
.
++ ,
.

5.4.1. ++
, ,
. ,
.
:
type * name;
name
, , . ()
type.
:
int *i;
() i. int.
i int.
float *x,*z;
x z, float.

5.4.2. * &
& *. &
.

, a :
float a;

adr_a=&a;
adr_a a, adr_a
float. :
float *adr_a;
* , &.
, .
,
a=*adr_a;
a , adr_a.

5.4.3.
. ,
.

#include <stdio.h>
#include <math.h>
int main()
{
float PI=3.14159,*p1,*p2;
p1=p2=&PI;
printf(" p1=%p *p1=%g\n",p1,*p1);
printf(" p2=%p *p2=%g\n",p2,*p2);
}
: PI=3.14159
float p1 p2. p1 p2 PI. printf
p1 p2 , .
%p. p1
p2 ,
PI=3.14159.
p1=0012FF7C *p1=3.14159
p2=0012FF7C *p2=3.14159
,
, .
void *.
.
#include <stdio.h>
#include <math.h>
int main()
{
float PI=3.14159,*p1;
double *p2;
// p1 PI
p1=&PI;
// double ,
// float.
p2=(double *)p1;

printf(" p1=%p *p1=%g\n",p1,*p1);


printf(" p2=%p *p2=%e\n",p2,*p2);
}
p1=0012FF7C *p1=3.14159
p2=0012FF7C *p2=2.642140e-308
p1 p2 , , ,
. , *float 4 ,
*double 8 . p2=(double *)p1; *p2
: , p1, 4 .
*p2 *p1.
?
#include <stdio.h>
#include <math.h>
int main()
{
double PI=3.14159,*p1;
float *p2;
p1=&PI;
p2=(float *)p1;
printf(" p1=%p *p1=%g\n",p1,*p1);
printf(" p2=%p *p2=%e\n",p2,*p2);
}
p2=(double *)p1; *p2 :
, p1, 4 .
*p2 *p1.
.
. , *
, , .

float *p;
p , *p ,
p.

float p;
&p, p
.

5.4.4.
:
, ;
, .
.
.
double *p1;
float *p2;
int *i;

p1++
p2++;
i++;
}
p1++ 8, p2++
4, i++ 2.
:
,
( p1 double, p2 float, i int);
, ,
.
p1=p1+n, n ;
p1+n n- , p1 .

5.4.5. .
.
( 1)
.
:
1. (, p) .
2. , , calloc, malloc
new . p
(0-
), p+1
(1- ), & , p+i i- .
, .
i- p
*(p+i) p[i].
3. ,
free(), delete.
,
calloc, malloc, realloc free new delete.
malloc ,
. malloc
(void *) . malloc

void *malloc(n);
n ,
NULL, ,
.
malloc .
.
#include <iostream>
#include <malloc.h>
using namespace std;
int main()
{
int i,n;
float *a,s;

cout<<"n=";
cin>>n;
// .
a=(float *)malloc(n*sizeof(float));
cout << "Vvedite massiv A";
for(i=0;i<n;i++)
// cin>>a[i];
cin>>*(a+i);
for(s=0,i=0;i<n;i++)
//s+=a[i];
s+=*(a+i);
cout << "S="<<s;
// .
free(a);
return 0;
}
malloc calloc.
. :
void *calloc (num, size);
calloc num size
NULL .

calloc.
#include <iostream>
#include <malloc.h>
using namespace std;
int main()
{
int i,n;
float *a,s;
cout<<"n=";
cin>>n;
// .
a=(float *)calloc(n,sizeof(float));
cout << "Vvedite massiv A";
for(i=0;i<n;i++)
cin>>*(a+i);
for(s=0,i=0;i<n;i++)
s+=*(a+i);
cout << "S="<<s;
// .
free(a);
return 0;
}
realloc , :
char *realloc(void *p, size);
, p,
size. ,
. p
NULL, realloc malloc.
free.

void free( void *p);


, , p
,
calloc, malloc realloc.
++ new.

new.
#include <iostream>
using namespace std;
int n;
float *a;
cin>>n;
a=new float[n];
int main()
{
int i,n;
float *a,s;
cout<<"n=";
cin>>n;
// .
a=new float[n];
cout << "Vvedite massiv A";
for(i=0;i<n;i++)
// cin>>a[i];
cin>>*(a+i);
for(s=0,i=0;i<n;i++)
//s+=a[i];
s+=*(a+i);
cout << "S="<<s;
// .
delete [] a;
return 0;
}
. ,
, . ++
, .

.
.

5.5.
5.2. ,
.
- . 5.14. Fl 1,
, , 0
. k
, max

.
int main()
{
int *x,max,i,k,fl,n,b;
cout<<"\n n=";
cin>>n;

x=new int[n];

K=1
Fl=0
i=0,n-2
-

k1

Xi = 1
&&
X i+1 = 1

Fl=0

k>max

Max=k Fl=1
k=1

k=k+1

Max=k
k=1

Fl=0


1
+

k>max

max=k

max

5.14: - 5.2
for (i=0;i<n;i++)
{
cout<<"\n x("<<i<<)=",i);
cin>>x[i];
}

for (k=1,fl=0,i=0;i<n-1;i++)
{
if (*(x+i)==1 && *(x+i+1)==1)
k++;
else if (k!=1)
{
if (!fl)
{
max=k;
fl=1;
k=1;
}
else if (k>max)
max=k;
k=1;
}
}
if (fl==0)
cout<<"V massive net seriy iz 1\n";
else
{
if (k>max)
max=k;
cout<<endl<<max;
}
delete [] x;
return 0;
}
5.2.
. .
main()
:
bool prostoe(int n), n (. .
5.15);
void udal(int *x, int m, int *n)
m x
n (. . 5.16);
void upor(int *x, int N, bool pr=true)

( pr=true) ( pr=false) (. . 5.17);
float sr_arifm(int x[], int n)
x n (. . 5.18).
. 5.19 - 5.3.

prostoe(n)
pr=true,i=2;i<n/2;i++
-

n%i=0
+

pr=false

return pr

5.15: - prostoe

udal(x,m,n)
i=m;i<=n-2;i++
x[i]=x[i+1]

n--

5.16: - udal

5.17: -
sr_arifm

5.18: - upor

5.19: - 5.3

C++.
#include <iostream>
#include <malloc.h>
using namespace std;
// .
float sr_arifm(int *x, int n)
{
int i; float s=0;
for(i=0;i<n;s+=x[i],i++);
if (n>0) return(s/n);
else return 0;
}
// :
bool prostoe(int n)
{
bool pr; int i;
for(pr=true,i=2;i<=n/2;i++)
if(n%i==0) {pr=false;break;}
return(pr);
}
// .
void udal(int *x, int m, int *n)
{
int i;
for(i=m;i<*n-1;*(x+i)=*(x+i+1),i++);
--*n;
realloc((int *)x,*n*sizeof(int));
}
// .
void upor(int *x, int n, bool pr=true)
{
int i,j,b;
if (pr)
{
for(j=1;j<=n-1;j++)
for(i=0;i<=n-1-j;i++)
if (*(x+i)>*(x+i+1))
{
b=*(x+i);
*(x+i)=*(x+i+1);
*(x+i+1)=b;
}
}
else
for(j=1;j<=n-1;j++)
for(i=0;i<=n-1-j;i++)
if (*(x+i)<*(x+i+1))
{
b=*(x+i);
*(x+i)=*(x+i+1);
*(x+i+1)=b;
}
}

int main()
{
int *a,n,i; float sr;
cout<<"n="; cin>>n;
// .
a=(int *)calloc(n,sizeof(int));
// .
cout << "Vvedite massiv A\n";
for(i=0;i<n;i++) cin>>*(a+i);
// .
sr=sr_arifm(a,n);
//
.
cout<<"sr="<<sr<<"\n";
// .
for(i=0;i<n;)
{
if(prostoe(*(a+i))&& *(a+i)<sr)
//
,
udal(a,i,&n);
// ,
else i++;
//, .
}
cout << "Massiv A\n";
// .
for(i=0;i<n;i++) cout<<*(a+i)<<"\t";
cout<<"\n";
upor(a, n);
// .
cout << "Upor Massiv A\n";
// .
for(i=0;i<n;i++)cout<<*(a+i)<<"\t";
cout<<"\n";
free(a);
// .
return 0;
}

n=10
Vvedite massiv A
6 20 5 3 10 301 17 11 6 8
sr=38.7
Massiv A
6
20
10
301 6
8
Upor Massiv A
6
6
8
10
20
301