Задачи по C++




ЛАБОРАТОРНАЯ РАБОТЫ ПО C++.
ТЕМЫ:
Функция. Передача параметров и возврат значений из функции.
Рекурсивные функции.
Указатели. Работа со строками.
Работа со строками и массивами.
Структуры. Динамические массивы и переменные.
Работа с файлами.
Работа с файлами последовательного доступа.
Динамические структуры данных.


Тексты заданий:

3-052.cpp

//poluchit’ raspisanie zanyatij, zaprosiv prodolzhitel’nost’ kazhdoj pary (uroka),
//prodolzhitel’nost’ obychnyh i bol’shogo pereryvov (i ih mesto v raspisanii),
//nachalo uchebnogo dnya i kolichestvo par (urokov)

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

{
clrscr();
unsigned
time, //glavnaya rabochaya peremennaya (tekuschaya pozitsiya v techenii dnya)
current, //peremennaya tsikla
tmp,hour,min, //vremennye peremennye
beginhour,beginmin, //vremya nachala zanyatij
quantity, //kolichestvo zanyatij
lessonduration, //dlitel’nost’ kazhdoj pary (kazhdogo uroka)
ordinarybreakduration, //dlitel’nost’ obychnoj peremeny
bigbreakduration, //dlitel’nost’ bol’shoj peremeny
firstbigbreakplace,secondbigbreakplace;//mesta bol’shih peremen v raspisanii
//zapros i vvod rabochih dannyh
printf(«\t\tRaspisanie zanyatij\n\nVo skol’ko zanyatiya nachinayutsya <hh mm>? «);
scanf(«%u%u»,&beginhour,&beginmin);
printf(«\nVvedite kolichestvo par/urokov: «);
scanf(«%u»,&quantity);
printf(«\nSkol’ko dlitsya kazhdaya para/kazhdyj urok v minutah? «);
scanf(«%u»,&lessonduration);
printf(«\nSkol’ko dlitsya obychnaya peremena v minutah? «);
scanf(«%u»,&ordinarybreakduration);
printf(«\nSkol’ko dlitsya bol’shaya peremena v minutah? «);
scanf(«%u»,&bigbreakduration);
printf(«\nPosle kakih par idut bol’shie peremeny (vvedite dva nomera)\n(vvedite vtoroj nol’, esli bol’shaya peremena odna): «);
scanf(«%u%u»,&firstbigbreakplace,&secondbigbreakplace);
printf(«\n\nNazhmite lyubuyu klavishu dlya prodolzheniya>»);
getch();
//rash`t i vyvod raspisaniya
clrscr();
printf(«\n\t\tRaspisanie\n\n Nachalo zanyatij: %u chasov, %u minut\n\n | Nachalo pary | Konets pary |»,beginhour,beginmin);
printf(«\n NN |—————-+—————-|\n | chasov | minut | chasov | minut |\n——+———+——-+———+——-|»);
if (secondbigbreakplace==0)
secondbigbreakplace=quantity;
time=60*beginhour+beginmin;
for (current=1;current<=quantity;current++)
{
tmp=time;
hour=tmp/60;
min=tmp-60*hour;
printf(«\n %2u. | %2u | %2u «,current,hour,min);
time+=lessonduration;
tmp=time;
hour=tmp/60;
min=tmp-60*hour;
printf(«| %2u | %2u |»,hour,min);
if ((current==firstbigbreakplace||current==secondbigbreakplace)&&current!=quantity-1)
time+=bigbreakduration;
else
time+=ordinarybreakduration;
}
printf(«\n—————————————+\n\n Konets zanyatij: %u chasov, %u minut»,hour,min);
getch();
}

3-124.cpp

//ukazat’ sredi vseh n-znachnyh chisel te, summa tsifr kotoryh ravna k

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

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

{
clrscr();
unsigned n,k,a,b,f=0;
printf(«\tSumma tsifr n-znachnyh chisel\nChisla s kakim kolichestvom znakov sleduet rassmatrivat’? «);
vvod:
scanf(«%u»,&n);
switch(n)
{
case 2:
a=10;
b=99;
break;
case 3:
a=100;
b=999;
break;
case 4:
a=1000;
b=9999;
break;
case 5:
a=10000;
b=99999;
break;
case 6:
a=100000;
b=999999;
break;
case 7:
a=10000000;
b=99999999;
break;
case 8:
a=10000000;
b=99999999;
break;
case 9:
a=100000000;
b=999999999;
break;
case 10:
a=1000000000;
b=4294967265;
break;
default:
printf(«Oshibka: n dolzhno prinadlezhat’ [2;10]\nPovtorite vvod: «);
goto vvod;
}
printf(«Vy vybrali diapazon [%u;%u]\nVvedite polozhitel’noe tseloe chislo: «,a,b);
scanf(«%u»,&k);
for(unsigned i=a;i<=b;i++)
if(summatsifr(i)==k)
{
printf(«| %u |\n»,i);
f++;
}
if(!f)
printf(«V diapazone [%u;%u] net chisel,\nsumma tsifr kotoryh ravna %u»,a,b,k);
getch();
}

3-007.cpp

//sostavit’ sutochnoe raspisanie dvizheniya avtobusa, esli izvestny:
//vremya nachala i okonchaniya dvizheniya, prodolzhitel’nost’ marshruta v odin konets
//(v minutah) i vremya otdyha na konechnyh stantsiyah

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

{
clrscr();
printf(«\tRaspisanie avtobusa\n»);
unsigned beginhour,beginmin,endhour,endmin,dlit;
unsigned otdyh_a,otdyh_b,time,endtime,tmp,hour,min;
printf(«Vvedite vermya nachala dvizheniya (hh mm)> «);
scanf(«%u%u»,&beginhour,&beginmin);
printf(«Vvedite vremya okonchaniya dvizheniya (hh mm)> «);
scanf(«%u%u»,&endhour,&endmin);
printf(«Vvedite prodolzhitel’nost’ marshruta v odin konets (v minutah)> «);
scanf(«%u»,&dlit);
printf(«Vvedite prodolzhitel’nost’ otdyha na konechnyh stantsiyah> «);
scanf(«%u%u»,&otdyh_a,&otdyh_b);
printf(«Naznite lyubuyu klavishu dlya prodolzheniya…»);
getch();
clrscr();
printf(«\tRaspisanie avtobusa\n\nVremya otpravleniya iz konechnyh punktov\n\n| Punkt A | Punkt B |\n»);
printf(«|———+———|\n| h | m | h | m |\n|—-+—-+—-+—-|\n»);
time=60*beginhour+beginmin;
endtime=60*endhour+endmin;
while(time<endtime)
{
tmp=time;
hour=tmp/60;
tmp-=60*hour;
min=tmp;
printf(«| %2u | %2u |»,hour,min);
time+=dlit+otdyh_a;
tmp=time;
hour=tmp/60;
tmp-=60*hour;
min=tmp;
printf(» %2u | %2u |\n»,hour,min);
time+=dlit+otdyh_b;
}
getch();
}

3-098.cpp

//prodazha avia-biletov

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

{
clrscr();
unsigned bilety,moskva=0,novgorod=0,vladivostok=0,ufa=0,money,n,i;
printf(«\tProdazha avia-biletov\n\nNapravleniya:»);
printf(«\n (M)oskva (855 r.)\n (N)ovgorod (965 r.)\n (U)fa (1960 r.)\n (V)ladivostok (2020 r.)\n»);
printf(«\nSkol’ko grupp trebuetsya vvesti? «);
scanf(«%u»,&n);
char gorod;
for(i=0;i<n;i++)
{
printf(«\nVvedite kolichestvo biletov: «);
scanf(«%u»,&bilety);
printf(«V kakoj gorod> «);
vvodgoroda:
gorod=getche();
switch(gorod)
{
case ‘M’:
case ‘m’:
moskva+=bilety;
break;
case ‘N’:
case ‘n’:
novgorod+=bilety;
break;
case ‘U’:
case ‘u’:
ufa+=bilety;
break;
case ‘V’:
case ‘v’:
vladivostok+=bilety;
break;
default:
printf(«Oshibka; povtorite vvod goroda> «);
goto vvodgoroda;
}
}
money=855*moskva+965*novgorod+1960*ufa+2020*vladivostok;
printf(«Vsego prodano:\n %u biletov v Moskvu\n %u biletov v Novgorod\n»,moskva,novgorod);
printf(» %u biletov vo Vladivostok\n %u biletov v Ufu\nItogo: %u rublej»,vladivostok,ufa,money);
getch();
}

3-069.cpp

//prodazha avia-biletov

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

{
clrscr();
unsigned bilety,moskva=0,novgorod=0,vladivostok=0,ufa=0,money,n,i;
printf(«\tProdazha avia-biletov\n\nNapravleniya:»);
printf(«\n (M)oskva (855 r.)\n (N)ovgorod (965 r.)\n (U)fa (1960 r.)\n (V)ladivostok (2020 r.)\n»);
printf(«\nSkol’ko grupp trebuetsya vvesti? «);
scanf(«%u»,&n);
char gorod;
for(i=0;i<n;i++)
{
printf(«\nVvedite kolichestvo biletov: «);
scanf(«%u»,&bilety);
printf(«V kakoj gorod> «);
vvodgoroda:
gorod=getche();
switch(gorod)
{
case ‘M’:
case ‘m’:
moskva+=bilety;
break;
case ‘N’:
case ‘n’:
novgorod+=bilety;
break;
case ‘U’:
case ‘u’:
ufa+=bilety;
break;
case ‘V’:
case ‘v’:
vladivostok+=bilety;
break;
default:
printf(«Oshibka; povtorite vvod goroda> «);
goto vvodgoroda;
}
}
money=855*moskva+965*novgorod+1960*ufa+2020*vladivostok;
printf(«Vsego prodano:\n %u biletov v Moskvu\n %u biletov v Novgorod\n»,moskva,novgorod);
printf(» %u biletov vo Vladivostok\n %u biletov v Ufu\nItogo: %u rublej»,vladivostok,ufa,money);
getch();
}

3-015.cpp

//najti summu ryada S, zaprosiv X i N
// x3 x5 pow(x,2n-1)
// S = x — —- + —- — … + pow(-1,(n-1))*————-
// 3! 5! (2n-1)!

#include <stdio.h>
#include <conio.h>
#include <math.h>
double fact(unsigned k)

{
double f;
if (k==0)
f=1;
else
f=f*fact(k-1);
return f;
}

void main()

{
clrscr();
float x;
unsigned i,n;
printf(» x3 x5 pow(x,2n-1)\n S = x — —- + —- — … + pow(-1,(n-1))*————-«);
printf(«\n 3! 5! (2n-1)!\nVvedite X: «);
scanf(«%f»,&x);
vvodN:
printf(«Vvedite N: «);
scanf(«%u»,&n);
if (n<1)
goto vvodN;
double s=0;
for (i=1;i<n;i++)
s+=(powl(-1.0,n-1)*powl(x,2*n-1)/fact(2*n-1));
printf(«Summa ryada S ravna %.4f»,s);
getch();
}

3-070.cpp

//vyvesti desyt’ primerov na vychitanie, proveri’ otvety i vystavit’ otsenku

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

{
clrscr();
randomize();
printf(«\tVychitanie\n\nTrebuetsya reshit’ desyat’ primerov\n\n»);
int a,b,rez,otvet,ball=0;
for (int i=1;i<=10;i++)
{
init:
a=random(100)+1;
b=random(100)+1;
if (a<b)
goto init;
rez=a-b;
printf(«%i. %i-%i=»,i,a,b);
scanf(«%i»,&otvet);
if (otvet==rez)
{
printf(«Verno\n»);
ball++;
}
else
printf(«Neverno (%i)\n»,rez);
}
switch (ball)
{
case 10:
printf(«\nRezul’tat: otlichno»);
break;
case 9:
case 8:
printf(«\nRezul’tat: horosho»);
break;
case 7:
case 6:
printf(«\nRezul’tat: udovletvoritel’no»);
break;
default:
printf(«\nRezul’tat: neudovletvoritel’no»);
}
getch();
}

3-003.cpp

//predprinimatel’ vzyal kredit v razmere K rublej pod P% godovyh
//i vlozhil ego v delo, dayuschee R rublej pribyli v god
//cherez skol’ko let on nakopit summu, dostatochnuyu dlya pogasheniya kredita?

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

{
clrscr();
float k,p,r,profit=0,debt;
unsigned n=0,i=0;
printf(«Razmer vzyatogo kredita: «);
scanf(«%f»,&k);
printf(«Pod skol’ko protsentov godovyh vzyat kredit? «);
scanf(«%f»,&p);
printf(«Skol’ko ozhidaetsya rublej pribyli v god? «);
scanf(«%f»,&r);
p=1+p/100;
debt=k;
while(profit<debt&&i<=100)
{
debt*=p;
profit+=r;
n++;
i++;
}
if(i>100)
printf(«Nebodimaya dlya pogasheniya dolga summa ne budet nakoplena dazhe cherez sto let»);
else
printf(«Neobhodimaya dlya pogasheniya kredita summa budet nakoplena cherez %u let»,n);
getch();
}

3-014.cpp

//najti summu ryada S, zaprosiv dejstvitel’nye X,A i natural’noe N
// x*ln(a) (x*ln(a))(2) (x*ln(a))(n)
// S= 1 + ——— + ————— + … + —————
// 1! 2! n!

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

{
clrscr();
float x,a,s=1;
unsigned n;
printf(» x*ln(a) (x*ln(a))(2) (x*ln(a))(n)\n S= 1 + ——— + ————— + … + —————«);
printf(«\n 1! 2! n!\nVvedite X: «);
scanf(«%f»,&x);
printf(«Vvedite A: «);
scanf(«%f»,&a);
printf(«Vvedite N: «);
scanf(«%u»,&n);
float v1=x*log(a),v2=v1,v3=1.0;
for(unsigned i=1;i<=n;i++)
{
s+=(v2/v3);
v2*=v1;
v3*=i;
}
printf(«Summa ryada S ravna %.4f»,s);
getch();
}

3-063.cpp

//vychislit’ srednee arifmeticheskoe dejstvitel’nyh chisel, vved`nnyh s klaviatury
//posle vvoda poslednego chisla vyvesti minimal’noe i maksimal’noe chisla
//a takzhe ih poryadkovye nomera v posledovatel’nosti

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

{
clrscr();
float chislo,sred=0,min=10e+38,max=0;
int n,i,nummin,nummax;
printf(«Skol’ko chisel? «);
scanf(«%i»,&n);
for(i=1;i<=n;i++)
{
printf(«%2i> «,i);
scanf(«%f»,&chislo);
sred=(sred+chislo)/2;
if (chislo>max)
{
max=chislo;
nummax=i;
}
else
if (chislo<min)
{
min=chislo;
nummin=i;
}
}
printf(«Srednee iz vved`nnyh chisel: %.3f»,sred);
printf(«\nMinimal’noe: %.2f (chislo N%i)»,min,nummin);
printf(«\nMaksimal’noe: %.2f (chislo N%i)»,max,nummax);
getch();
}

3-024.cpp

//vychislit’ P pri izvestnom natural’nom N
// cos 1 cos 1 + cos 2 cos 1 + cos 2 + … + cos n
// P = ——- * ————— * … * ——————————
// sin 1 sin 1 + sin 2 sin 1 + sin 2 + … + sin n

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

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

3-002.cpp

//yavlyaetsya li funktsiya f(x) periodicheskoj s periodom T?
//proverit’, vychisliv znacheniya funktsii na otrezke [0;5T]

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

{
clrscr();
float t,x=0;
printf(«\tPeriodichnost’ funktsii f(x)=sinx*sinx\nVvedite period etoj funktsii: «);
scanf(«%f»,&t);
printf(«| x | sin2(x) |\n|——-+————|\n»);
while (x<=5*t)
{
printf(«| %5.2f | %9.3f |\n»,x,sin(x)*sin(x));
x+=0.1;
}
getch();
clrscr();
x=0;
printf(«\tPeriodichnost’ funktsii f(x)=tgx\nVvedite period etoj funktsii: «);
scanf(«%f»,&t);
printf(«| x | tg(x) |\n|——-+————|\n»);
while (x<=5*t)
{
printf(«| %5.2f | %9.3f |\n»,x,tan(x));
x+=0.1;
}
getch();
}

3-016.cpp

//dano natural’noe N i dejstvitel’noe X; najti summu N chlenov ryada S
// x2 x4 x(2n)
// S = 1 — — + — + … + (-1)n*——
// 2! 4! (2n)!

#include <stdio.h>
#include <conio.h>
#include <math.h>
float fact(unsigned m)

{
float f=1.0;
if(m==0)
f=1.0;
else
for(unsigned j=1;j<=m;j++)
f*=j;
return f;
}
void main()

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

3-013.cpp

//zaprosiv dejstvitel’noe X najti summu N chlenov ryada S
// cos 4x cos 6x cos 2nx
// S= cos 2x + ——— + ——— + … + ———
// 2 3 n

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

{
clrscr();
float x,s=0;
unsigned n;
printf(» cos 4x cos 6x cos 2nx\n S= cos 2x + ——— + ——— + … + ———«);
printf(«\n 2 3 n\nVvedite dejstvitel’noe X: «);
scanf(«%f»,&x);
printf(«Vvedite tseloe polozhitel’noe chislo N: «);
scanf(«%u»,&n);
for (unsigned i=1;i<=n;i++)
s+=(cos(2*i*x)/i);
printf(«Summa ryada S ravna %.4f»,s);
getch();
}

3-053.cpp

//na protyazhenii N let firma zakupala oborudovanie na s1,s2,… rublej v god
//ezhegodno imeyuscheesya obobrudovanie utsnyaetsya na P%
//najti obschyuyu stoimost’ nakoplennogo za N let oborudovaniya

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

{
clrscr();
unsigned n,i;
float p,s,cost=0;
printf(«Skol’ko let trebuetsya issledovat’? «);
scanf(«%u»,&n);
printf(«Na skol’ko protsentov utsenyaetsya oborudovanie ezhegodno? «);
scanf(«%f»,&p);
p=1-p/100;
for(i=1;i<=n;i++)
{
cost*=p;
printf(«Na skol’ko rublej bylo zakupleno obrudovaniya za %u god? «,i);
scanf(«%f»,&s);
cost+=s;
}
printf(«Za %u let bylo nakopleno oborudovaniya na %.2f rublej»,n,cost);
getch();
}

3-129.cpp

//najti men’shie N natural’nye chisla, kvadrat summy tsifr kotoryh raven M

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

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

{
clrscr();
unsigned n,m,f=0;
printf(«\tNatural’nye chisla s summoj tsifr, ravnoj M\nVvedite verhnyuyu granitsu diapazona [1;N]: «);
scanf(«%u»,&n);
printf(«Vvedite tseloe polozhitel’noe chislo M: «);
scanf(«%u»,&m);
for(unsigned i=1;i<=n;i++)
if(summatsifr(i)==m)
{
f++;
printf(«%u\n»,i);
}
if(!f)
printf(«Net chisel, udovletvoryayuschih ukazannym usloviyam»);
getch();
}

3-019.cpp

//najti summu N chlenov ryada S pri natural’nom N i dejstvitel’nom X
// cos 3x cos 5x cos(2n+1)x
// S = x — —— + —— + … + (-1)n* ———-
// 3*3 5*5 (2n+1)2

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

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

Загрузка...