Загрузка...

Задачи С++ (первый курс) — ответы. Циклические алгоритмы. Часть 2.


3-030.cpp

//dano natural’noe chislo N i dejstvitel’noe A
//najti summu N chlenov ryada S
// 1 1 1
// S = ——— + ——— + … + ———
// pow(a,2) pow(a,4) pow(a,2n)

#include <stdio.h>
#include <conio.h>


void main()

{
clrscr();
unsigned i,n;
float a,s=1,z=1;
printf(» 1 1 1\n S = ——— + ——— + … + ———\n pow(a,2) pow(a,4) pow(a,2n)\nVvedite natural’noe chislo N i dejstvitel’noe A> «);
scanf(«%u%f»,&n,&a);
for(i=1;i<=n;i++)
{
z=z*a*a;
s*=(1.0/z);
}
printf(» S=%.3f»,s);
getch();
}

3-075.cpp

//predlozhit’ pol’zovatelyu s pyati popytok ugadat’ zagadannoe chislo (nE[1..10])

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
void main()

{
clrscr();
randomize();
int n,m,i;
n=random(10)+1;
printf(«\tUgadajte chislo ot 1 do 10 s pyati popytok\n»);
for(i=1;i<=5;i++)
{
printf(«\nPopytka %i> «,i);
scanf(«%i»,&m);
if(m==n)
{
printf(«\nVerno! Vy spravilis’ za %i popytok»,i);
break;
}
else
if(i==5)
printf(«\nNeverno. Popytki zakonchilis’.»);
else
printf(«Neverno.\n»);
}
getch();
}

3-130.cpp

//najti v diapazone [1;n] chislo s maksimal’noj summoj delitelej

#include <stdio.h>
#include <conio.h>
unsigned divisors(unsigned chislo)

{
unsigned div,summa=0;
for(div=1;div<=chislo;div++)
if(chislo%div==0)
summa+=div;
return summa;
}
void main()

{
clrscr();
unsigned n,i,m,rez,maxdiv;
printf(«Vvedite tseloe polozhitel’noe chislo: «);
scanf(«%u»,&n);
for(i=1;i<n;i++)
{
m=divisors(i);
if(m>maxdiv)
{
rez=i;
maxdiv=m;
}
}
printf(«V diapazone [1;%u] %u yavlyaetsya chislom s maksimal’noj summoj delitelej, ravnoj %u»,n,rez,maxdiv);
getch();
}

3-049.cpp

//dano dejstvitel’noe X i natural’noe N; vychislit’ S
// cos x2 cos x4 cos x(2n)
// S = —— + —— + … + ———
// cos2 x cos4 x cos(2n) x

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()

{
clrscr();
unsigned n,i;
float x,s=0;
printf(» cos x2 cos x4 cos x(2n)\n S = —— + —— + … + ———\n cos2 x cos4 x cos(2n) x\nVvedite dejstvitel’noe chislo X i natural’noe N: «);
scanf(«%f%u»,&x,&n);
for(i=1;i<=n;i++)
s+=cos(pow(x,2*i))/pow(cos(x),2*i);
printf(» S=%.4f»,s);
getch();
}

3-080.cpp

//vyvesti tablitsu znachenij funktsii f(x) na otrezke [a;b] s shagom h
// f(x) = 7*sin2 (x*cos(x)/2)

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()

{
clrscr();
float a,b,h,x;
printf(«\tVychislenie funktsii f(x)=7*sin2 (x*cos(x)/2)\nVvedite kontsy otrezka [a;b], na kotorom budet vychislena funktsiya: «);
scanf(«%f%f»,&a,&b);
printf(«Vvedite shag izmeneniya argumenta x: «);
scanf(«%f»,&h);
x=a-h;
printf(» X | f(x) |\n——+———|»);
while (x<=b)
{
x+=h;
printf(«\n %4.2f | %7.4f |»,x,7*pow(sin(x*cos(x)/2),2));
}
getch();
}

3-035.cpp

//dano natural’noe chislo n>2; vychislit’ P
// 1 1 1
// P = (1 — —)*(1 — —)*…*(1 — —)
// 2*2 3*3 n*n

#include <stdio.h>
#include <conio.h>
void main()

{
clrscr();
unsigned n,i;
float p=1;
printf(» 1 1 1\n P = (1 — —)*(1 — —)*…*(1 — —)\n 2*2 3*3 n*n\nVvedite natural’noe chislo N (n>2): «);
scanf(«%u»,&n);
if(n>2)
{
for(i=2;i<=n;i++)
p+=(1-1.0/(i*i));
printf(» P=%.4f»,p);
}
else
printf(«Oshibka vvoda!»);
getch();
}

3-132.cpp

//proverit’, ravno li chislo N summe k-tyh stepenej svoih tsifr

#include <stdio.h>
#include <conio.h>
unsigned step(unsigned basis,unsigned index)

{
unsigned rez=1;
for(unsigned count=1;count<=index;count++)
rez*=basis;
return rez;
}
void main()

{
clrscr();
unsigned n,k;
printf(«\tRavno li chislo N summe K-tyh stepenej svoih tsifr\nVvedite chisla N i K> «);
scanf(«%u%u»,&n,&k);
unsigned m=n,tsifra,summa=0;
while(m)
{
tsifra=m%10;
summa+=tsifra;
m/=10;
}
if(summa==n)
printf(«Da, ravno»);
else
printf(«Net, ne ravno»);
getch();
}

3-087.cpp

//vvesti s klaviatury n chisel i opredelit’, skol’ko iz nih yavlyayutsya polozhitel’nyh, otritsatel’nyh i ravnyh nulyu

#include <stdio.h>
#include <conio.h>
void main()

{
clrscr();
int n,chislo,polozhit=0,otrits=0,nol=0;
printf(«Skol’ko chisel? «);
scanf(«%i»,&n);
printf(«Vvedite %i tselyh chisel:\n»,n);
for(int i=1;i<=n;i++)
{
printf(» %3i> «,i);
scanf(«%i»,&chislo);
if (chislo>0)
polozhit++;
else
if (chislo<0)
otrits++;
else
nol++;
}
printf(«%i polozhitel’nyh, %i otritstel’nyh, %i ravnyh nulyu»,polozhit,otrits,nol);
getch();
}

3-031.cpp

//vychislit’ znachenie F, esli dano dejstvitel’noe X
// (x-1)*(x-3)*(x-5)*…*(x-63)
// F(x)=——————————
// (x-2)*(x-4)*(x-6)*…*(x-64)

#include <stdio.h>
#include <conio.h>
void main()

{
clrscr();
double x,f1=1,f2=1,f;
printf(» (x-1)*(x-3)*(x-5)*…*(x-63)\n F(x)=——————————\n (x-2)*(x-4)*(x-6)*…*(x-64)\nVvedite X: «);
scanf(«%1f»,&x);
short i;
for(i=2;i<64;i+=2)
f1*=(x-i);
for(i=2;i<65;i+=2)
f2*=(x-i);
if(f2==0)
f=0;
else
f=f1/f2;
printf(«F(%.2f)=%1.4f»,x,f);
getch();
}

3-148.cpp

//najti tselye chisla, dayuschie palindrom pri vozvedenii
//v tret’yu,chetv`rtuyu ili pyatuyu stepen’
#include <stdio.h>
#include <conio.h>
int palindrom(unsigned n)

{
unsigned m=n,p=0;
while (m)
{
p=p*10+m%10;
m/=10;
}
if (p==n)
return 1;
else
return 0;
}
void main()

{
clrscr();
for (unsigned i=1;i<65536;i++)
if (palindrom(i*i*i))
printf(«%6u (3)> %-6u\n»,i,i*i*i);
else
if (palindrom(i*i*i*i))
printf(«%6u (4)> %-6u\n»,i,i*i*i*i);
else
if (palindrom(i*i*i*i*i))
printf(«%6u (5)> %-6u\n»,i,i*i*i*i*i);
getch();
}

3-055.cpp

//dlya zadannogo E najti naimen’shee N takoe, chto pow(2,n)/n! <E
//vyvesti na ekran vse chleny polsedovatel’nosti ot 1-go do N-nogo

#include <stdio.h>
#include <conio.h>
double chislit(unsigned m)

{
double f=2;
for(unsigned j=2;j<=m;j++)
f*=2.0;
return f;
}
double fact(unsigned m)

{
double f=1;
for(unsigned j=1;j<=m;j++)
f+=j;
return f;
}
void main()

{
clrscr();
unsigned n,i=1;
float e;
printf(«Vvedite chislo E: «);
scanf(«%f»,&e);
while(chislit(i)/fact(i)>=e)
n++;
for(i=1;i<=n;i++)
printf(«%u\n»,i);
getch();
}

3-107.cpp

//kakaya tsifra — A ili B — chasche vstrechaetsya v zapisi chisla N?

#include <conio.h>
#include <stdio.h>
unsigned A,B,N;
int F(unsigned k)

{
unsigned i=0,m=N;
while(m)
{
if(k==m%10)
i++;
m/=10;
}
return i;
}
void main()

{
clrscr();
printf(«Vvedite natural’noe chislo i dve tsifry: «);
scanf(«%u%u%u»,&N,&A,&B);
if(F(A)>F(B))
printf(«Chastota vstrechaemosti odinakova»);
else
if(F(A)>F(B))
printf(«Tsifra %u vtrechaetsya chasche chem %u»,A,B);
else
printf(«Tsifra %u vtrechaetsya chasche chem %u»,B,A);
getch();
}

3-125.cpp

//najti v natural’nom chisle bol’shuyu i men’shuyu tsifry i nomera ih pozitsij v chisle

#include <stdio.h>
#include <conio.h>
void main()

{
clrscr();
unsigned n,i=1,t,max=0,maxnum,min=9,minnum;
printf(«Vvedite tseloe polozhitel’noe tseloe chislo> «);
scanf(«%u»,&n);
while(n!=0)
{
t=n%10;
if(t<min)
{
min=t;
minnum=i;
}
if(t>max)
{
max=t;
maxnum=i;
}
i++;
n/=10;
}
printf(«Naibol’shaya tsifra: %u (razryad %u)\nNaimen’shaya tsifra: %u (razryad %u)»,max,maxnum,min,minnum);
getch();
}

3-018.cpp

//najti summu N chlenov ryada S
// x3 x5 x(2n+1)
// S = x — — + — + … + (-1)n*——-
// 3 5 2n+1

#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()

{
clrscr();
unsigned i,n;
float x,s=0;
printf(» x3 x5 x(2n+1)\n S = x — — + — + … + (-1)n*——-\n 3 5 2n+1\nVvedite natural’noe chislo N i dejstvitel’noe X: «);
scanf(«%u%f»,&n,&x);
for(i=1;i<=n;i++)
s+=pow(x,2*i+1)/(2*i+1);
printf(» S=%.3f»,s);
getch();
}

3-133.cpp

//najti dvuznachnye chisla, summa kvadratov tsifr kotoryh kratna M

#include <stdio.h>
#include <conio.h>
unsigned summatsifr(unsigned chislo)

{
unsigned summa=0,tsifra;
while(chislo)
{
tsifra=chislo%10;
chislo/=10;
summa+=tsifra*tsifra;
}
return summa;
}

void main()

{
clrscr();
unsigned i,m;
printf(«Vvedite tseloe polozhitel’noe chislo: «);
scanf(«%u»,&m);
printf(«Dvuznachnye chisla, summa kvadratov tsifr kotoryh kratna %u:\n»,m);
for(i=10;i<100;i++)
if(summatsifr(i)%m==0)
printf(«%u\n»,i);
getch();
}

3-120.cpp

//proverit’, est’ li v zapisi chisla N tri odinakovye tsifry

#include <conio.h>
#include <stdio.h>
int F(unsigned k,unsigned n)

{
unsigned i=0,m=n;
while(m)
{
if(k==m%10)
i++;
m/=10;
}
return i;
}
void main()

{
clrscr();
unsigned n,m,f=0;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&n);
m=n;
while(m)
{
if(F(m,n)==3)
f++;
m/=10;
}
if(f)
printf(«V zapisi etogo chisla est’ tri odinakovye tsifry»);
else
printf(«V zapisi etogo chisla net treh odinakovyh tsifr»);
getch();
}

3-110.cpp

//napechatat’ vse sovershennye chisla, men’shie zadannogo N

#include <conio.h>
#include <stdio.h>
unsigned SD(unsigned n)

{
unsigned s=1,i;
for(i=2;i<n/2;i++)
if(n%i==0)
s+=i;
return s;
}
void main()

{
clrscr();
unsigned N,i,k=0;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&N);
printf(«Sovershennye chisla, men’shie %u:\n»,N);
for(i=0;i<N;i++)
if(SD(i)==i)
{
printf(«%u\n»,i);
k++;
}
if(k)
printf(«Najdeno chisel: %u»,k);
else
printf(«Takih chisel ne najdeno»);
getch();
}

3-112.cpp

//najti kolichestvo prostyh chisel v diapazone [2;n]

#include <conio.h>
#include <stdio.h>
int prost(unsigned m)

{
unsigned j,f=1;
for(j=2;j<m;j++)
if(m%j==0)
{
f=0;
break;
}
if(f)
return 1;
else
return 0;
}
void main()

{
clrscr();
unsigned n,i,k=0;
printf(«Vvedite tseloe chislo, bol’shee dvuh: «);
scanf(«%u»,&n);
if(n>2)
{
for(i=3;i<n;i++)
if(prost(i))
k++;
printf(«V diapazone [2;%u] prostyh chisel: %u»,n,k);
}
else
printf(«Eto chislo ne bol’she dvuh!»);
getch();
}

3-134.cpp

//najti v diapazone [1;n] chisla, kratnye kazhdoj iz svoih tsifr

#include <stdio.h>
#include <conio.h>
void main()

{
clrscr();
unsigned n,k,t,f,i=1;
printf(«Vvedite natural’noe chislo> «);
scanf(«%u»,&n);
printf(«V diapazone [1;%u] sleduyuschie chisla delyatsya na kazhduyu svoyu tsifru:\n»);
while(i<=n)
{
n=i;
f=0;
t=0;
while(n!=0)
{
k=n%10;
n/=10;
if(i%k==0)
t++;
else
f++;
}
if(t&&!f)
printf(«%u\n»,i);
i++;
}
getch();
}

Загрузка...