Loogiset lausekkeet. Loogiset lausekkeet X kuuluu segmenttiin

Oppitunti sarjasta " Geometriset algoritmit»

Hei rakas lukija!

Tänään tarkastelemme toista tyypillistä ongelmaa geometristen algoritmien sarjasta. Kirjoitetaan funktio, joka tarkistaa kuuluvat mielivaltainen pisteitä segmentissä, annetaan sen alun ja lopun koordinaatteilla.

Vertailuoperaatioiden toteuttamiseksi todellisen datan kanssa kirjoitamme vielä kaksi funktiota: EqPoint()-funktion, joka tarkistaa, osuvatko kaksi pistettä tasossa, ja RealMoreEq()-funktion, jonka avulla tarkistamme ”>=” suhde (suurempi tai yhtä suuri). Syy erikoistoimintojen käyttöönotolle on meille jo tiedossa.

Tehtävä. Tarkistaa, kuuluu onko piste segmentissä.

Olkoot pisteet janan aloitus- ja loppupisteet. — mielivaltainen piste koneessa.

Vektorilla, jonka alku on pisteessä ja loppu pisteessä, on koordinaatit (x2-x1, y2-y1).

Jos P(x, y) on mielivaltainen piste, niin vektorin koordinaatit ovat yhtä suuret: (x-x1, y – y1).

Piste P kuuluu segmenttiin, jos:

Ohjelma geom3; Const _Eps: Todellinen = 1e-3; (laskennan tarkkuus) var x1,y1,x2,y2,x,y:real; Funktio RealEq(Const a, b:Real):Totuusarvo; (tiukasti yhtä suuri) begin RealEq:= Abs(a-b)<= _Eps End; {RealEq} Function RealMoreEq(Const a, b:Real):Boolean; {больше или равно} begin RealMoreEq:= a - b >=_EpsEnd; (RealMoreEq) Funktio EqPoint(x1,y1,x2,y2:real):Totuusarvo; (Tee kaksi tason pistettä yhtenevästi) alkaa EqPoint:=RealEq(x1,x2)ja RealEq(y1,y2) end; (EqPoint) Funktio AtOtres(x1,y1,x2,y2,x,y:todellinen): Boolen; (Tarkistaa, kuuluuko piste P segmenttiin P1P2) Aloita Jos EqPoint(x1,y1,x2,y2) Sitten AtOtres:= EqPoint(x1,y1,x,y) (pisteet P1 ja P2 ovat samat, tuloksen määrää pisteiden P1 ja P yhteensopivuus. Muut AtOtres:= RealEq((x-x1)*(y2-y1)- (y-y1)*(x2-x1),0)ja (RealMoreEq(x,x1)and RealMoreEq( x2,x)Tai RealMoreEq(x ,x2)ja RealMoreEq(x1,x)) loppu; (AtOtres) begin (main) writeln(Anna pisteiden koordinaatit: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); jos AtOtres(x1, y1,x2,y2,x,y) then writeln("Kyllä.") else writeln("Ei."); loppu. (pää)

Ohjelman suorituksen tulokset.

Syötä pisteen koordinaatit: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Joo.

Testitulokset GeoGebra-ohjelmassa:


Tänään kirjoitimme funktion AtOtres(), joka tarkistaa, kuuluuko mielivaltainen piste koordinaattiensa määrittelemään segmenttiin.

Esiteltiin vielä kaksi funktiota: EqPoint() ja RealMoreEq() vertailutoimintojen toteuttamiseksi todellisille tiedoille. Ensimmäinen tarkistaa, osuvatko kaksi pistettä tasossa, toisella tarkistetaan ”>=”-suhde.

Seuraavalla oppitunnilla kirjoitetaan aiemmin kirjoitettujen menettelytapojen perusteella menettely kahden janan leikkauspisteen koordinaattien määrittämiseksi.

Tällä sanon hyvästit sinulle. Nähdään seuraavalla oppitunnilla.

Valitse itsenäiseen työhön tehtävä tehtävä opettajasi kanssa alla olevista harjoituksista.

1. Laske lausekkeen arvot:

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

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

c) pariton(trunc(10*p)) p = 0,182;

d) ei pariton (n), kun n = 0;

e) t ja (p mod 3 = 0), jossa t = tosi, p = 101010;

e) (x*y<>0) ja (y>x) kun x = 2, y = 1;

g) (x*y<>0) tai (y>x) kun x = 2, y = 1;

h) a tai (ei b) kun a = epätosi, b = tosi;

2. Kirjoita Pascalilla relaatio, joka on tosi, kun määritetty ehto täyttyy, ja epätosi muuten:

a) kokonaisluku k on jaollinen 7:llä;

b) yhtälöllä ei ole todellisia juuria;

c) piste (x, y) on säteen R ulkopuolella, jonka keskipiste on pisteessä (1,0);

d) luonnollinen luku N on luonnollisen luvun neliö;

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

ja) (älä käytä ei-toimintoa)g

h) ainakin yhdellä loogisista muuttujista a ja b on arvo True;

i) sekä loogisten muuttujien a että b arvo on True.

3. Ilmoita toimintojen järjestys lausekkeita laskettaessa:

a) a ja b tai ei c ja d;

b) (x>=0) tai ei c ja d.

4. Laske seuraavat lausekkeet arvoille a=True, b=False:

a) a tai b eikä a;

b) (a tai b) eikä a;

c) ei a ja b;

d) ei (a ja b)

5. Kirjoita Pascal-kielellä lauseke, joka on tosi, jos määritetty ehto täyttyy, ja epätosi muuten:

a) x kuuluu segmenttiin;

b) x on segmentin ulkopuolella;

c)* x kuuluu segmenttiin tai [-1, 1];

d)* x on segmenttien ja [-1, 1] ulkopuolella;

e) kukin luvuista x, y, z on positiivinen;

g) mikään luvuista x, y, z ei ole positiivinen;

h) vain yksi luvuista x, y, z on positiivinen;

i) loogisen muuttujan a arvo on True, loogisen muuttujan b arvo on False;

j)* vuosi, jonka sarjanumero on y, on karkausvuosi (karkausvuosi, jos sen numero on 4:n kerrannainen, mutta 100:n kerrannaiset vain 400:n kerrannaiset ovat karkausvuosia, esimerkiksi 1700, 1800 ja 1900 ovat ei-karkausvuosia, 2000 on karkausvuosi).

6. Piirrä tasolle (x, y) alue, jolla ja vain jossa ilmoitettu lauseke on tosi:

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

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

c) (trunc(y)=0 ja (kierros(x)=0);

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

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

7) On ehdollinen operaattori:

writeln ('hurraa!')

writeln ('huono...')

Onko mahdollista korvata se seuraavilla lauseilla:

a) jos d=10 b) jos ei (d=10)

writeln (’hurraa!’) writeln (’hurraa!’)

writeln('huono...'); writeln('huono...');

c) jos ei (d=10) d) jos ei (d<>10)

writeln ('huono...') writeln ('huono...')

writeln('hurraa!'); writeln('hurraa!');

8) Mitkä ovat muuttujien j, k arvot ehdollisen lauseen suorittamisen jälkeen:

jos muuttujien alkuarvot ovat yhtä suuret:

Huomautus. Dec (k,2) -operaattorin suorittamisen seurauksena muuttujan k arvo pienenee 2:lla.

Boolen muuttujat saavat yleensä arvonsa suorittamalla vertailuja ja matemaattisia operaatioita (käsiteltiin edellisellä oppitunnilla) sekä käyttämällä tiettyjä Boolen operaatioita.

Turbo Pascalilla on loogisia operaatioita, jotka koskevat loogisen tyyppisiä muuttujia. Nämä ovat operaatioita ei, ja, tai ja xor. Tässä aiheessa tarkastellaan kolmea loogista operaatiota. Näiden toimintojen nimitykset ja tulokset on esitetty taulukossa. Harkitse sitä.

Operaatio ei(ei) on yksi operandi ja se muodostaa sen loogisen negation. Not-operaation tulos on False, jos operandi on tosi, ja True, jos operandi on epätosi. Niin,

ei totta Väärä (epätotuus on valhetta)

ei väärin Totta (ei valhe ole totta)

Leikkauksen tulos ja(ja) on tosi vain, jos molemmat sen operandit ovat tosi, ja epätosi kaikissa muissa tapauksissa.

Leikkauksen tulos tai(tai) on tosi, jos jompikumpi sen operandeista on tosi, ja epätosi vain, jos molemmat operandit ovat epätosi.

Harjoittele . Yritä määrittää Boolen operaatioiden merkitys lauseille:

  1. Koululainen jää kotiin talviloman ajaksi tai lähtee lomalle jonnekin.
  2. Philip Kirkorov on laulaja ja puimurin kuljettaja.
  3. Koululaiset ovat poikia ja tyttöjä..

Loogiset operaatiot, relaatiooperaatiot ja aritmeettiset operaatiot esiintyvät usein samassa lausekkeessa. Tässä tapauksessa loogisen operaation merkin vasemmalla ja oikealla puolella olevat suhteet tulee laittaa sulkeisiin, koska loogisilla operaatioilla on korkeampi prioriteetti. Yleensä seuraavat toimintojen prioriteetit hyväksytään:

  • ja, *, /, div, mod
  • tai, +, -
  • parisuhdetoimintaa..

. Looginen operaatio ja sitä kutsutaan myös loogiseksi kertolaskuksi, ja loogista toimintaa tai kutsutaan myös loogiseksi yhteenlaskuksi.

Lisäksi toimintojen järjestystä voidaan muuttaa suluilla. Esimerkiksi loogisessa lausekkeessa järjestämme toimintojen järjestyksen

A tai B ja ei (A tai B)

Suluissa oleva toiminto tai suoritetaan ensin, sen jälkeen not, ja tai -operaatiot. Jos korvaamme arvot True ja False muuttujien A ja B sijasta, niin jo käsitellyllä menettelyllä saamme koko lausekkeen arvon, joka on yhtä suuri kuin True.

Harjoittele . Kirjoita muistikirjaasi ja laske lausekkeiden arvot a=10, b=20, c=true, d=false:

  • (a>5) ja (b>5) ja (a<20) and (b<30);
  • ei (a<15) or not (b<30);
  • c tai d ja (b = 20);

Huomio! Pascalissa ei ole mahdollista syöttää Boolen dataa lukuoperaattorilla. Boolen tyyppisten muuttujien arvot on kuitenkin mahdollista tulostaa kirjoitusoperaattorilla.

Esimerkiksi kirjoitus (5>2) -käskyn suorittamisen jälkeen näytöllä näkyy True.

Itsenäinen työ

Valitse itsenäiseen työhön tehtävä tehtävä opettajasi kanssa alla olevista harjoituksista.

  1. Laske lausekkeen arvot:

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

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

    c) pariton(trunc(10*p)) p = 0,182;

    d) ei pariton (n), kun n = 0;

    e) t ja (p mod 3 = 0), jossa t = tosi, p = 101010;

    e) (x*y<>0) ja (y>x) kun x = 2, y = 1;

    g) (x*y<>0) tai (y>x) kun x = 2, y = 1;

    h) a tai (ei b) kun a = epätosi, b = tosi;

  2. Kirjoita Pascalilla relaatio, joka on tosi, jos määritetty ehto täyttyy, ja epätosi muuten:

    a) kokonaisluku k on jaollinen 7:llä;

    b) piste (x, y) on säteen R ulkopuolella, jonka keskipiste on pisteessä (1,0);

    c) luonnollinen luku N on luonnollisen luvun neliö;

    d) 0

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

    e) ainakin yhdellä loogisista muuttujista a ja b on arvo True;

    g) molemmilla loogisilla muuttujilla a ja b on arvo True.

  3. Määritä toimintojen järjestys lausekkeita arvioitaessa:

    a) a ja b tai ei c ja d;

    b) (x>=0) tai ei c ja d.

  4. Arvioi seuraavat lausekkeet, kun a=True, b=False:

    a) a tai b eikä a;

    b) (a tai b) eikä a;

    c) ei a ja b;

    d) ei (a ja b)

  5. Kirjoita Pascalilla lauseke, joka on tosi, jos määritetty ehto täyttyy, ja epätosi muuten:

    a) x kuuluu segmenttiin;

    b) x on segmentin ulkopuolella;

    c)* x kuuluu segmenttiin tai [-1, 1];

    d)* x on segmenttien ja [-1, 1] ulkopuolella;

    e) kukin luvuista x, y, z on positiivinen;

    g) mikään luvuista x, y, z ei ole positiivinen;

    h) vain yksi luvuista x, y, z on positiivinen;

    i) loogisen muuttujan a arvo on True, loogisen muuttujan b arvo on False;

    j)* vuosi, jonka sarjanumero on y, on karkausvuosi (karkausvuosi, jos sen numero on 4:n kerrannainen, mutta 100:n kerrannaiset vain 400:n kerrannaiset ovat karkausvuosia, esimerkiksi 1700, 1800 ja 1900 ovat ei-karkausvuosia, 2000 on karkausvuosi).

  6. Piirrä tasolle (x, y) alue, jossa ja vain jossa ilmoitettu lauseke on tosi:

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

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

    c) (trunc(y)=0 ja (kierros(x)=0);

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

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

  7. On ehdollinen operaattori:
    jos d<>10
    sitten
    writeln ('hurraa!')
    muu
    writeln('huono...');

    Onko mahdollista korvata se seuraavilla lauseilla:

  8. Mitkä ovat muuttujien j, k arvot ehdollisen lauseen suorittamisen jälkeen:
    jos j>k
    sitten
    j:=k-2
    muu
    dec(k,2);
    jos muuttujien alkuarvot ovat yhtä suuret:
    a) j = 3, k = 5;
    b) j = 3, k = 3;
    c) j = 3, k = 2.

Huomautus . Dec (k,2) -operaattorin suorittamisen seurauksena muuttujan k arvo pienenee 2:lla.

Boolen tyyppiset muuttujat kuvataan tunnisteen avulla Boolen . Niillä voi olla vain kaksi merkitystä - Väärä (valehdella) Ja Totta (totta). Ne on myös kuvattu muuttujan kuvaus -osiossa. Var<имя>: Boolen;

Loogiset lausekkeet voivat sisältää:

n loogista arvoa,

n relaatiooperaatiot (<- меньше, >- enemmän,<=- меньше или равно, >=- suurempi tai yhtä suuri kuin,<>- ei yhtä suuri, =- yhtä suuri).

n loogiset operaatiot Ja, Tai, Ei

n joulukuuta toimintoja ja toimintoja


Turbo Pascalilla on loogisia operaatioita, jotka koskevat loogisen tyyppisiä muuttujia. Nämä ovat operaatioita ei, ja, tai ja xor.

Operaatio ei(ei) on yksi operandi ja se muodostaa sen loogisen negation. Ei-operaation tulos on False, jos operandi on tosi, ja True, jos operandi on epätosi. Ei siis totta Väärää (epätotuus on valhe) ei väärin Totta (ei valhe on totuus).

Leikkauksen tulos ja(ja) on tosi vain, jos molemmat sen operandit ovat tosi, ja epätosi kaikissa muissa tapauksissa (looginen kertolasku).

Leikkauksen tulos tai(tai) on tosi, jos jompikumpi sen operandeista on tosi, ja epätosi vain, jos molemmat operandit ovat epätosi (looginen lisäys).

Loogiset operaatiot, relaatiooperaatiot ja aritmeettiset operaatiot esiintyvät usein samassa lausekkeessa. Tässä tapauksessa loogisen operaation merkin vasemmalla ja oikealla puolella olevat suhteet on jätettävä sulkeisiin, koska loogisilla operaatioilla on korkeampi prioriteetti. Yleensä seuraavat toimintojen prioriteetit hyväksytään:

2. ja, *, /, div, mod

3. tai, +, -

4. relaatiooperaatiot (<- меньше, >- enemmän,<=- меньше или равно, >=- suurempi tai yhtä suuri kuin,<>- ei yhtä suuri, =- yhtä suuri).

Lisäksi toimintojen järjestystä voidaan muuttaa suluilla. Esimerkiksi loogisessa lausekkeessa järjestämme toimintojen järjestyksen:

AorBandnot(AorB)


Suluissa oleva toiminto tai suoritetaan ensin, sen jälkeen not, ja tai -operaatiot. Jos korvaamme arvot True ja False muuttujien A ja B sijasta, niin jo käsitellyllä menettelyllä saamme koko lausekkeen arvon, joka on yhtä suuri kuin True.

Harjoitus 5: . Kirjoita vihkoon ja laske ilmaisujen merkitykset

jossa a=10, b=20, c=tosi, d=false: A)(a>5) ja (b>5) ja (a<20) and (b<30);

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

c) c tai d ja (b = 20).

Huomio ! Pascalissa ei ole mahdollista syöttää Boolen dataa lukuoperaattorilla. Boolen tyyppisten muuttujien arvot on kuitenkin mahdollista tulostaa kirjoitusoperaattorilla. Esimerkiksi, kun kirjoitus (5>2) -käsky on suoritettu, True näkyy näytöllä.

Kotitehtävät ja kysymykset:

1. Miten looginen muuttuja kuvataan ja mitä arvoja se voi ottaa?

2. Mitä loogisiin lausekkeisiin voidaan sisällyttää? Anna esimerkkejä yksinkertaisista loogisista lausekkeista.

3. Kerro meille Pascalin loogisista operaatioista. Anna esimerkkejä yhdistetyistä loogisista lausekkeista.

4. Mikä on Pascalin eri toimintojen prioriteetti. Anna esimerkki.


Tehtävät:

№19.

A. kokonaisluku k on jaollinen 7:llä;

B. Ainakin yksi kokonaisluvuista x, y on parillinen;

G. x=max(x,y,z), eli x on suurin kolmesta luvusta x,y,z;

D. (älä käytä ei-toimintoa)

E. ainakin yhdellä loogisista muuttujista a ja b on arvo True;

G. molemmilla loogisilla muuttujilla a ja b on arvo True.

№20. Määritä toimintojen järjestys lausekkeita arvioitaessa:

A) a ja b tai ei c ja d; b) (x>=0) tai ei c ja d.

№21. Arvioi seuraavat lausekkeet, kun a=True, b=False:

A) a tai b eikä a; b)(a tai b) eikä a; V) ei a ja b; G) ei (a ja b)

№22. Luo ohjelma: Valintakokeissa hakija suoritti fysiikan, tietojenkäsittelytieteen ja esseen. Hakija hyväksytään, jos hän saa tietojenkäsittelytieteen arvosanan 5 ja saa vähintään 13 pistettä kolmesta kokeesta. Onko totta, että hänet hyväksyttiin (tulos Tosi/Epätosi)?

§ 8. Tehtävän ratkaiseminen aiheesta ”Lineaariset ohjelmat. Loogiset arvot."

Esim. 7 . Laske lausekkeen arvot:

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

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

c) pariton(trunc(10*p)) p = 0,182;

d) ei pariton (n), kun n = 0;

e) t ja (p mod 3 = 0), jossa t = tosi, p = 101010;

e) (x*y<>0) ja (y>x) kun x = 2, y = 1;

g) (x*y<>0) tai (y>x) kun x = 2, y = 1;

h) a tai (ei b) kun a = epätosi, b = tosi;

Esim. 8. Kirjoita Pascalilla lauseke, joka on tosi, jos määritetty ehto täyttyy, ja epätosi muuten:

a) x kuuluu segmenttiin;

b) x on segmentin ulkopuolella;

c)* x kuuluu segmenttiin tai [-1, 1];

d)* x on segmenttien ja [-1, 1] ulkopuolella;

e) kukin luvuista x, y, z on positiivinen;

g) mikään luvuista x, y, z ei ole positiivinen;

h) vain yksi luvuista x, y, z on positiivinen;

i) loogisen muuttujan a arvo on True, loogisen muuttujan b arvo on False;


j)* vuosi, jonka sarjanumero on y, on karkausvuosi (karkausvuosi, jos sen numero on 4:n kerrannainen, mutta 100:n kerrannaiset vain 400:n kerrannaiset ovat karkausvuosia, esimerkiksi 1700, 1800 ja 1900 ovat ei-karkausvuosia, 2000 on karkausvuosi).

Esim. 9 . Piirrä tasolle (x, y) alue, jossa ja vain jossa ilmoitettu lauseke on tosi:

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

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

c) (trunc(y)=0 ja (kierros(x)=0);

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

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

Esim. 10 ..Kirja maksaa X ruplaa. Ostajalla on seteleitä 50, 10, 5, 1 ruplaa. Kuinka monta ja millaisia ​​laskuja sinun tulee ottaa, jotta voit maksaa kirjan vähimmäismäärällä?

. X kuuluu segmenttiin ;
x sijaitsee segmentin ulkopuolella;
x kuuluu segmenttiin tai [-1,1];
x on segmentin tai [-1,1] ulkopuolella.
3.
Selitä ehdollisten lauseiden rakenne ja säännöt.
4.
Kirjoita määritetty toiminto yhtenä ehdollisena lauseena:
cos
2
x, 0x klo =
1-synti
2
x, muuten.
5.
z
int z=0, x=1, y=

1;

80 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder
jos (x>0) jos (y>0) z=1; muuten z = 2;
6.
Mikä arvo muuttujalla on? z operaattorien suorittamisen jälkeen:
int z=0, x=

1, y = 1;
jos (x) (jos (y>0) z = 1;) muuten z = 2;
7.
Mikä arvo muuttujalla on? z operaattorien suorittamisen jälkeen:
int z = 0, x = 0, y = 1;
jos (x) (jos (y>0) z = 1;) muuten z = 2;
8.
Mikä arvo muuttujalla on? z operaattorien suorittamisen jälkeen:
int z = 0, x = 3, y = 1;
jos (x) (jos (y) z = 1;) muuten z = 2;
9.
Ilmoita virheet seuraavissa lausumissa:
jos (1
muuten x=0; y+ = 1;
10.
int z = 0, x = 0, y = 1;
if (!x) ( if (!(y

1)) z = 1;) muuten z = 2;
11.
Mikä arvo muuttujalla z on lauseiden suorittamisen jälkeen:
int z = 0, x = 1, y = 1;
if (!x) ( if (!(y

1)) z = 1;) muuten z = 2;
12.
Etsi virheet ohjelman fragmentista:
(int n,x; kytkin (k) tapaus + : x:=x-4 tauko; tapaus

-

,

*

, x = 5;
}
Mitä sääntöjä rikottiin ja miten virheet voidaan korjata?


81
3.4
Yksittäiset tehtävät jaksolle 3
Jokaisen opiskelijan on ratkaistava kaksi ensimmäisen ja toisen monimutkaisuuden ongelmaa.
Ensimmäisen vaikeustason ongelmat.
1.
Sinulle annetaan nelinumeroinen positiivinen kokonaisluku. Kirjoita ohjelma, joka tulostaa totta tai väärä riippuen siitä täyttyykö määritetty ehto vai ei: 1 ja 4 numeron summa on yhtä suuri kuin 2 ja 3 numeron tulo.
2.
Annetut reaaliluvut x, y. Jos x ja y ovat negatiivisia, korvaa jokainen arvo sen moduulilla; jos vain yksi niistä on negatiivinen, lisää molempia arvoja 5,5; muissa tapauksissa pienennä molempia arvoja 10 kertaa.
3.
Annetut reaaliluvut x, y. Jos x ja y ovat positiivisia, vähennä kutakin arvoa 5 kertaa; jos molemmat arvot ovat alueella [-3, 9], korvaa molemmat arvot 0:lla; muissa tapauksissa lisää x:ää ja y:tä kolmella.
4.
Annetut reaaliluvut x, y (xy). Korvaa pienempi näistä kahdesta luvusta niiden puolisummalla ja suurempi niiden kaksoistulolla.
5.
Jos kolmen pareittain erillisen reaaliluvun x, y, z summa on pienempi kuin 1, korvaa pienin näistä kolmesta luvusta kahden muun puolisummalla; muussa tapauksessa korvaa pienempi x ja y jäljellä olevien kahden arvon puolikkaalla.
6.
Annetut reaaliluvut a, b, c, d. Jos b>c>d, jätä sitten numerot ennalleen; muussa tapauksessa korvaa kaikki numerot neliöillä.
7.
Selvitä, onko kuusinumeroinen kokonaisluku onnekas. (Luvua kutsutaan onnekkaaksi, jos sen kolmen ensimmäisen numeron summa on yhtä suuri kuin sen kolmen viimeisen numeron summa.)
8.
totta tai väärä riippuen siitä täyttyykö määritetty ehto vai ei: mielivaltaisille reaaliluvuille a, b, c määritä, onko yhtälö ax
2
+bx+c=0 vähintään yksi todellinen ratkaisu.

82 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder
9.
Voit ratkaista seuraavan ongelman kirjoittamalla ohjelman, joka tulostaa totta tai väärä riippuen siitä täyttyykö määritetty ehto vai ei: määritä, onko tietyn nelinumeroisen luvun kahden ensimmäisen numeron summa yhtä suuri kuin sen kahden viimeisen luvun summa.
10.
Joillakin oppilaitoksilla on seuraavat pääsysäännöt. Hakijat suorittavat kaksi koetta, jotka arvioidaan
100 pistettä kukin. Jos hakija saa vähintään 150 pistettä, tämä antaa oikeuden ilmoittautua päätoimiselle osastolle, 100 - 149 - iltaosastolle; alle 100 pistettä tarkoittaa opiskelun hylkäämistä. Kirjoita ohjelma, joka pistemäärästä riippuen kertoo hakijalle hänen pääsyoikeuksistaan.
11.
Kirjoita ohjelma valintaoperaattorilla saadaksesi sanallisen kuvauksen arvosanoista. (1 - "huono", 2 -
"epätyydyttävä", 3 - "tyydyttävä", 4 - "hyvä", 5 -
"Loistava".)
12.
Voit ratkaista seuraavan ongelman kirjoittamalla ohjelman, joka tulostaa totta tai väärä riippuen siitä täyttyykö määritetty ehto vai ei: selvitä, onko tietyn kolminumeroisen luvun numeroiden joukossa identtisiä.
13.
Kirjoita ohjelma, joka tulostaa totta, jos päivämäärä d1, m1 edeltää (vuoden sisällä) päivämäärää d2, m2 ja merkitys väärä muuten.
14.
Kirjoita valintaoperaattorilla ohjelma, joka näyttää koko nimen näytöllä nimen ensimmäisen kirjaimen perusteella
(Ivan, Peter, Nikolai, Vladimir, Georgi).
15.
Kirjoita ohjelma valintaoperaattorilla, joka syötetyn numeron perusteella on 0≤ k≤ 5 tulostaa tämän numeron nimen venäjäksi ja englanniksi.
16.
Annettu kokonaisluku k (1

k

365). Määritä, onko vuoden k. päivä viikonloppu vai työpäivä, jos tammikuun 1. päivä on maanantai.
17.
Annettu todellinen luku x. Laskea f, Jos:











synti
,
1 0
,
0 5
2 11 2
tapauksia
loput
V
x
x
x
klo
x
x
x
klo
f

Ohjelmointi yksiulotteisilla taulukoilla
83 18.
Annettu todellinen luku x. Kirjoita ohjelma laskentaan f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
tapauksia
loput
V
x
x
x
klo
x
x
x
klo
f
19.
Kirjoita valintaoperaattorilla ohjelma, joka näyttää kaupungin nimen ensimmäisen kirjaimen perusteella koko kaupungin nimen (Kursk, Moskova, Tula, Novgorod, Voronezh).
20.
Kirjoita ohjelma valintaoperaattorilla, joka näyttää sukunimen ensimmäisen kirjaimen perusteella koko sukunimen (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Ympyrän keskipisteen ja säteen koordinaatit on annettu. Selvitä, kuuluuko tietty piste, jolla on koordinaatit (x,y) ympyrään.
22.
Kirjoita valintaoperaattorilla ohjelma, joka tulostaa syötetyn eläimen nimen ensimmäisen kirjaimen perusteella eläimen koko nimen (koira, kirahvi, hevonen, apina).
23.
Annettiin kolme eri numeroa a,b,c. Järjestä nämä luvut nousevaan järjestykseen niin a vastasi pienintä lukua b- keskimääräinen luku, c- suurin.
24.
Kirjoita ohjelma valintaoperaattorilla, joka näyttää viikonpäivän nimen numeroin (1-7).
25.
Kirjoita ohjelma valintaoperaattorilla, joka näyttää vuoden kuukauden nimen numeroin (1-12).
26.
Kirjoita valintaoperaattorilla ohjelma, joka tulostaa vuoden kauden nimen syötetyn ensimmäisen kirjaimen perusteella kauden koko nimen.
27.
Sinulle annetaan viisinumeroinen positiivinen kokonaisluku. Kirjoita ohjelma, joka tulostaa totta tai väärä riippuen siitä täyttyykö määritetty ehto vai ei: 1, 3 ja 5 numeron summa on suurempi kuin 2 ja 4 numeron tulo.
28.
Sinulle annetaan nelinumeroinen positiivinen kokonaisluku. Kirjoita ohjelma, joka tulostaa totta tai väärä riippuen

84 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder täyttyykö määritelty ehto vai ei: aritmeettinen keskiarvo 1 ja
4 numeroa ovat suurempia kuin 2 ja 3 numeron summa.
29.
Annettu numero ja kolminumeroinen luku desimaalilukujärjestelmässä. Jos numero vastaa luvun suurinta numeroa, laske luvun numeroiden summa. Jos numero on sama kuin luvun keskimerkki, laske luvun numeroiden tulo. Jos numero on sama kuin luvun vähiten merkitsevä numero, laske luvun numeroiden aritmeettinen keskiarvo. Jos mikään ehdoista ei täyty, laske luvun numeroiden geometrinen keskiarvo.
30.
Annettu numero ja kolminumeroinen luku desimaalilukujärjestelmässä. Jos numero on sama kuin luvun suurin numero, laske luvun numeroiden aritmeettinen keskiarvo. Jos numero on sama kuin luvun keskimerkki, laske luvun numeroiden geometrinen keskiarvo. Jos numero on sama kuin luvun vähiten merkitsevä numero, laske luvun numeroiden summa. Jos mikään ehdoista ei täyty, laske luvun numeroiden tulo
Toisen monimutkaisuustason ongelmat.
1.
Annettu kokonaisluku kaksinumeroinen positiivinen luku kolminumerojärjestelmässä. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet venäjäksi, jos luvun suurin numero on suurempi kuin pienin, muuten
- englanniksi.
2.
Viisinumeroisessa lukujärjestelmässä annetaan kokonaisluku kaksinumeroinen positiivinen luku. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet englanniksi, jos luvun suurin numero on suurempi kuin pienin, muuten
- venäjäksi.
3.
Viisinumeroisessa lukujärjestelmässä annetaan kokonaisluku kaksinumeroinen positiivinen luku. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet englanniksi, jos luvun suurin numero on tasan 2 kertaa suurempi kuin pienin, muuten
- venäjäksi.
4.
Annettu kaksinumeroinen positiivinen kokonaisluku kolminumerojärjestelmässä. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet venäjäksi, jos luvun suurin numero on pienempi kuin pienin, muuten
- englanniksi.

Ohjelmointi yksiulotteisilla taulukoilla
85 5.
Viisinumeroisessa lukujärjestelmässä annetaan kokonaisluku kaksinumeroinen positiivinen luku. Kirjoita ohjelma, joka näyttää numeroiden nimet venäjäksi.
6.
Annettu kokonaisluku kaksinumeroinen positiivinen luku oktaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää numeron numeroiden nimet venäjäksi.
7.
Annettu kaksinumeroinen positiivinen kokonaisluku oktaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos päänumero on pienempi kuin puolet sivunumerosta, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
8.
Kokonaisluku kaksinumeroinen positiivinen luku septaalilukujärjestelmässä on annettu. Kirjoita ohjelma, joka näyttää, jos numerot on järjestetty laskevaan järjestykseen, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
9.
Desimaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää näiden numeroiden summan numeroiden nimet englanniksi.
10.
Desimaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää näiden numeroiden tulon numeroiden nimet venäjäksi.
11.
Desimaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää näiden numeroiden välisen eron moduulin numeroiden nimen venäjäksi.
12.
Desimaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää numeroiden nimet englanniksi näiden lukujen kokonaislukujaon osamäärälle ja jäännökselle.
13.
Annettu kaksinumeroinen positiivinen kokonaisluku yhdeksännumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on kolme kertaa suurempi kuin pienin numero, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
14.
Annettu kaksinumeroinen positiivinen kokonaisluku yhdeksännumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää englannin kielellä suuremman arvon numeron nimen ja pienemmän arvon numeron nimen.

venäjäksi.

86 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder
15.
Annettu kaksinumeroinen positiivinen kokonaisluku septaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää englannin kielellä suuremman arvon numeron nimen ja pienemmän arvon numeron nimen.

venäjäksi.
16.
Annettu kaksinumeroinen positiivinen kokonaisluku heksadesimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää numeroiden nimet englanniksi.
17.
Annettu kaksi kokonaislukua kaksinumeroista positiivista lukua kolminumerojärjestelmässä. Kirjoita ohjelma, joka näyttää näiden lukujen summan numeroiden nimet venäjäksi.
18.
Annettu kaksi kokonaislukua kaksinumeroista positiivista lukua binäärilukujärjestelmässä. Kirjoita ohjelma, joka näyttää näiden lukujen summan numeroiden nimet englanniksi.
19.
Annettu kaksinumeroinen positiivinen kokonaisluku viisinumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos numerot on järjestetty nousevaan järjestykseen, numeron numeroiden nimet englanniksi ja muut

venäjäksi.
20.
Annettu kaksinumeroinen positiivinen kokonaisluku heksadesimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on viisi kertaa suurempi kuin pienin numero, numeron numeroiden nimet venäjäksi, muuten

englanniksi.
21.
Oktaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää näiden numeroiden välisen eron moduulin numeroiden nimet venäjäksi.
22.
Oktaalilukujärjestelmässä annetaan kaksi numeroa. Kirjoita ohjelma, joka näyttää näiden kahden numeron summan numeroiden nimet venäjäksi.
23.
Annettu kaksinumeroinen positiivinen kokonaisluku septaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on kolme kertaa suurempi kuin pienin numero, numeron numeroiden nimet venäjäksi, muuten

englanniksi.
24.
Annettu kaksinumeroinen positiivinen kokonaisluku oktaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää suuremman arvon luvun nimen venäjäksi ja kielellä

Ohjelmointi yksiulotteisilla taulukoilla
87 on pienimmän arvon omaavan numeron järjestys,

englanniksi.
25.
Annettu kaksinumeroinen positiivinen kokonaisluku septaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää venäjän kielellä luvun, jonka arvo on pienempi kuin 4, numeroiden nimet ja luvun, jonka arvo on suurempi tai yhtä suuri kuin 4, numeroiden nimet,

englanniksi.
26.
Annettu kaksinumeroinen positiivinen kokonaisluku heksadesimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää venäjänkielisen luvun numeroiden nimen, jonka arvo on pienempi kuin 3, ja numeron nimen, jonka arvo on suurempi tai yhtä suuri kuin 3,

englanniksi.
27.
Vuoden kuukauden nimen kaksi ensimmäistä kirjainta (kirjainkoolla ei väliä, sekä pienet että isot) annetaan. Kirjoita ohjelma, joka näyttää vuoden kuukauden koko nimen venäjäksi.
28.
Viikonpäivän nimen kaksi ensimmäistä kirjainta (kirjainkoolla ei väliä, sekä pienet että isot) annetaan. Kirjoita ohjelma, joka näyttää viikonpäivän koko nimen venäjäksi.
29.
Vanha japanilainen kalenteri omaksui 60 vuoden syklin, joka koostuu viidestä 12 vuoden alasyklistä. Alasyklit nimettiin värinimillä: vihreä, punainen, keltainen, valkoinen ja musta. Jokaisessa alasyklissä vuodet nimettiin eläinten mukaan: rotta, lehmä, tiikeri, jänis, lohikäärme, käärme, hevonen, lammas, apina, kana, koira ja sika (1984 - vihreän rotan vuosi - oli seuraavan alku sykli). Kirjoita ohjelma, joka syöttää tietyn vuoden jKr numeron ja tulostaa sen nimen vanhan japanilaisen kalenterin mukaan.
30.
Annettu kaksinumeroinen positiivinen kokonaisluku yhdeksännumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää venäjänkielisen luvun numeroiden nimen, jonka arvo on suurempi kuin 5, ja numeron nimen, jonka arvo on pienempi tai yhtä suuri kuin 5,

englanniksi.

88 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder
4 OHJELMOINTISYKLIKKO
ALGORITMIT C++BUILDER-JÄRJESTELMÄSSÄ
Tässä osiossa tarkastellaan kielisilmukkaoperaattoreita
C++, syklisten algoritmien ohjelmoinnin taitojen hankkiminen, johdanto
kyllä, ohjelmien kääntäminen ja virheenkorjaus.
4.1
Peruskonseptit
Kielen päällä C++ Builder Silmukkaoperaattoreita on kolme:
1.
Silmukka ennakkoehdoin ( sillä aikaa);
2.
Silmukka jälkiehdon kanssa ( tehdä);
3.
Silmukka laskurilla ( varten).
Silmukkaoperaattori ennakkoehdoin sillä aikaa (Kuva 4.1):
sillä aikaa(kunto) (silmukan runko)
Kuva 4.1

Silmukkaoperaattorin algoritmikaavio sillä aikaa
Jos ehdon laskennan tulos on totta(tosi), sitten silmukan runko suoritetaan ja siirtyminen ehdon tarkistamiseen suoritetaan uudelleen. Jos ehdon laskennan tulos on väärä(false), silmukka poistuu ja siirtyy syklistä operaattoria seuraavalle operaattorille sillä aikaa.
Jos ennen silmukan ensimmäistä suoritusta lausekkeen arvo oli väärä, silmukan runkoa ei suoriteta ollenkaan ja siirtyy seuraavaan lauseeseen.
Kunto
Loop runko
Joo
Ei

Ohjelmointi yksiulotteisilla taulukoilla
89
Esimerkki:
Laske parittomien lukujen summa välillä 1-10.
( int k=1, s=0; while (k ( s+=k; k+=2;
}
}
Silmukkaoperaattori jälkiehdoin tehdä (Kuva 4.2):
tehdä(silmukan runko) sillä aikaa(kunto); kyllä ​​ei ehtoa
Loop runko
Kuva 4.2

Silmukkaoperaattorin algoritmikaavio tehdä, kun
Ehto on loogisen tyyppinen lauseke, silmukan runko on yksi yksinkertainen tai yhdistelmälause.
Lausuntosilmukan runko

Jos löydät virheen, valitse tekstiosa ja paina Ctrl+Enter.