X kuuluu segmenttiin. Aihe: Boolen tietotyyppi

Oppitunti sarjasta " Geometriset algoritmit»

Hei rakas lukija!

Tänään tarkastelemme toista tyypillistä ongelmaa geometristen algoritmien sarjasta. Kirjoitetaan funktio, joka tarkistaa kuuluvat mielivaltainen Jana sen alun ja lopun koordinaatit.

Vertailuoperaatioiden toteuttamiseksi todellisille tiedoille kirjoitamme vielä kaksi funktiota: EqPoint()-funktion, joka tarkistaa, osuvatko kaksi pistettä tasossa, ja RealMoreEq()-funktion, jonka avulla tarkistamme ”>=” suhde (suurempi tai yhtä suuri kuin). Tiedämme jo syyn erikoistoimintojen käyttöönotolle.

Tehtävä. Vahvista, kuuluu onko Jana.

Olkoot pisteet janan alku- ja loppupisteet. on mielivaltainen piste tasossa.

Vektorilla, joka alkaa pisteestä ja päättyy pisteeseen, on koordinaatit (x2-x1, y2-y1).

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

Piste P kuuluu segmenttiin, jos:

Ohjelma geom3; Vakio _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; (Ovatko tason kaksi pistettä samat) alkavat 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 osuvat yhteen, tulos määräytyy sattuman mukaan pisteistä P1 ja P) 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) alkaa (pää) writeln(Anna pisteen koordinaatit: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); if AtOtres(x1,y1,x2 ,y2,x,y) then writeln("Kyllä.") else writeln("Ei.); loppu. (pää)

Ohjelman suoritustulokset.

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 olemme kirjoittaneet AtOtres()-funktion, joka tarkistaa, kuuluuko mielivaltainen piste koordinaattiensa antamaan segmenttiin.

Kaksi muuta funktiota on otettu käyttöön: EqPoint() ja RealMoreEq() vertailutoimintojen toteuttamiseksi todellisilla tiedoilla. Ensimmäinen tarkistaa, osuvatko kaksi pistettä tasossa, toisella tarkistetaan suhde ">=".

Seuraavalla oppitunnilla kirjoitamme aiemmin kirjoitettujen menettelytapojen pohjalta menettelyn kahden segmentin leikkauspisteen koordinaattien määrittämiseksi.

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

Boolen muuttujat saavat tyypillisesti arvonsa vertailu- ja matemaattisista operaatioista (käsiteltiin edellisellä oppitunnilla) sekä tietyistä Boolen operaatioista.

Turbo Pascalilla on loogisia operaatioita, joita voidaan soveltaa boolen tyyppisiin muuttujiin. Nämä eivät ole, ja, tai ja xor-operaatioita. 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 tosi (ei-false on totta)

Operaation tulos ja(i) on tosi vain, jos molemmat sen operandit ovat tosi, ja epätosi muuten.

Operaation 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ää loogisten toimintojen merkitys lauseille:

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

Loogiset, relaatio- ja aritmeettiset operaatiot esiintyvät usein samassa lausekkeessa. Tässä tapauksessa loogisen operaation etumerkin vasemmalla ja oikealla puolella olevat suhteet on suljettava, koska loogisilla operaatioilla on korkeampi prioriteetti. Yleensä otetaan käyttöön seuraava toimintojen prioriteetti:

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

. 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 operaattori suoritetaan ensin, sen jälkeen ei- ja, tai -operaattorit. Jos korvaamme arvot True ja False muuttujien A ja B sijasta, niin jo tarkasteltua menettelyä käyttämällä 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ää loogisia tietoja read-käskyn avulla. Boolen tyyppisten muuttujien arvojen tuloste annetaan kuitenkin kirjoitusoperaattorilla.

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

Itsenäinen työ

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

  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), kun t = tosi, p = 101010;

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

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

    h) a tai (ei b) 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 pisteessä (1,0) keskitetyn säteen R ympyrän ulkopuolella;

    c) luonnollinen luku N on luonnollisen luvun neliö;

    d) 0

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

    e) ainakin yksi loogisista muuttujista a ja b on tosi;

    g) molemmat loogiset muuttujat a ja b ovat tosi.

  3. Määritä järjestys, jossa toiminnot suoritetaan lausekkeita arvioitaessa:

    a) a ja b tai ei c ja d;

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

  4. Arvioi seuraavat lausekkeet seuraavasti: 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 ulkopuolella ja [-1, 1];

    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 sarjanumerolla y on karkausvuosi (vuosi on karkausvuosi, jos sen luku on 4:n kerrannainen, mutta 100:n kerrannaiset vain 400:n kerrannaiset ovat karkausvuosia, esim. 1700, 1800 ja 1900 ovat ei-karkausvuosia, 2000 on karkausvuosi).

  6. Piirrä (x, y) tasolle alue, jolla ja vain jossa määritetty 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);

    e) (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.

Merkintä . Lausunnon dec (k,2) seurauksena muuttujan k arvo pienenee 2:lla.

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

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), kun t = tosi, p = 101010;

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

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

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

2. Kirjoita Pascalissa relaatio, joka on tosi, jos 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 pisteessä (1,0) keskitetyn säteen R ympyrän ulkopuolella;

d) luonnollinen luku N on luonnollisen luvun neliö;

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

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

h) ainakin yksi loogisista muuttujista a ja b on tosi;

i) molemmat loogiset muuttujat a ja b ovat tosi.

3. Määritä järjestys, jossa toiminnot suoritetaan lausekkeita arvioitaessa:

a) a ja b tai ei c ja d;

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

4. Laske seuraavat lausekkeet, joissa 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 ulkopuolella ja [-1, 1];

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 sarjanumerolla y on karkausvuosi (vuosi on karkausvuosi, jos sen luku on 4:n kerrannainen, mutta 100:n kerrannaisista vain 400:n kerrannaiset ovat karkausvuosia, esimerkiksi 1700, 1800 ja 1900 eivät ole karkausvuosia, 2000 on karkausvuosi).

6. Piirrä tasolle (x, y) alue, jossa ja vain jossa määritetty 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);

e) (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 ('hurra!') writeln ('hurra!')

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 ehtolausekkeen suorittamisen jälkeen:

jos muuttujien alkuarvot ovat yhtä suuret:

Merkintä. Lausunnon dec (k,2) seurauksena muuttujan k arvo pienenee 2:lla.

. 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 lauseiden 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 lauseiden 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 lauseiden suorittamisen jälkeen:
int z = 0, x = 3, y = 1;
jos (x) (jos (y) z = 1;) muuten z = 2;
9.
Määritä virheet seuraavissa lauseissa:
jos (1
elsex=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ä rikotaan ja miten virheet voidaan korjata?


81
3.4
Yksittäiset tehtävät jaksolle 3
Jokaisen opiskelijan tulee ratkaista kaksi ensimmäisen ja toisen monimutkaisuuden ongelmaa.
Ensimmäisen monimutkaisuustason tehtävät.
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. luvun tulo.
2.
Reaaliluvut x, y on annettu. Jos x ja y ovat negatiivisia, korvaa jokainen arvo sen moduulilla; jos vain yksi niistä on negatiivinen, lisää molempia arvoja 5,5; muissa tapauksissa molempia arvoja tulee pienentää 10 kertaa.
3.
Reaaliluvut x, y on annettu. Jos x ja y ovat positiivisia, vähennä kutakin arvoa kertoimella 5; jos molemmat arvot ovat alueella [-3, 9], molemmat arvot on korvattava 0:lla; muuten x ja y kasvavat 3:lla.
4.
Reaaliluvut x, y (xy) on annettu. 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, niin pienin näistä kolmesta luvusta korvataan kahden muun puolisummalla; muussa tapauksessa korvaa pienempi x ja y puolella kahden jäljellä olevan arvon summasta.
6.
Reaaliluvut a, b, c, d on annettu. Jos b>c>d, jätä sitten numerot ennalleen; muussa tapauksessa korvaa kaikki numerot niiden 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äärittää, onko tietyn nelinumeroisen luvun kahden ensimmäisen numeron summa yhtä suuri kuin sen kahden viimeisen luvun summa.
10.
Joillakin kouluilla on seuraavat pääsysäännöt. Hakijat suorittavat kaksi koetta, jotka arvostetaan sen mukaan
100 pistettä kukin. Jos hakija saa vähintään 150 pistettä, tämä antaa oikeuden päästä päiväosastolle, 100 - 149 - iltaosastolle; alle 100 pistettä tarkoittaa opiskelun epäämistä. Kirjoita ohjelma, joka kertoo hakijalle hänen oikeudestaan ​​ilmoittautua pistemäärästä riippuen.
11.
Kirjoita valintaoperaattorilla ohjelma, jonka avulla saat 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: määrittää, ovatko tietyn kolminumeroisen luvun numerot samat.
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 ohjelma käyttämällä select-lausetta, joka näyttää koko nimen nimen ensimmäisellä kirjaimella.
(Ivan, Peter, Nikolai, Vladimir, George).
15.
Kirjoita valintaoperaattorilla ohjelma, joka syötenumerolla 0≤ k≤ 5 tulostaa tämän hahmon nimen venäjäksi ja englanniksi.
16.
Annettu kokonaisluku k (1

k

365). Selvitä, 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
sisään
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
sisään
x
x
x
klo
x
x
x
klo
f
19.
Kirjoita ohjelma valintaoperaattorilla, joka näyttää kaupungin nimen kokonaisuudessaan kaupungin nimen ensimmäisellä kirjaimella (Kursk, Moskova, Tula, Novgorod, Voronezh).
20.
Kirjoita ohjelma valintalausekkeella, joka näyttää koko nimen sukunimen ensimmäisellä kirjaimella (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Annettu ympyrän keskipisteen koordinaatit ja säde. Selvitä, kuuluuko tietty piste, jonka koordinaatit (x,y) on ympyrään.
22.
Kirjoita ohjelma käyttämällä select-lausetta, joka tulostaa eläimen (koira, kissa, kirahvi, hevonen, apina) koko nimen eläimen nimen ensimmäisellä kirjaimella.
23.
Annettiin kolme erillistä numeroa a,b,c. Järjestä nämä luvut nousevaan järjestykseen niin a vastasi pienintä lukua, b- keskiverto, c- suurin.
24.
Kirjoita ohjelma valintalausekkeella, joka numerolla (1-7) näyttää viikonpäivän nimen.
25.
Kirjoita ohjelma valintalausekkeella, joka numerolla (1-12) näyttää vuoden kuukauden nimen.
26.
Kirjoita ohjelma käyttämällä valintalausetta, joka tulostaa vuodenajan koko nimen, kun otetaan huomioon vuodenajan nimen ensimmäinen kirjain.
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 siitä onko

84 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder täyttyykö määritelty ehto vai ei: aritmeettinen keskiarvo 1 ja
4 numeroa on enemmän kuin 2 ja 3 numeron summa.
29.
Annettu numero ja kolminumeroinen luku desimaalimuodossa. Jos numero vastaa luvun suurinta numeroa, laske luvun numeroiden summa. Jos numero vastaa luvun keskimmäistä numeroa, laske luvun numeroiden tulo. Jos numero vastaa luvun vähiten merkitsevää numeroa, laske luvun numeroiden aritmeettinen keskiarvo. Jos mikään ehdoista ei täyty, laske luvun numeroiden geometrinen keskiarvo.
30.
Annettu numero ja kolminumeroinen luku desimaalimuodossa. Jos numero vastaa luvun suurinta numeroa, laske luvun numeroiden aritmeettinen keskiarvo. Jos numero on sama kuin luvun keskimerkki, laske luvun numeroiden geometrinen keskiarvo. Jos numero vastaa luvun vähiten merkitsevää numeroa, laske luvun numeroiden summa. Jos mikään ehdoista ei täyty, laske luvun numeroiden tulo
Toisen monimutkaisuustason tehtävät.
1.
Annettu kaksinumeroinen positiivinen kokonaisluku kolminumerojärjestelmässä. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet venäjäksi, jos luvun suurin numero on suurempi kuin nuorin, muuten
- englanniksi.
2.
Annettu kaksinumeroinen positiivinen kokonaisluku viisinumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää luvun numeroiden nimet englanniksi, jos luvun suurin numero on suurempi kuin pienin, muuten
- venäjäksi.
3.
Annettu kaksinumeroinen positiivinen kokonaisluku viisinumeroisessa lukujärjestelmässä. Tee ohjelma, joka tulostaa luvun numeroiden nimet englanniksi, jos luvun suurin numero on tasan 2 kertaa pienin numero, 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.
Annettu kaksinumeroinen positiivinen kokonaisluku viisinumeroisessa lukujärjestelmässä. Kirjoita ohjelma, joka näyttää numeron numeroiden nimet venäjäksi.
6.
Annettu kaksinumeroinen positiivinen kokonaisluku 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 suurin numero on pienempi kuin puolet pienimmästä numerosta, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
8.
Annettu kaksinumeroinen positiivinen kokonaisluku septimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos numerot ovat laskevassa järjestyksessä, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
9.
Sinulle annetaan kaksi numeroa desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää näiden numeroiden summan numeroiden nimet englanniksi.
10.
Sinulle annetaan kaksi numeroa desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää näiden numeroiden tulon numeroiden nimet venäjäksi.
11.
Sinulle annetaan kaksi numeroa desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää näiden numeroiden eron moduulin luvun nimen venäjäksi.
12.
Sinulle annetaan kaksi numeroa desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää osamäärän numeroiden nimet ja näiden lukujen kokonaislukujaon loppuosan englanniksi.
13.
Annettu kaksinumeroinen positiivinen kokonaisluku desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on kolme kertaa pienin numero, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
14.
Annettu kaksinumeroinen positiivinen kokonaisluku desimaalilukujärjestelmässä. Kirjoita ohjelma, joka tulostaa 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 septimaalilukujärjestelmässä. Kirjoita ohjelma, joka tulostaa 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.
Kaksi kaksinumeroista positiivista kokonaislukua binäärilukujärjestelmässä on annettu. 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 ovat nousevassa järjestyksessä, numeron numeroiden nimet englanniksi, muuten

venäjäksi.
20.
Annettu kaksinumeroinen positiivinen kokonaisluku heksadesimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on viisi kertaa 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 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 septimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää, jos suurin numero on kolme kertaa pienin, 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 sen numeron järjestys, jolla on pienin arvo,

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

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

englanniksi.
27.
Annettu vuoden kuukauden nimen kaksi ensimmäistä kirjainta (kirjainkoolla ei väliä, sekä pienet että isot kirjaimet). Kirjoita ohjelma, joka näyttää vuoden kuukauden koko nimen venäjäksi.
28.
Annettu viikonpäivän nimen kaksi ensimmäistä kirjainta (kirjainkoolla ei väliä, sekä pienet että isot kirjaimet). Kirjoita ohjelma, joka näyttää viikonpäivän koko nimen venäjäksi.
29.
Vanhassa japanilaisessa kalenterissa otettiin käyttöön 60 vuoden sykli, joka koostui viidestä 12 vuoden osasyklistä. Alasyklit nimettiin värinimillä: vihreä, punainen, keltainen, valkoinen ja musta. Jokaisessa alasyklissä vuosiluvut kantoivat eläinten nimiä: rotat, lehmät, tiikerit, jänis, lohikäärmeet, käärmeet, hevoset, lampaat, apinat, kanat, koirat ja siat (1984, vihreän rotan vuosi, oli vuoden alku seuraava sykli). Kirjoita ohjelma, joka syöttää aikakautemme tietyn vuoden numeron ja tulostaa sen nimen vanhan japanilaisen kalenterin mukaan.
30.
Annettu kaksinumeroinen positiivinen kokonaisluku desimaalilukujärjestelmässä. Kirjoita ohjelma, joka näyttää venäjän kielellä luvun, jonka arvo on suurempi kuin 5, numeroiden nimet ja numeroiden nimet, joiden arvo on pienempi tai yhtä suuri kuin 5,

englanniksi.

88 Lineaaristen algoritmien ohjelmointi järjestelmässä C++ Builder
4 SYKLIKSEN OHJELMOINTI
ALGORITMIT C++BUILDER-JÄRJESTELMÄSSÄ
Tässä osiossa tutkitaan kielisilmukkaoperaattoreita.
C++, syklisten algoritmien ohjelmointitaitojen hankkiminen, esittely
Kyllä, ohjelmien kääntäminen ja virheenkorjaus.
4.1
Peruskonseptit
Kielen päällä C++ Builder Silmukkalausekkeita on kolme:
1.
Silmukka ennakkoehdoin ( sillä aikaa);
2.
Silmukka jälkiehdon kanssa ( tehdä);
3.
Silmukka laskurilla ( varten).
Silmukkalause, jossa on ennakkoehto sillä aikaa (Kuva 4.1):
sillä aikaa(kunto) (silmukan runko)
Kuva 4.1

Silmukkaoperaattorialgoritmin kaavio sillä aikaa
Jos kunnon arvioinnin tulos on totta(tosi), sitten silmukan runko suoritetaan ja siirtyminen kuntotarkistukseen suoritetaan uudelleen. Jos kunnon arvioinnin tulos on väärä(false), silmukka poistuu ja hyppää syklistä käskyä seuraavaan lauseeseen sillä aikaa.
Jos ennen silmukan ensimmäistä suoritusta lausekkeen arvo oli väärä, silmukan runkoa ei suoriteta ollenkaan ja siirtyy seuraavaan lauseeseen.
Kunto
Silmukan runko
Joo
Ei

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

Silmukkaoperaattorialgoritmin kaavio tehdä, kun
Ehto on boolen tyyppinen lauseke, silmukan runko on yksinkertainen tai yhdistelmälause.
Lausuntosilmukan runko

Boolen tyyppiset muuttujat kuvataan tunnisteella Boolean . He voivat ottaa vain kaksi arvoa - Väärä (Väärä) ja Totta (totta). Ne on myös kuvattu muuttujien ilmoitusosiossa. Var<имя>: Boolen;

Boolen lausekkeet voivat sisältää:

n booleans,

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

n loogiset operaatiot Ja, Tai, Ei

n ero. toimintoja ja toimintoja


Turbo Pascalilla on loogisia operaatioita, joita voidaan soveltaa boolen tyyppisiin muuttujiin. Nämä eivät ole, ja, tai ja xor-operaatioita.

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. Joten ei totta Väärä (epätosi on valhe) ei väärin Totta (ei-väärä on totta).

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

Operaation 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, relaatio- ja aritmeettiset operaatiot esiintyvät usein samassa lausekkeessa. Tässä tapauksessa loogisen operaation etumerkin vasemmalla ja oikealla puolella olevat suhteet on jätettävä sulkeisiin, koska loogisilla operaatioilla on korkeampi prioriteetti. Yleensä otetaan käyttöön seuraava toimintojen prioriteetti:

2. ja, *, /, div, mod

3. tai, +, -

4. relaatiooperaatiot (<- меньше, >- enemmän,<=- меньше или равно, >=- suurempi tai yhtä suuri,<>- 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 operaattori suoritetaan ensin, sen jälkeen ei- ja, tai -operaattorit. Jos korvaamme arvot True ja False muuttujien A ja B sijasta, niin jo tarkasteltua menettelyä käyttämällä saamme koko lausekkeen arvon, joka on yhtä suuri kuin True.

Harjoitus 5: . Kirjoita muistikirjaan ja laske lausekkeiden arvot

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ää loogisia tietoja read-käskyn avulla. Boolen tyyppisten muuttujien arvojen tuloste annetaan kuitenkin kirjoitusoperaattorilla. Esimerkiksi, kun kirjoitus (5>2) -operaattori on suoritettu, True näkyy näytöllä.

Kotikysymykset ja tehtävät:

1. Miten Boolen 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ä;

C. 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 toimi)

E. ainakin yksi loogisista muuttujista a ja b on tosi;

G. Boolen muuttujat a ja b ovat molemmat tosi.

№20. Määritä järjestys, jossa toiminnot suoritetaan lausekkeita arvioitaessa:

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

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

a) a tai b eikä a; b)(a tai b) eikä a; sisään) ei a ja b; G) ei (a ja b)

№22. Tee ohjelma: Valintakokeissa hakija suoritti fysiikan, tietojenkäsittelytieteen, sävellyksen. Hakija osallistuu, jos hän saa tietojenkäsittelytieteestä 5 ja saa kolmesta kokeesta vähintään 13 pistettä. Onko totta, että hän osallistui (tulosta True / False)?

§ 8. Tehtävän ratkaiseminen aiheesta ”Lineaariset ohjelmat. Boolen suuret."

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), kun t = tosi, p = 101010;

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

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

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

Esim. kahdeksan. 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 ulkopuolella ja [-1, 1];

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 sarjanumerolla y on karkausvuosi (vuosi on karkausvuosi, jos sen luku on 4:n kerrannainen, mutta 100:n kerrannaisista vain 400:n kerrannaiset ovat karkausvuosia, esimerkiksi 1700, 1800 ja 1900 eivät ole karkausvuosia, 2000 on karkausvuosi).

Esim. 9 . Piirrä (x, y) tasolle alue, jolla ja vain jossa määritetty 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);

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

Esim. kymmenen ..Kirja maksaa X ruplaa. Ostajalla on seteleitä 50, 10, 5, 1 ruplaa. Kuinka monta ja mitä seteleitä minun tulee ottaa, jotta voin maksaa kirjan vähimmäismäärällä seteleitä?