Ang X ay kabilang sa segment. Paksa: Boolean na uri ng data

Aral mula sa serye " Mga Geometric Algorithm»

Kamusta mahal na mambabasa!

Ngayon ay isasaalang-alang natin ang isa pang karaniwang problema mula sa serye ng mga geometric algorithm. Sumulat tayo ng isang function na magsusuri pag-aari arbitraryo segment ng linya ibinigay ng mga coordinate ng simula at pagtatapos nito.

Upang ipatupad ang mga operasyon ng paghahambing sa totoong data, magsusulat kami ng dalawa pang function: ang EqPoint() function, na susuriin kung ang dalawang punto sa eroplano ay nagtutugma, at ang RealMoreEq() function, na gagamitin namin para suriin ang “>=" kaugnayan (mas malaki sa o katumbas ng). Alam na natin ang dahilan ng pagpapakilala ng mga espesyal na function.

Gawain. suriin, nabibilang kung segment ng linya.

Hayaang ang mga puntos ang simula at wakas ng segment. ay isang arbitrary na punto sa eroplano.

Ang isang vector na nagsisimula sa isang punto at nagtatapos sa isang punto ay magkakaroon ng mga coordinate (x2-x1, y2-y1).

Kung ang P(x, y) ay isang arbitrary point, kung gayon ang mga coordinate ng vector ay: (x-x1, y - y1).

Ang punto P ay kabilang sa segment kung:

Programa geom3; Const _Eps: Real = 1e-3; (katumpakan ng pagkalkula) var x1,y1,x2,y2,x,y:real; Function RealEq(Const a, b:Real):Boolean; (mahigpit na pantay) simulan ang RealEq:= Abs(a-b)<= _Eps End; {RealEq} Function RealMoreEq(Const a, b:Real):Boolean; {больше или равно} begin RealMoreEq:= a - b >= _EpsEnd; (RealMoreEq) Function EqPoint(x1,y1,x2,y2:real):Boolean; (Kung magkasabay man ang dalawang punto sa eroplano) magsisimula ang EqPoint:=RealEq(x1,x2)at RealEq(y1,y2) end; (EqPoint) Function AtOtres(x1,y1,x2,y2,x,y:real):Boolean; (Tinusuri kung ang punto P ay kabilang sa segment na P1P2) Magsimula Kung EqPoint(x1,y1,x2,y2) Pagkatapos AtOtres:= EqPoint(x1,y1,x,y) (mga puntos na P1 at P2 ay magkasabay, ang resulta ay tinutukoy ng pagkakataon ng mga puntos na P1 at P) Iba Pang AtOtres:= RealEq((x-x1)*(y2-y1)- (y-y1)*(x2-x1),0)at (RealMoreEq(x,x1)at RealMoreEq(x2 ,x)O RealMoreEq(x ,x2)at RealMoreEq(x1,x)) dulo; (AtOtres) magsimula (pangunahing) writeln(Ipasok ang mga coordinate ng punto: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); kung AtOtres(x1,y1,x2 ,y2,x,y) pagkatapos ay writeln("Oo.") else writeln("Hindi.); wakas. (pangunahing)

Mga resulta ng pagpapatupad ng programa.

Ilagay ang mga point coordinates: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Oo.

Mga resulta ng pagsubok sa programang GeoGebra:


Ngayon ay isinulat namin ang AtOtres() function, na nagsusuri kung ang isang arbitrary na punto ay kabilang sa isang segment na ibinigay ng mga coordinate nito.

Dalawa pang function ang ipinakilala: EqPoint() at RealMoreEq() para ipatupad ang mga operasyon ng paghahambing sa totoong data. Ang una ay nagsusuri kung ang dalawang punto sa eroplano ay nagtutugma, ang pangalawa ay ginagamit upang suriin ang kaugnayan ">=".

Sa susunod na aralin, batay sa naunang nakasulat na mga pamamaraan, magsusulat kami ng isang pamamaraan para sa pagtukoy ng mga coordinate ng punto ng intersection ng dalawang mga segment.

Dito ay nagpapaalam ako sa iyo. Magkita-kita tayo sa susunod na aralin.

Karaniwang nakukuha ng mga variable ng Boolean ang kanilang mga halaga mula sa paghahambing at pagpapatakbo sa matematika (tinalakay sa nakaraang aralin), pati na rin sa mga partikular na pagpapatakbo ng Boolean.

Ang Turbo Pascal ay may mga lohikal na operasyon na maaaring ilapat sa mga variable ng isang boolean na uri. Ang mga ito ay hindi, at, o at xor na mga operasyon. Sa paksang ito, titingnan mo ang tatlong lohikal na operasyon. Ang mga pagtatalaga at resulta ng mga operasyong ito ay ibinibigay sa talahanayan. Isaalang-alang ito.

Operasyon hindi(hindi) ay may isang operand at bumubuo ng lohikal na negation nito. Ang resulta ng not operation ay False kung ang operand ay true at True kung ang operand ay false. Kaya,

hindi Totoo Mali (ang kasinungalingan ay kasinungalingan)

hindi Mali Tama (hindi mali ang totoo)

Resulta ng operasyon at(i) ay totoo lamang kung ang parehong mga operand nito ay totoo, at mali kung hindi.

Resulta ng operasyon o(o) ay totoo kung ang alinman sa mga operand nito ay totoo, at mali lamang kung ang parehong mga operand ay mali.

Mag-ehersisyo . Subukang tukuyin ang kahulugan ng boolean operations para sa mga statement:

  1. Ang isang mag-aaral ay nananatili sa bahay sa panahon ng mga pista opisyal sa taglamig o pumupunta sa isang lugar upang magpahinga.
  2. Si Philip Kirkorov ay isang mang-aawit at combine operator.
  3. Ang mga mag-aaral ay lalaki at babae.

Ang mga lohikal, relational, at arithmetic na operasyon ay kadalasang nangyayari sa parehong expression. Sa kasong ito, ang mga ugnayan sa kaliwa at kanan ng tanda ng lohikal na operasyon ay dapat na nakapaloob sa mga bracket, dahil ang mga lohikal na operasyon ay may mas mataas na priyoridad. Sa pangkalahatan, ang sumusunod na priyoridad ng mga operasyon ay pinagtibay:

  • at, *, /, div, mod
  • o, +, -
  • mga operasyon ng relasyon.

. Ang lohikal na operasyon at tinatawag ding lohikal na pagpaparami, at ang lohikal na operasyon o tinatawag ding lohikal na karagdagan.

Bilang karagdagan, ang pagkakasunud-sunod ng mga operasyon ay maaaring baguhin sa pamamagitan ng mga panaklong. Halimbawa, sa isang lohikal na expression, inaayos namin ang pagkakasunud-sunod ng mga aksyon

A o B at hindi (A o B)

Ang nakakulong o operator ay unang pinaandar, na sinusundan ng hindi, at, o mga operator. Kung papalitan natin ang mga halagang True at False sa halip na mga variable A at B, kung gayon, gamit ang napag-isipang pamamaraan, makukuha natin ang halaga ng buong expression na katumbas ng True.

Mag-ehersisyo . Isulat sa iyong kuwaderno at kalkulahin ang mga halaga ng mga expression para sa a=10, b=20, c=true, d=false:

  • (a>5) at (b>5) at (a<20) and (b<30);
  • hindi (a<15) or not (b<30);
  • c o d at (b=20);

Pansin! Sa Pascal, walang paraan upang magpasok ng boolean data gamit ang read statement. Gayunpaman, ang output ng mga halaga ng mga variable ng isang uri ng boolean ay ibinibigay gamit ang write operator.

Halimbawa, pagkatapos isagawa ang write (5>2) statement, True ang ipapakita sa screen.

Pansariling gawain

Pumili kasama ng guro ang isang gawain para sa paggawa ng malayang gawain mula sa mga pagsasanay sa ibaba.

  1. Kalkulahin ang mga halaga ng expression:

    a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

    b) k mod 7 = k div5-1 at k=15;

    c) kakaiba(trunc(10*p)) sa p=0.182;

    d) hindi kakaiba(n) para sa n=0;

    e) t at (p mod 3=0) sa t=totoo, p=101010;

    e) (x*y<>0) at (y>x) na may x=2, y=1;

    g) (x*y<>0) o (y>x) kapag x=2, y=1;

    h) a o (hindi b) na may a=Mali, b=Tama;

  2. Sumulat ng isang kaugnayan sa Pascal na totoo kung ang tinukoy na kundisyon ay natutugunan at mali kung hindi:

    a) ang integer k ay nahahati sa 7;

    b) ang punto (x, y) ay nasa labas ng bilog ng radius R na nakasentro sa punto (1,0);

    c) ang natural na bilang N ay ang parisukat ng natural na numero;

    d) 0

    e) x=max(x,y,z);

    e) kahit isa sa mga lohikal na variable a at b ay Tama;

    g) parehong mga lohikal na variable a at b ay Tama.

  3. Tukuyin ang pagkakasunud-sunod kung saan isinasagawa ang mga operasyon kapag sinusuri ang mga expression:

    a) a at b o hindi c at d;

    b) (x>=0) o hindi c at d.

  4. Suriin ang mga sumusunod na expression na may a=True, b=False:

    a) a o b at hindi a;

    b) (a o b) at hindi a;

    c) hindi a at b;

    d) hindi (a at b)

  5. Sumulat ng expression sa Pascal na totoo kung ang tinukoy na kundisyon ay natutugunan at mali kung hindi:

    a) x ay kabilang sa segment;

    b) ang x ay nasa labas ng segment;

    c) * x ay kabilang sa segment o [-1, 1];

    d) * x ay nasa labas ng mga segment at [-1, 1];

    e) bawat isa sa mga numerong x, y, z ay positibo;

    g) wala sa mga numerong x, y, z ang positibo;

    h) isa lamang sa mga numerong x, y, z ang positibo;

    i) ang boolean variable a ay may value na True, ang boolean variable b ay may value na False;

    j) * isang taon na may serial number na y ay isang leap year (isang taon ay isang leap year kung ang numero nito ay isang multiple ng 4, ngunit sa mga multiple ng 100, mga multiple lang ng 400 ang leap year, halimbawa, 1700, 1800 at 1900 ay non-leap years, 2000 ay isang leap year).

  6. Gumuhit sa (x, y) na eroplano ng isang lugar kung saan at kung saan totoo ang tinukoy na expression:

    a)* (y>=x) at (y+x>=0) at (y<=1);

    b) (sqr(x)+sqr(y)<1) or (y>0) at (abs(x)<=1);

    c) (trunc(y)=0 at (round(x)=0);

    d)* (abs(x)<=1)>(abs(y)>=1);

    e) (sqr(x)+sqr(y)<=4)=(y<=x).

  7. Mayroong conditional operator:
    kung d<>10
    pagkatapos
    writeln('hooray!')
    iba pa
    writeln('masama...');

    Posible bang palitan ito ng mga sumusunod na pahayag:

  8. Ano ang magiging mga halaga ng mga variable j, k pagkatapos ng pagpapatupad ng conditional statement:
    kung si j>k
    pagkatapos
    j:=k-2
    iba pa
    dec(k,2);
    kung ang mga paunang halaga ng mga variable ay pantay:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Tandaan . Bilang resulta ng pahayag na dec (k,2), ang halaga ng variable k ay nabawasan ng 2.

Pumili kasama ng guro ang isang gawain para sa paggawa ng malayang gawain mula sa mga pagsasanay sa ibaba.

1. Kalkulahin ang mga halaga ng expression:

a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 at k=15;

c) kakaiba(trunc(10*p)) sa p=0.182;

d) hindi kakaiba(n) para sa n=0;

e) t at (p mod 3=0) sa t=totoo, p=101010;

e) (x*y<>0) at (y>x) na may x=2, y=1;

g) (x*y<>0) o (y>x) kapag x=2, y=1;

h) a o (hindi b) na may a=Mali, b=Tama;

2. Sumulat sa Pascal ng isang relasyon na totoo kung ang tinukoy na kundisyon ay natutugunan at mali kung hindi:

a) ang integer k ay nahahati sa 7;

b) ang equation ay walang tunay na ugat;

c) ang punto (x, y) ay nasa labas ng bilog ng radius R na nakasentro sa punto (1,0);

d) ang natural na bilang N ay ang parisukat ng natural na numero;

e) x=max(x,y,z);

g) (huwag gamitin ang hindi operasyon)

h) kahit isa sa mga lohikal na variable a at b ay Tama;

i) parehong mga lohikal na variable a at b ay Tama.

3. Tukuyin ang pagkakasunud-sunod kung saan isinasagawa ang mga operasyon kapag sinusuri ang mga expression:

a) a at b o hindi c at d;

b) (x>=0) o hindi c at d.

4. Kalkulahin ang mga sumusunod na expression na may a=True, b=False:

a) a o b at hindi a;

b) (a o b) at hindi a;

c) hindi a at b;

d) hindi (a at b)

5. Sumulat ng isang expression sa Pascal na totoo kung ang tinukoy na kundisyon ay natutugunan at mali kung hindi:

a) x ay kabilang sa segment;

b) ang x ay nasa labas ng segment;

c) * x ay kabilang sa segment o [-1, 1];

d) * x ay nasa labas ng mga segment at [-1, 1];

e) bawat isa sa mga numerong x, y, z ay positibo;

g) wala sa mga numerong x, y, z ang positibo;

h) isa lamang sa mga numerong x, y, z ang positibo;

i) ang boolean variable a ay may value na True, ang boolean variable b ay may value na False;

j) * isang taon na may serial number na y ay isang leap year (ang isang taon ay isang leap year kung ang numero nito ay isang multiple ng 4, ngunit sa mga multiple ng 100, mga multiple lang ng 400 ang leap year, halimbawa, 1700, Ang 1800 at 1900 ay di-leap year, ang 2000 ay isang leap year).

6. Iguhit sa eroplano (x, y) ang lugar kung saan at kung saan totoo ang tinukoy na expression:

a)* (y>=x) at (y+x>=0) at (y<=1);

b) (sqr(x)+sqr(y)<1) or (y>0) at (abs(x)<=1);

c) (trunc(y)=0 at (round(x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

e) (sqr(x)+sqr(y)<=4)=(y<=x).

7) May conditional operator:

writeln('hooray!')

writeln('masama...')

Posible bang palitan ito ng mga sumusunod na pahayag:

a) kung d=10 b) kung hindi (d=10)

writeln ('hooray!') writeln ('hooray!')

writeln('masama...'); writeln('masama...');

c) kung hindi (d=10) d) kung hindi (d<>10)

writeln ('masama...') writeln ('masama...')

writeln('hooray!'); writeln('hooray!');

8) Ano ang magiging mga halaga ng mga variable j, k pagkatapos ng pagpapatupad ng conditional statement:

kung ang mga paunang halaga ng mga variable ay pantay:

Tandaan. Bilang resulta ng pahayag na dec (k,2), ang halaga ng variable k ay nabawasan ng 2.

. X nabibilang sa segment ;
x namamalagi sa labas ng segment;
x nabibilang sa segment o [-1,1];
x nasa labas ng segment o [-1,1].
3.
Ipaliwanag ang istraktura at mga panuntunan para sa pagpapatupad ng mga kondisyonal na pahayag.
4.
Isulat ang tinukoy na aksyon bilang iisang conditional statement:
cos
2
x, sa 0x sa =
1-kasalanan
2
x, kung hindi.
5.
z
int z=0, x=1, y=

1;

80 Programming linear algorithm sa system Tagabuo ng C++
kung (x>0) kung (y>0) z=1; iba z=2;
6.
Anong halaga ang magkakaroon ng variable z pagkatapos isagawa ang mga pahayag:
int z=0, x=

1,y=1;
kung (x) ( kung (y>0) z=1;) iba z=2;
7.
Anong halaga ang magkakaroon ng variable z pagkatapos isagawa ang mga pahayag:
int z=0, x=0, y=1;
kung (x) ( kung (y>0) z=1;) iba z=2;
8.
Anong halaga ang magkakaroon ng variable z pagkatapos isagawa ang mga pahayag:
int z=0, x=3, y=1;
kung (x) ( kung (y) z=1;) kung hindi z=2;
9.
Tukuyin ang mga error sa mga sumusunod na pahayag:
kung (1
elsex=0; y+= 1;
10.
int z=0, x=0, y=1;
kung (!x) ( kung (!(y

1)) z=1;) iba pa z=2;
11.
Ano ang halaga ng variable na z pagkatapos isagawa ang mga pahayag:
int z=0, x=1, y=1;
kung (!x) ( kung (!(y

1)) z=1;) iba pa z=2;
12.
Maghanap ng mga error sa fragment ng programa:
(int n,x; switch (k) case + : x:=x-4 break; case

-

,

*

, x=5;
}
Anong mga alituntunin ang nilalabag at paano maitatama ang mga pagkakamali?


81
3.4
Mga indibidwal na gawain para sa seksyon 3
Kailangang lutasin ng bawat mag-aaral ang dalawang problema ng una at ikalawang antas ng pagiging kumplikado.
Mga gawain ng unang antas ng pagiging kumplikado.
1.
Bibigyan ka ng apat na digit na positive integer. Sumulat ng isang programa na nagpi-print totoo o mali depende sa kung ang tinukoy na kundisyon ay natutugunan o hindi: ang kabuuan ng ika-1 at ika-4 na digit ay katumbas ng produkto ng ika-2 at ika-3 digit.
2.
Ang mga tunay na numero x, y ay ibinibigay. Kung ang x at y ay negatibo, pagkatapos ay palitan ang bawat halaga ng modulus nito; kung isa lamang sa kanila ang negatibo, pagkatapos ay dagdagan ang parehong mga halaga ng 5.5; sa ibang mga kaso, ang parehong mga halaga ay dapat bawasan ng 10 beses.
3.
Ang mga tunay na numero x, y ay ibinibigay. Kung ang x at y ay positibo, pagkatapos ay bawasan ang bawat halaga ng isang factor na 5; kung ang parehong mga halaga ay nasa hanay [-3, 9], ang parehong mga halaga ay dapat palitan ng 0; kung hindi, ang x at y ay tumaas ng 3.
4.
Ang mga tunay na numero x, y (xy) ay ibinibigay. Palitan ang mas maliit sa dalawang numerong ito ng kanilang kalahating kabuuan, at ang mas malaki sa kanilang dobleng produkto.
5.
Kung ang kabuuan ng tatlong magkapares na natatanging mga tunay na numero x, y, z ay mas mababa sa 1, kung gayon ang pinakamaliit sa tatlong numerong ito ay papalitan ng kalahating kabuuan ng dalawa pa; kung hindi, palitan ang mas maliit ng x at y ng kalahati ng kabuuan ng dalawang natitirang halaga.
6.
Ang mga tunay na numero a, b, c, d ay ibinibigay. Kung ang b>c>d, pagkatapos ay iwanang hindi nagbabago ang mga numero; kung hindi, palitan ang lahat ng mga numero ng kanilang mga parisukat.
7.
Tukuyin kung ang isang anim na digit na integer ay mapalad. (Ang isang numero ay tinatawag na masuwerte kung ang kabuuan ng unang tatlong digit nito ay katumbas ng kabuuan ng huling tatlong digit nito.)
8.
totoo o mali depende sa kung ang tinukoy na kundisyon ay nasiyahan o hindi: para sa mga arbitrary na tunay na numero a, b, c, tukuyin kung ang equation ax
2
+bx+c=0 kahit isang tunay na solusyon.

82 Programming linear algorithm sa system Tagabuo ng C++
9.
Upang malutas ang sumusunod na problema, sumulat ng isang programa na nagpi-print totoo o mali depende sa kung ang tinukoy na kundisyon ay natutugunan o hindi: upang matukoy kung ang kabuuan ng unang dalawang digit ng isang ibinigay na apat na digit na numero ay katumbas ng kabuuan ng dalawang huling numero nito.
10.
Ang ilang mga paaralan ay may mga sumusunod na patakaran sa pagpasok. Ang mga aplikante ay kumukuha ng dalawang pagsusulit, na namarkahan ayon sa
100 puntos bawat isa. Kung ang aplikante ay nakakuha ng hindi bababa sa 150 puntos, pagkatapos ay nagbibigay ito ng karapatang pumasok sa departamento ng araw, mula 100 hanggang 149 - sa departamento ng gabi; mas mababa sa 100 puntos ay nangangahulugan ng pagtanggi sa pagpasok sa pag-aaral. Sumulat ng isang programa na, depende sa dami ng mga puntos na nakuha, ay nagpapaalam sa aplikante ng kanyang karapatang mag-enroll.
11.
Sumulat ng isang programa gamit ang operator ng pagpili , na nagbibigay-daan sa iyo upang makakuha ng isang pandiwang paglalarawan ng mga marka. (1 - "masama", 2 -
"hindi kasiya-siya", 3 - "kasiya-siya", 4 - "mabuti", 5 -
"Malaki".)
12.
Upang malutas ang sumusunod na problema, sumulat ng isang programa na nagpi-print totoo o mali depende sa kung ang tinukoy na kundisyon ay natutugunan o hindi: upang matukoy kung sa mga digit ng isang ibinigay na tatlong-digit na numero ay pareho.
13.
Sumulat ng isang programa na nagpi-print totoo kung date d1, m1 nauuna (sa loob ng isang taon) ang petsa d2, m2 at kahulugan mali kung hindi.
14.
Sumulat ng isang programa gamit ang isang piling pahayag na nagpapakita ng buong pangalan sa pamamagitan ng unang titik ng pangalan.
(Ivan, Peter, Nikolai, Vladimir, George).
15.
Sumulat ng isang programa gamit ang operator ng pagpili, na, na ibinigay ang input digit na 0≤ k≤ Ini-print ng 5 ang pangalan ng figure na ito sa Russian at English.
16.
Ibinigay ang isang integer k (1

k

365). Tukuyin kung ang ika-k-araw ng taon ay isang katapusan ng linggo o isang araw ng trabaho, kung ang Enero 1 ay Lunes.
17.
Binigyan ng totoong numero x. Kalkulahin f, kung:











kasalanan
,
1 0
,
0 5
2 11 2
kaso
yung iba
sa
x
x
x
sa
x
x
x
sa
f

Programming gamit ang One-Dimensional Arrays
83 18.
Binigyan ng totoong numero x. Sumulat ng isang programa upang makalkula f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
kaso
yung iba
sa
x
x
x
sa
x
x
x
sa
f
19.
Sumulat ng isang programa gamit ang isang piling operator na, sa pamamagitan ng unang titik ng pangalan ng lungsod, ay nagpapakita ng buong pangalan ng lungsod (Kursk, Moscow, Tula, Novgorod, Voronezh).
20.
Sumulat ng isang programa gamit ang isang piling pahayag na nagpapakita ng buong pangalan sa pamamagitan ng unang titik ng apelyido (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Ibinigay ang mga coordinate ng sentro at ang radius ng bilog. Tukuyin kung ang isang tiyak na punto na may mga coordinate (x,y) ay kabilang sa bilog.
22.
Sumulat ng isang programa gamit ang isang piling pahayag na magpi-print ng buong pangalan ng hayop (aso, pusa, giraffe, kabayo, unggoy) na ibinigay sa unang titik ng pangalan ng hayop.
23.
Ibinigay ang tatlong natatanging numero a,b,c. Pagbukud-bukurin ang mga numerong ito sa pataas na pagkakasunud-sunod nang sa gayon a katumbas ng pinakamaliit na bilang, b- average na numero, c- ang pinakamalaking.
24.
Sumulat ng isang programa gamit ang isang piling pahayag na, sa pamamagitan ng numero (mula 1 hanggang 7), ay nagpapakita ng pangalan ng araw ng linggo.
25.
Sumulat ng isang programa gamit ang isang piling pahayag na, sa pamamagitan ng numero (mula 1 hanggang 12), ay nagpapakita ng pangalan ng buwan ng taon.
26.
Sumulat ng isang programa gamit ang isang piling pahayag na, na ibinigay sa unang titik ng pangalan ng panahon ng taon, ay nagpi-print ng buong pangalan ng panahon ng taon.
27.
Bibigyan ka ng limang digit na positive integer. Sumulat ng isang programa na nagpi-print totoo o mali depende sa kung ang tinukoy na kundisyon ay natutugunan o hindi: ang kabuuan ng ika-1, ika-3 at ika-5 na digit ay mas malaki kaysa sa produkto ng ika-2 at ika-4 na numero.
28.
Bibigyan ka ng apat na digit na positive integer. Sumulat ng isang programa na nagpi-print totoo o mali depende kung

84 Programming linear algorithm sa system Tagabuo ng C++ matugunan man o hindi ang tinukoy na kundisyon: arithmetic mean 1 at
Ang 4 na digit ay higit pa sa kabuuan ng 2 at 3 digit.
29.
Binibigyan ng digit at tatlong digit na numero sa decimal notation. Kung ang digit ay tumugma sa pinakamataas na digit ng numero, pagkatapos ay kalkulahin ang kabuuan ng mga digit ng numero. Kung ang digit ay tumugma sa gitnang digit ng numero, pagkatapos ay kalkulahin ang produkto ng mga digit ng numero. Kung ang digit ay tumugma sa hindi bababa sa makabuluhang digit ng numero, pagkatapos ay kalkulahin ang arithmetic mean ng mga digit ng numero. Kung wala sa mga kundisyon ang natutugunan, pagkatapos ay kalkulahin ang geometric mean ng mga digit ng numero.
30.
Binibigyan ng digit at tatlong digit na numero sa decimal notation. Kung ang digit ay tumugma sa pinakamataas na digit ng numero, pagkatapos ay kalkulahin ang arithmetic mean ng mga digit ng numero. Kung ang digit ay tumutugma sa gitnang digit ng numero, pagkatapos ay kalkulahin ang geometric mean ng mga digit ng numero. Kung ang digit ay tumugma sa hindi bababa sa makabuluhang digit ng numero, pagkatapos ay kalkulahin ang kabuuan ng mga digit ng numero. Kung wala sa mga kundisyon ang natutugunan, pagkatapos ay kalkulahin ang produkto ng mga digit ng numero
Mga gawain ng pangalawang antas ng pagiging kumplikado.
1.
Nabigyan ng dalawang-digit na positive integer sa ternary number system. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Russian, kung ang pinakamataas na digit ng numero ay mas malaki kaysa sa pinakabata , kung hindi.
- sa Ingles.
2.
Ibinigay ang dalawang-digit na positive integer sa limang-digit na sistema ng numero. Sumulat ng program na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Ingles, kung ang pinakamataas na digit ng numero ay mas malaki kaysa sa pinakamababa, kung hindi.
- sa Russian.
3.
Ibinigay ang dalawang-digit na positive integer sa limang-digit na sistema ng numero. Sumulat ng program na nagpi-print ng mga pangalan ng mga digit ng isang numero sa English kung ang pinakamataas na digit ng numero ay eksaktong 2 beses ang pinakamababang digit, kung hindi.
- sa Russian.
4.
Nabigyan ng dalawang-digit na positive integer sa ternary number system. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Russian, kung ang pinakamataas na digit ng numero ay mas mababa kaysa sa pinakamababa, kung hindi.
- sa Ingles.

Programming gamit ang One-Dimensional Arrays
85 5.
Ibinigay ang dalawang-digit na positive integer sa limang-digit na sistema ng numero. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Russian.
6.
Ibinigay ang dalawang-digit na positive integer sa octal number system. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Russian.
7.
Ibinigay ang dalawang-digit na positive integer sa octal number system. Sumulat ng program na nagpapakita, kung ang pinakamataas na digit ay mas mababa sa kalahati ng pinakamababang digit, ang mga pangalan ng mga digit ng numero sa Ingles, kung hindi.

sa Russian.
8.
Ibinigay ang dalawang-digit na positive integer sa septimal number system. Sumulat ng program na nagpapakita, kung ang mga digit ay nasa pababang pagkakasunud-sunod, ang mga pangalan ng mga digit ng numero sa Ingles, kung hindi.

sa Russian.
9.
Bibigyan ka ng dalawang digit sa sistema ng decimal na numero. Sumulat ng isang programa na nagpapakita ng mga pangalan sa Ingles ng mga digit ng kabuuan ng mga digit na ito.
10.
Bibigyan ka ng dalawang digit sa sistema ng decimal na numero. Sumulat ng isang programa na nagpapakita ng mga pangalan sa Russian ng mga digit ng produkto ng mga digit na ito.
11.
Bibigyan ka ng dalawang digit sa sistema ng decimal na numero. Sumulat ng isang programa na nagpapakita ng pangalan sa Russian ng digit ng modulus ng pagkakaiba ng mga digit na ito.
12.
Bibigyan ka ng dalawang digit sa sistema ng decimal na numero. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit sa Ingles ng quotient at ang natitira sa integer division ng mga numerong ito.
13.
Ibinigay ang dalawang-digit na positive integer sa sistema ng decimal na numero. Sumulat ng program na nagpapakita, kung ang pinakamataas na digit ay tatlong beses ang pinakamababang digit, ang mga pangalan ng mga digit ng numero sa Ingles, kung hindi.

sa Russian.
14.
Ibinigay ang dalawang-digit na positive integer sa sistema ng decimal na numero. Sumulat ng isang programa na nagpi-print ng pangalan ng digit ng isang numero na may mas malaking halaga sa Ingles, at ang pangalan ng digit ng isang numero na may mas maliit na halaga,

sa Russian.

86 Programming linear algorithm sa system Tagabuo ng C++
15.
Ibinigay ang dalawang-digit na positive integer sa septimal number system. Sumulat ng isang programa na nagpi-print ng pangalan ng digit ng isang numero na may mas malaking halaga sa Ingles, at ang pangalan ng digit ng isang numero na may mas maliit na halaga,

sa Russian.
16.
Ibinigay ang dalawang-digit na positive integer sa hexadecimal number system. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng isang numero sa Ingles.
17.
Ibinigay ang dalawang integer na dalawang-digit na positibong numero sa ternary number system. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng kabuuan ng mga numerong ito sa Russian.
18.
Dalawang dalawang-digit na positive integer sa binary number system ang ibinibigay. Sumulat ng isang programa na nagpapakita ng mga pangalan ng mga digit ng kabuuan ng mga numerong ito sa Ingles.
19.
Ibinigay ang dalawang-digit na positive integer sa limang-digit na sistema ng numero. Sumulat ng program na nagpapakita, kung ang mga digit ay nasa pataas na pagkakasunud-sunod, ang mga pangalan ng mga digit ng numero sa Ingles, kung hindi.

sa Russian.
20.
Ibinigay ang dalawang-digit na positive integer sa hexadecimal number system. Sumulat ng isang programa na nagpapakita, kung ang pinakamataas na digit ay limang beses ang pinakamababang digit, ang mga pangalan ng mga digit ng numero sa Russian, kung hindi man

sa Ingles.
21.
Dalawang digit ang ibinibigay sa octal number system. Sumulat ng isang programa na nagpapakita ng mga pangalan sa Russian ng mga digit ng modulus ng pagkakaiba ng mga digit na ito.
22.
Dalawang digit ang ibinibigay sa octal number system. Sumulat ng isang programa na nagpapakita ng mga pangalan sa Russian ng mga digit ng kabuuan ng dalawang digit na ito.
23.
Ibinigay ang dalawang-digit na positive integer sa septimal number system. Sumulat ng isang programa na nagpapakita, kung ang pinakamataas na digit ay tatlong beses ang pinakamababa, ang mga pangalan ng mga digit ng numero sa Russian, kung hindi man

sa Ingles.
24.
Ibinigay ang dalawang-digit na positive integer sa octal number system. Sumulat ng isang programa na nagpapakita ng pangalan ng digit ng isang numero na may mas malaking halaga sa Russian, at sa

Programming gamit ang One-Dimensional Arrays
87 ang ranggo ng digit ng numero na may pinakamababang halaga,

sa Ingles.
25.
Ibinigay ang dalawang-digit na positive integer sa septimal number system. Sumulat ng isang programa na nagpi-print ng pangalan ng mga digit ng isang numero na may halagang mas mababa sa 4 sa Russian, at ang pangalan ng mga digit ng numero na may halaga na mas malaki kaysa sa o katumbas ng 4,

sa Ingles.
26.
Ibinigay ang dalawang-digit na positive integer sa hexadecimal number system. Sumulat ng isang programa na nagpapakita ng pangalan ng mga digit ng isang numero na may halagang mas mababa sa 3 sa Russian, at ang pangalan ng mga digit ng isang numero na may halaga na mas malaki kaysa sa o katumbas ng 3,

sa Ingles.
27.
Ibinigay ang unang dalawang titik (case insensitive, parehong lowercase at uppercase) ng pangalan ng buwan ng taon. Sumulat ng isang programa na nagpapakita ng buong pangalan ng buwan ng taon sa Russian.
28.
Ibinigay ang unang dalawang titik (case insensitive, parehong lowercase at uppercase) ng pangalan ng araw ng linggo. Sumulat ng isang programa na nagpapakita ng buong pangalan ng araw ng linggo sa Russian.
29.
Sa lumang kalendaryo ng Hapon, isang 60-taong cycle ang pinagtibay, na binubuo ng limang 12-taong sub-cycle. Ang mga subcycle ay itinalaga ng mga pangalan ng kulay: berde, pula, dilaw, puti at itim. Sa bawat sub-cycle, ang mga taon ay ipinangalan sa mga hayop: daga, baka, tigre, liyebre, dragon, ahas, kabayo, tupa, unggoy, manok, aso at baboy (1984 - ang taon ng berdeng daga - ang simula ng sa susunod na cycle). Sumulat ng isang programa na naglalagay ng bilang ng isang tiyak na taon ng ating panahon at nagpi-print ng pangalan nito ayon sa lumang kalendaryo ng Hapon.
30.
Ibinigay ang dalawang-digit na positive integer sa sistema ng decimal na numero. Sumulat ng isang programa na nagpapakita ng pangalan ng mga digit ng isang numero na may halagang mas mataas sa 5 sa Russian, at ang pangalan ng mga digit ng isang numero na may halagang mas mababa sa o katumbas ng 5,

sa Ingles.

88 Programming linear algorithm sa system Tagabuo ng C++
4 PAGPROGRAMA NG CYCLIC
ALGORITHMS SA C++ BUILDER SYSTEM
Sa seksyong ito, isinasagawa ang pag-aaral ng mga language loop operator.
C++, pagkuha ng mga kasanayan sa programming cyclic algorithm, pagpapakilala
Oo, pag-compile at pag-debug ng mga programa.
4.1
Pangunahing konsepto
Sa dila Tagabuo ng C++ Mayroong tatlong mga pahayag ng loop:
1.
Loop na may precondition ( habang);
2.
Loop na may postcondition ( gawin);
3.
Loop na may counter ( para sa).
Loop na pahayag na may paunang kondisyon habang (Larawan 4.1):
habang(kondisyon) (loop body)
Larawan 4.1

Scheme ng loop operator algorithm habang
Kung ang resulta ng pagsusuri ng kondisyon ay totoo(totoo), pagkatapos ay ang loop body ay isasagawa at ang paglipat sa pagsusuri ng kondisyon ay isasagawa muli. Kung ang resulta ng pagsusuri ng kondisyon ay mali(false), pagkatapos ay lalabas ang loop at tumalon sa pahayag kasunod ng cyclic na pahayag habang.
Kung, bago ang unang pagpapatupad ng loop, ang halaga ng expression ay mali, ang loop body ay hindi naisakatuparan at ang paglipat sa susunod na pahayag ay nangyayari.
Kundisyon
Loop na katawan
Oo
Hindi

Programming gamit ang One-Dimensional Arrays
89
Halimbawa:
Kalkulahin ang kabuuan ng mga kakaibang numero sa pagitan ng 1 at 10.
( int k=1, s=0; habang (k ( s+=k; k+=2;
}
}
Loop na pahayag na may postcondition gawin (Larawan 4.2):
gawin(katawan ng loop) habang(kundisyon); oo walang kondisyon
Loop na katawan
Larawan 4.2

Scheme ng loop operator algorithm gawin habang
Ang kundisyon ay isang expression ng isang boolean na uri, ang loop body ay isang simple o tambalang pahayag.
Katawan ng loop ng pahayag

Inilalarawan ng isang identifier ang mga variable ng isang uri ng boolean Boolean . Maaari lamang silang kumuha ng dalawang halaga - Mali (Mali) at totoo (totoo). Inilalarawan din ang mga ito sa seksyon ng variable na deklarasyon. Var<имя>: Boolean;

Maaaring kasama ang mga Boolean expression:

n booleans,

n ugnayang operasyon (<- меньше, >- higit pa,<=- меньше или равно, >=- mas malaki sa o katumbas,<>- hindi pantay, = - pantay).

n lohikal na operasyon At, O, Hindi

n diff. mga aksyon at pag-andar


Ang Turbo Pascal ay may mga lohikal na operasyon na maaaring ilapat sa mga variable ng isang boolean na uri. Ang mga ito ay hindi, at, o at xor na mga operasyon.

Operasyon hindi(hindi) ay may isang operand at bumubuo ng lohikal na negation nito. Ang resulta ng not operation ay False kung ang operand ay true at True kung ang operand ay false. Kaya, hindi True False (untrue is a lie) hindi False True (non-false is true).

Resulta ng operasyon at(i) ay totoo lamang kung ang parehong mga operand nito ay totoo, at mali sa lahat ng iba pang mga kaso (boolean multiplication).

Resulta ng operasyon o(o) ay totoo kung ang alinman sa mga operand nito ay totoo, at mali lamang kung ang parehong mga operand ay mali (lohikal na karagdagan).

Ang mga lohikal, relational, at arithmetic na operasyon ay kadalasang nangyayari sa parehong expression. Sa kasong ito, ang mga ugnayan sa kaliwa at kanan ng tanda ng lohikal na operasyon ay dapat na nakapaloob sa mga bracket, dahil ang mga lohikal na operasyon ay may mas mataas na priyoridad. Sa pangkalahatan, ang sumusunod na priyoridad ng mga operasyon ay pinagtibay:

2. at, *, /, div, mod

3. o, +, -

4. mga pagpapatakbo ng kaugnayan (<- меньше, >- higit pa,<=- меньше или равно, >=- mas malaki sa o katumbas,<>- hindi pantay, = - pantay).

Bilang karagdagan, ang pagkakasunud-sunod ng mga operasyon ay maaaring baguhin sa pamamagitan ng mga panaklong. Halimbawa, sa isang lohikal na expression, inaayos namin ang pagkakasunud-sunod ng mga aksyon:

AorBandnot(AorB)


Ang nakakulong o operator ay unang pinaandar, na sinusundan ng hindi, at, o mga operator. Kung papalitan natin ang mga halagang True at False sa halip na mga variable A at B, kung gayon, gamit ang napag-isipang pamamaraan, makukuha natin ang halaga ng buong expression na katumbas ng True.

Pagsasanay 5: . Sumulat sa isang kuwaderno at kalkulahin ang mga halaga ng mga expression

na may a=10, b=20, c=true, d=false: a)(a>5) at (b>5) at (a<20) and (b<30);

b) hindi (a<15) or not (b<30);

c) c o d at (b=20).

Pansin ! Sa Pascal, walang paraan upang magpasok ng boolean data gamit ang read statement. Gayunpaman, ang output ng mga halaga ng mga variable ng isang uri ng boolean ay ibinibigay gamit ang write operator. Halimbawa, pagkatapos isagawa ang write (5>2) operator, ang True ay ipapakita sa screen.

Mga tanong at gawain sa tahanan:

1. Paano inilarawan ang isang boolean variable at anong mga halaga ang maaari nitong kunin?

2. Ano ang maaaring isama sa mga lohikal na pagpapahayag. Magbigay ng mga halimbawa ng mga simpleng lohikal na expression.

3. Sabihin sa amin ang tungkol sa mga lohikal na operasyon sa Pascal. Magbigay ng mga halimbawa ng tambalang lohikal na expression.

4. Ano ang priyoridad ng iba't ibang operasyon sa Pascal. Magbigay ng halimbawa.


Mga gawain:

№19.

A. ang integer k ay nahahati sa 7;

C. Kahit isa sa mga integer na x, y ay pantay;

G. x=max(x, y, z), ibig sabihin, x ang pinakamalaki sa tatlong numerong x, y, z;

D. (huwag gumamit ng hindi operasyon)

E. kahit isa sa mga lohikal na variable a at b ay Tama;

G. Ang mga variable ng Boolean na a at b ay parehong True.

№20. Tukuyin ang pagkakasunud-sunod kung saan isinasagawa ang mga operasyon kapag sinusuri ang mga expression:

a) a at b o hindi c at d; b) (x>=0) o hindi c at d.

№21. Suriin ang mga sumusunod na expression na may a=True, b=False:

a) a o b at hindi a; b)(a o b) at hindi a; sa) hindi a at b; G) hindi (a at b)

№22. Gumawa ng isang programa: Sa mga pagsusulit sa pasukan, ang aplikante ay pumasa sa physics, computer science, komposisyon. Papasok ang aplikante kung nakatanggap siya ng 5 sa computer science at nakakuha ng hindi bababa sa 13 puntos para sa tatlong pagsusulit. Totoo ba na siya ay pumasok (i-print ang Tama / Mali)?

§ 8. Paglutas ng mga problema sa paksang "Linear programs. Mga dami ng Boolean."

Hal. 7 . Kalkulahin ang mga halaga ng expression:

a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

b) k mod 7 = k div5-1 at k=15;

c) kakaiba(trunc(10*p)) sa p=0.182;

d) hindi kakaiba(n) para sa n=0;

e) t at (p mod 3=0) sa t=totoo, p=101010;

e) (x*y<>0) at (y>x) na may x=2, y=1;

g) (x*y<>0) o (y>x) kapag x=2, y=1;

h) a o (hindi b) na may a=Mali, b=Tama;

Hal. walo. Sumulat ng expression sa Pascal na totoo kung ang tinukoy na kundisyon ay natutugunan at mali kung hindi:

a) x ay kabilang sa segment;

b) ang x ay nasa labas ng segment;

c) * x ay kabilang sa segment o [-1, 1];

d) * x ay nasa labas ng mga segment at [-1, 1];

e) bawat isa sa mga numerong x, y, z ay positibo;

g) wala sa mga numerong x, y, z ang positibo;

h) isa lamang sa mga numerong x, y, z ang positibo;

i) ang boolean variable a ay may value na True, ang boolean variable b ay may value na False;


j) * isang taon na may serial number na y ay isang leap year (ang isang taon ay isang leap year kung ang numero nito ay isang multiple ng 4, ngunit sa mga multiple ng 100, mga multiple lang ng 400 ang leap year, halimbawa, 1700, Ang 1800 at 1900 ay di-leap year, ang 2000 ay isang leap year).

Hal. siyam . Gumuhit sa (x, y) na eroplano ng isang lugar kung saan at kung saan totoo ang tinukoy na expression:

a)* (y>=x) at (y+x>=0) at (y<=1);

b) (sqr(x)+sqr(y)<1) or (y>0) at (abs(x)<=1);

c) (trunc(y)=0 at (round(x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

e) (sqr(x)+sqr(y)<=4)=(y<=x).

Hal. sampu ..Ang aklat ay nagkakahalaga ng X rubles. Ang mamimili ay may mga banknote sa mga denominasyon na 50, 10, 5, 1 rubles. Ilan at anong mga banknote ang dapat kong kunin para mabayaran ang aklat na may pinakamababang bilang ng mga banknote?