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


3-103.cpp

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

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

void main()

{
clrscr();
unsigned n,i,j,chislo,sum,min=4294967295;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&n);


for(i=6;i<=n;i++)
{
sum=0;
for (j=2;j<=n/2+1;j++)
if (i%j==0)
sum+=j;
if (sum<min)
{
chislo=i;
min=sum;
}
}
printf(«V diapazone [1;%u] %u — chislo s minimal’noj summoj delitelej, ravnoj %u (edinitsa i samo chislo ne uchityvayutsya)»,n,chislo,min);
getch();
}

3-027.cpp

//vychislit’ summu ryada S
// x3 x5 x7 x9 x11 x13
// S = x — — + — — — + — — — + —
// 3! 5! 7! 9! 11! 13!

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

void main()

{
clrscr();
float s=0,x,f1=1,f2=6;
printf(» x3 x5 x7 x9 x11 x13\n S = x — — + — — — + — — — + —\n 3! 5! 7! 9! 11! 13!\nVvedite X: «);
scanf(«%f»,&x);
for(int i=0;i<7;i++)
{
s+=(f1/f2);
f1*=(x*x);
f2*=(i+1)*(i+2);
}
printf(» S = %.4f»,s);
getch();
}

3-119.cpp

//proverit’, est’ li v chislah N i N 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=1;
printf(«Vvedite dva natural’nyh chisla: «);
scanf(«%u%u»,&M,&N);
while(M&&f)
{
if(F(M%10,N))
f=0;
M/=10;
}
if(f)
printf(«V zapisi etih chisel net odinakovyh tsifr»);
else
printf(«V zapisi etih chisel est’ odinakovye tsifry»);
getch();
}

3-105.cpp

//proverit’, budut li razlichnymi vse tsifry natural’nogo chisla N

#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=1;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&N);
M=N;
while(M)
{
if(F(M%10,N)!=1)
f=0;
M/=10;
}
if(f)
printf(«Vse tsifry etogo chisla razlichny»);
else
printf(«Tsifry etogo chisla ne razlichny»);
getch();
}

3-088.cpp

//vychislit’ f(x) na otrezke [a;b] s shagom h
// x
// f(x) = ——-
// cos x

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

void main()

{
clrscr();
float a,b,h,x;
printf(» x\n f(x) = ——-\n cos x\nVvedite kontsy otrezka [a;b]: «);
scanf(«%f%f»,&a,&b);
printf(«Vvedite shag izmeneniya argumenta: «);
scanf(«%f»,&h);
printf(» x | f(x) |\n——-+————|\n»);
for(x=a;x<=b;x+=h)
printf(» %5.2f | %10.4f |\n»,x,x/cos(x));
getch();
}

3-117.cpp

//najti na otrezke [a;b] chislo s naimen’shim kolichestvom delitelej

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

unsigned KD(unsigned n)

{
unsigned i,k=0;
for(i=1;i<n;i++)
if(n%i==0)
k++;
return k;
}

void main()

{
clrscr();
unsigned a,b,n,i,min=MAXINT,X;
printf(«Vvedite granitsy otrezka [a;b]: «);
scanf(«%u%u»,&a,&b);
for(i=a;i<=b;i++)
if(KD(i)<min)
{
min=KD(i);
X=i;
}
printf(«Na etom otrezke naimenshee’ chislo delitelej u chisla %u»,X);
getch();
}

3-091.cpp

//vychislit’ funktsiyu f(x) na otrezke [a;b] s shagom h
// f(x) = 2*cos(x)*sqrt(x)+0.5

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

void main()

{
clrscr();
float a,b,x,h;
printf(» f(x) = 2*cos(x)*sqrt(x)+0.5\nVvedite granitsy otrezka [a;b]: «);
scanf(«%f%f»,&a,&b);
printf(«Vvedite shag izmeneniya argumenta x: «);
scanf(«%f»,&h);
printf(» x | f(x) |\n———+—————|\n»);
for(x=a;x<=b;x+=h)
printf(» %7.2f | %-12.5f |\n»,x,2*cos(x)*sqrt(x)+0.5);
getch();
}

3-128.cpp

//najti vse prostye chisla na otrezke [2;n]

#include <stdio.h>
#include <conio.h>
int simple(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;
printf(«Vvedite tseloe chislo, bol’shee dvuh> «);
scanf(«%u»,&n);
printf(«Prostye chisla v diapazone [2;%u]:\n»,n);
for(i=3;i<=n;i++)
if(simple(i))
printf(«| %-u\n»,i);
getch();
}

3-010.cpp

//posle kazhdogo vved`nnogo s klaviatury chisla vyvesti na ekran srednee vseh vved`nnyh chisel

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

{
clrscr();
float n,sred;
unsigned i,u;
printf(«Vvedite kolichestvo chisel: «);
scanf(«%u»,&u);
printf(«Vvedite %u chisel:\n»,u);
for (i=1;i<=u;i++)
{
printf(«N%u> «,i);
scanf(«%f»,&n);
sred=(sred+n)/i;
printf(«Srednee uzhe vved`nnyh chisel: %f.3\n»,sred);
}
printf(«Nazmite lyubuyu klavishu…»);
getch();
}

3-036.cpp

//vychislit’ P pri natural’nom N
// 1 1 1
// P = (1 — -)*(1 — -)*…(1 — —-)
// 2 4 2n

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

void main()

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

3-108.cpp

//pomenyat’ v natural’nom chisle poryadok sledovaniya tsifr na obratnuj, esli eto vozmozhno

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

{
clrscr();
unsigned n,m;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&n);
if(n>5927694924)
printf(«Pomenyat’ poryadok sledovaniya tsifr v etom chisle\nnevozmozhno v silu perepolneniya»);
else
{
m=n;
n=0;
while(m)
{
n=n*10+m%10;
m/=10;
}
printf(«V obratnom poryadke: %u»,n);
}
getch();
}

3-095.cpp

//vychislit’ f(x)=sqrt(x)*pow(cos(x),2) na otrezke [a;b] s shagom h

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

{
clrscr();
float a,b,h,x;
printf(«\tf(x)=sqrt(x)*pow(cos(x),2)\nVvedite granitsy intervala [a;b] i shag izmeneniya argumenta: «);
scanf(«%f%f%f»,&a,&b,&h);
x=a;
printf(» x | f(x) |\n——-+—————|\n»);
while(x<=b)
{
printf(» %5.2f | %12.4f |\n»,x,sqrt(x)*pow(cos(x),2));
x+=h;
}
getch();
}

3-149.cpp

//najti proizvedenie pervoj i poslednej tsifry natural’nogo chisla N

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

{
clrscr();
unsigned n,first,last;
printf(«Vvedite tseloe polozhitel’noe chislo: «);
scanf(«%u»,&n);
if (n<10)
printf(«Chislo dolzhno byt’ hotya by dvuznachnym»);
else
{
last=n%10;
while (n!=0)
{
if (n>9)
first=n/10;
n/=10;
}
}
printf(«Proizvedenie pervoj i poslednej tsifr ravno %u»,first*last);
getch();
}

3-026.cpp

//vychislit’ proizvedenie ryada P pri natural’nom N
// 2 4 6 2n
// P = — * — * — * … * ——
// 3 5 7 2n+1

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

{
clrscr();
unsigned i,n;
float p=1;
printf(» 2 4 6 2n\n P = — * — * — * … * ——\n 3 5 7 2n+1\nVvedite natural’noe N: «);
scanf(«%u»,&n);
for(i=1;i<=n;i++)
p*=(2.0*i/(2.0*i+1.0));
printf(» P=%.5f»,p);
getch();
}

3-116.cpp

//perestavit’ tsifry natural’nogo chisla taak, chtoby obrazovalos’ minimal’no vozmozhnoe chislo

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

{
clrscr();
unsigned n;
short a[10],i,j,k,t;
printf(«Vvedite natural’noe chislo: «);
scanf(«%u»,&n);
for(k=0;n;k++)
{
a[k]=n%10;
n/=10;
}
for(i=0;i<k;i++)
for(j=i+1;j<k;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<k;i++)
printf(«%i»,a[i]);
getch();
}