Paskalis užpildo masyvą. Vienmačiai masyvai

22.03.2022

Iki šiol dirbome su paprastais duomenų tipais – loginiais (loginis), sveikasis (sveikasis skaičius, žodis, baitas, longint), realus (realus), simbolis (char). Bet koks algoritmas gali būti užprogramuotas naudojant šiuos keturis pagrindinius tipus. Tačiau apdoroti informaciją apie įvairias realus pasaulis reikalingi sudėtingesnės struktūros duomenys. Tokios sudėtingos konstrukcijos, pagrįstos paprasčiausiais skaliariniais tipais, vadinamos struktūromis. Struktūra yra tam tikras sudėtinis duomenų tipas, sudarytas iš pagrindinių skaliarinių duomenų. Jei struktūra nekeičia savo struktūros per visą programos, kurioje ji aprašyta, vykdymą, tada tokia struktūra vadinama statine.

Masyvas – vienalytis elementų rinkinys

Labiausiai paplitusi struktūra, įdiegta beveik visose programavimo kalbose, yra masyvas.

Masyvai susideda iš riboto skaičiaus komponentų, o visi masyvo komponentai turi tą patį tipą, vadinamą baziniu tipu. Masyvo struktūra visada yra vienoda. Masyvą gali sudaryti integer, real arba char tipo elementai arba kiti to paties tipo elementai. Tačiau iš to nereikėtų daryti išvados, kad masyvo komponentai gali turėti tik skaliarinį tipą.

Kita masyvo ypatybė yra ta, kad bet kurį jo komponentą galima pasiekti bet kokiu būdu. Ką tai reiškia? Programa gali iš karto gauti jai reikalingą elementą pagal serijos numerį (indeksą).

Masyvo indeksas

Iškviečiamas masyvo elemento numeris indeksas. Indeksas yra eilės tipo reikšmė, apibrėžta kaip indekso tipasšio masyvo. Labai dažnai tai yra sveikojo skaičiaus tipas (sveikasis skaičius, žodis arba baitas), tačiau jis taip pat gali būti loginis ir simbolis.

Masyvo aprašymas Pascal. Pascal masyvo tipas nurodomas naudojant specialų žodį masyvas(angliškai – masyvas), o jo deklaravimas programoje atrodo taip:

Tipas< имя _ типа >= masyvas [I] iš T;

kur I yra masyvo indekso tipas, T yra jo elementų tipas.

Galima apibūdinti iš karto tipo kintamieji masyvas, t.y. kintamojo aprašymo skiltyje:

Var a,b: masyvas [ I ] iš T;

Paprastai indekso tipui būdingas tam tikras bet kurio eilės tipo verčių diapazonas: I 1 .. I n . Pavyzdžiui, indeksai gali skirtis diapazone nuo 1...20 arba " a ".." n ".

Šiuo atveju Pascal masyvo ilgis apibūdinamas išraiška:

eilė (I n)- eilė (I 1)+1.

Pavyzdžiui, čia yra dviejų tipų deklaracija: vektorius kaip Paskalio masyvas iš 10 sveikųjų skaičių ir eilutė kaip 256 simbolių masyvas:

Tipas
Vector=sveiko skaičiaus masyvas;
Stroka=anglies masyvas;

Naudodami masyvo indeksą galite pasiekti atskirus bet kurio masyvo elementus taip, tarsi jie būtų įprasti kintamieji: galite gauti to elemento reikšmę, priskirti jam reikšmę atskirai ir naudoti ją išraiškose.

Apibūdinkime vektoriaus ir eilučių tipų kintamuosius:

Paskalio masyvo indekso apskaičiavimas

Masyvo indeksas Pascal neturi būti aiškiai nurodytas. Kaip masyvo indeksą galite naudoti kintamąjį arba išraišką, atitinkančią indekso tipą. Kitaip tariant, indeksus galima apskaičiuoti.

Šis mechanizmas yra labai galingas programavimo įrankis. Tačiau tai sukuria dažną klaidą: skaičiavimo rezultatas gali būti už galiojančių indekso reikšmių diapazono, tai yra, bus bandoma pasiekti elementą, kurio nėra. Tai tipiška klaida vadinamas „už masyvo ribų“.

Programos pavyzdys su Pascal masyvo klaida

Programos primer_error;
Tipas
vektorius=žodžių masyvas;
var
n:sveikasis skaičius;
a:vektorius;
pradėti
n = 45;
a:=25;
galas.

Nors šią programą visiškai atitinka kalbos sintaksę, o vertėjas vykdymo etape ją „praleis“, atsiras Pascal masyvo ribų klaida. Kai n = 45, išraiška n * 2 = 90, kompiuteris bandys pasiekti masyvo elementą a, bet tokio elemento nėra, nes aprašomas 80 matmens masyvas.

Mes tai manysime gera programa turėtų rodyti įspėjamąjį pranešimą, jei bandoma pasiekti neegzistuojančius masyvo elementus. Nepakenktų patikrinti galima išeitis tiek dešinėje, tiek kairėje masyvo ribose, nes gali būti, kad apskaičiavus išraiškos reikšmę, rezultatas bus skaičius, esantis kairėje Paskalio masyvo ribos.

Iš viso to galime daryti išvadą: programuotojas turi būti labai atsargus dirbdamas su masyvo indeksais.

Pagrindinės operacijos su Pascal masyvais

Kaip žinote, duomenų tipo apibrėžimas reiškia leistinų verčių diapazono ribojimą, vidinį atvaizdavimą kompiuteryje, taip pat leistinų operacijų su tokio tipo duomenimis rinkinį. Mes apibrėžėme duomenų tipą kaip Pascal masyvą. Kokios operacijos apibrėžiamos naudojant šį duomenų tipą? Vienintelis veiksmas, kurį galima atlikti su visais masyvais ir tik tuo atveju, jei masyvai yra to paties tipo, yra priskyrimas. Jei programa aprašo du to paties tipo kintamuosius, pvz.

Var
a , b: realiųjų masyvas;

tada galite naudoti kintamąjį a priskirti kintamajam reikšmę b(a:= b). Šiuo atveju kiekvienas masyvo elementas a bus priskirta atitinkama reikšmė iš masyvo b. Visi kiti Pascal masyvų veiksmai atliekami po kiekvieno elemento (svarbu!) .

Paskalio masyvo įvestis

Norėdami įvesti masyvo elementų reikšmes, turite nuosekliai keisti indekso reikšmę, pradedant nuo pirmos iki paskutinės, ir įvesti atitinkamą elementą. Šiems veiksmams įgyvendinti patogu naudoti kilpą su nurodytu pakartojimų skaičiumi, t.y. paprastas aritmetinis ciklas, kur ciklo parametras bus kintamasis – Paskalio masyvo indeksas. Elementų reikšmes galima įvesti iš klaviatūros arba nurodyti naudojant priskyrimo operatorių.

Pascal masyvo įvesties programos pavyzdys

Var
A: sveikųjų skaičių masyvas ;
Pradėkite
Jei i:=1–10, darykite
Readln(a[i]); (i-tas elementas įvedamas iš klaviatūros)

Dabar panagrinėkime atvejį, kai Pascal masyvas užpildomas automatiškai atsitiktiniai skaičiai, tam naudosime funkciją atsitiktinis(N).

Programos, skirtos Paskalio masyvei užpildyti atsitiktiniais skaičiais, pavyzdys

Var
I: baitas ; (kintamasis I įvedamas kaip masyvo indeksas)
Pradėkite
Jei i:=1–10, darykite
A[i]:= atsitiktinis(10); (I-ajam masyvo elementui priskiriamas „atsitiktinis“ sveikasis skaičius diapazone nuo 0 iki 10)

Pascal masyvo išvestis

Masyvo išvestis Pascal taip pat atliekamas po elemento, kilpoje, kur parametras yra masyvo indeksas, paeiliui paimant visas reikšmes nuo pirmosios iki paskutinės.

Pascal masyvo išvesties programos fragmento pavyzdys

Var
A: sveikųjų skaičių masyvas;
I: baitas ; (kintamasis I įvedamas kaip masyvo indeksas)
Pradėkite
Jei i:=1–10, darykite
Rašyti (a[i]," "); (masyvas išvedamas į eilutę, po kiekvieno elemento atspausdinamas tarpas)

Išvestis taip pat gali būti pateikta stulpelyje, nurodant atitinkamą indeksą. Bet tokiu atveju reikia atsižvelgti į tai, kad jei masyvas didelis, visi elementai gali netilpti į ekraną ir įvyks slinkimas, t.y. Užpildžius visas ekrano eilutes, bus atspausdintas kitas elementas, o viršutinis pasislinks nuo ekrano.

Pavyzdinė programa, skirta Pascal masyvo atvaizdavimui stulpelyje

Var
A: sveikųjų skaičių masyvas;
I: baitas ; (kintamasis I įvedamas kaip masyvo indeksas)
Pradėkite
Jei i:=1–10, darykite
Writeln("a[", i,"]=", a[i]); (masyvo elementų rodymas stulpelyje)

Ekrane matysime, pavyzdžiui, šias reikšmes:

a = 2
a = 4
a =1 ir kt.

Problemos sprendimo naudojant Pascal masyvus pavyzdys

Užduotis: pateikti du n-mačiai vektoriai. Raskite šių vektorių sumą.

Problemos sprendimas:

  • Šios problemos įvesties duomenys bus du vienmačiai masyvai. Šių masyvų dydis gali būti savavališkas, bet tikras. Tie. galime aprašyti sąmoningai didelį masyvą, o programoje nustatyti, kiek elementų iš tikrųjų bus panaudota. Šių masyvų elementai gali būti sveikieji skaičiai. Tada aprašymas atrodys taip:

    var a, b: sveikųjų skaičių masyvas;

  • Išvestis bus gauto masyvo elementai, pavadinkime jį c . Gauto masyvo tipas taip pat turi būti sveikasis skaičius.
  • Be trijų masyvų, mums reikės kintamojo – ciklo parametro ir masyvo indekso, pavadinkime jį i, taip pat kintamojo n, kad nustatytų elementų skaičių kiekviename masyve.

Problemos sprendimo eiga:

  • Nustatykime masyvų elementų skaičių (dimensiją), įveskime reikšmę n;
  • įveskime masyvą a ;
  • įveskime masyvą b;
  • cikle, kartodami indekso i reikšmes nuo 1 iki n, nuosekliai apskaičiuojame masyvo c elementų reikšmes naudodami formulę:

    c [ i ]= a [ i ]+ b [ i ];

  • Parodykime gautą masyvą ekrane.

Programos tekstas:

Vektorinės sumos programos pavyzdys

programos suma;
Var
a, b, c: sveikųjų skaičių masyvas;
I, n: baitas;
Pradėkite
Write("įveskite masyvo dydį:");
Readln(n);
Jei i:=1 – n
Readln(a[i]); (masyvo įvestis a)
Jei i:=1 – n
Readln(b[i]); (masyvo įvestis b)
Jei i:=1 – n
C[i]:=a[i]+b[i]; (masyvų sumos apskaičiavimas)
Jei i:=1 – n
rašyti(c[i]," "); (masyvo išvestis su)
galas.

1 metodas (klaviatūros užpildymas. Dinaminisįvestisduomenis)

M: sveikųjų skaičių masyvas;

I:=1 Iki 10 Pradėkite

Write("Įveskite ",I," reikšmė ");

2 Metodas (naudojant atsitiktinių skaičių generatorių)

M: sveikųjų skaičių masyvas;

I:=1 Iki 25 Pradėkite

M[I]:=Atsitiktinis(50);

3 metodas (statinis duomenų įvedimas)

M: sveikųjų skaičių masyvas = (31,28,31,30,31,30,31,31,30,31,30,31);

I:=1 Iki 9 Daryti

1.4 Problemų sprendimo pavyzdžiai

1. Masyvo elementų reikšmių paieškos ir priskyrimo algoritmai

1. Sukurkite programą, skirtą apdoroti n matmenų masyvą, užpildytą sveikaisiais skaičiais, įvestais iš klaviatūros. Atspausdinkite teigiamų masyvo elementų indeksus ir reikšmes.

A: SVEIKI SKAIČIŲ MASĖ;

(Mayvo užpildymas)

NUO I:=1 IKI N DO Pradėkite

Write("Įveskite ",I," masyvo elementas "); ReadLn(A[I]);

(Apdorojami masyvo elementai)

KAD AŠ:=1 IKI N DARYTI

JEI A[I]>0 THEN WriteLn("Teigiamas elementas = ",A[I]," jo indeksas = ",I);

2. Sukurkite programą, skirtą funkcijos Y=sin(x-1)/2x reikšmėms apskaičiuoti ir spausdinti. Nustatykite argumentų reikšmes masyve X, kurį sudaro 6 elementai. Įrašykite funkcijų reikšmes į Y masyvą.

X,Y: TIKRŲJŲ MASĖLIS;

I:=1 IKI 6 PRAdėkite

Write("Įveskite ",I," argumento reikšmė "); ReadLn(X[I]);

I:=1 IKI 6 PRAdėkite

Y[I]:=SIN(X[I]-1)/(2*X[I]);

WriteLn(" X= ",X[I]:4:1," Y=",Y[I]:5:2);

3. Duotas masyvas M, susidedantis iš 30 elementų. Masyvo elementai yra savavališki sveikieji skaičiai. Parodykite kiekvieno penkto ir teigiamo elemento reikšmę. Išveskite nurodytus elementus į eilutę.

M: SVEIKI SKAIČIŲ MASĖ;

ClrScr; Atsitiktinis;

WriteLn ("Masyvo elementų reikšmės");

I:=1 IKI 30 DARYTI Pradėkite

M[I]:=Atsitiktinis(20)-4; Rašyti(M[I]:3);

WriteLn ("Kiekvieno penkto ir teigiamo masyvo elemento reikšmės");

Kol aš<=30 DO Begin

JEI M[I] > 0 THEN Write(M[I]:3);

Nepriklausomų sprendimų pavyzdžiai:

    Pateiktas vienmatis 10 matmenų masyvas, užpildytas sveikaisiais skaičiais, įvestais iš klaviatūros, ir reikšmė N. Pakeiskite neigiamus elementus N. Rodyti pakeistą masyvą vienoje eilutėje.

    Duotas vienmatis N matmens masyvas, užpildytas atsitiktiniais skaičiais intervale nuo -15 iki 20. Rodyti masyvo elementų, kurių absoliuti vertė >10, reikšmes.

    Duotas vienmatis N matmens masyvas, užpildytas atsitiktiniais skaičiais. Kas trečias masyvo elementas kvadratu, jei elementas yra neigiamas. Rodyti pakeistą masyvą ekrane.

    Sukurkite programą, skirtą funkcijos Y=(sinx+1)cos4x reikšmėms apskaičiuoti ir spausdinti. Nustatykite argumentų reikšmes masyve X, kurį sudaro 10 elementų. Įrašykite funkcijų reikšmes į Y masyvą.

    Iš masyvo A elementų, susidedančio iš 25 elementų, pagal taisyklę suformuokite tokio paties dydžio masyvą D: pirmieji 10 elementų randami pagal formulę Di=Ai+i, likusieji - pagal formulę Di=Ai. -i.

Pamokoje paaiškinama, kaip dirbti su vienmačiais masyvais Pascal, kaip naudoti atsitiktinių skaičių generatorių – funkciją atsitiktinis Paskalyje. Nagrinėjamas pavyzdys, kaip išvesti Fibonačio skaičius.


Svetainėje esanti medžiaga skirta praktiškai įvaldyti Pascal programavimo kalbą. Trumpa teorinė informacija nepretenduoja į visišką medžiagos ta tema aprėptį; reikiamą informaciją galima rasti internete adresu dideli kiekiai. Mūsų užduotys apima galimybę įgyti praktinių programavimo įgūdžių Pascal kalba. Išspręsti vaizdiniai pavyzdžiai ir užduotys pateikiami didėjančia sudėtingumo tvarka, o tai leis lengvai studijuoti medžiagą nuo nulio.

Masyvo deklaracija

Pascal yra dviejų tipų masyvai: vienmačiai ir dvimačiai.
Vienmačio masyvo apibrėžimas Pascal skamba taip: vienmatis masyvas – tai tam tikras tam pačiam duomenų tipui priklausančių elementų skaičius, turintis tą patį pavadinimą, o kiekvienas elementas turi savo indeksą – serijos numerį.
Masyvo aprašymas Pascal (deklaracija) ir prieiga prie jo elementų yra taip:

Masyvo deklaracija

var ilgis: masyvas [ 1 .. 3 ] sveikasis skaičius ; pradžios ilgis[ 1 ] : = 500 ; dlina[ 2 ] : = 400 ; dlina[ 3 ] : = 150 ; ...

var ilgis: sveikųjų skaičių masyvas; pradžios ilgis:=500; ilgis:=400; ilgis:=150; ...

  • dlina — masyvo identifikatorius (pavadinimas);
  • deklaracijai naudojamas tarnybinis žodis Array (iš anglų kalbos išvertus kaip „masyvas“ arba „set“);
  • - laužtiniuose skliaustuose rašomas pirmojo elemento skaičius (indeksas), po to du taškai ir paskutinio masyvo elemento indeksas, t.y. iš esmės nurodomas elementų skaičius; vadinamas elementų skaičius masyve masyvo matmuo
  • sveikasis skaičius (iš anglų kalbos „from integers“) – nurodo, kokio tipo yra masyvas, iš čia yra pagalbinis žodis.
  • Paskelbti dydis gali būti naudojamas per konstantą:

    Masyvo inicijavimas

    Be to, pats masyvas gali būti pastovus, t.y. visi jo elementai programoje yra numatyti iš anksto. Tokio masyvo aprašymas atrodo taip::

    const a: masyvas [ 1 .. 4 ] sveikasis skaičius = (1 , 3 , 2 , 5 );

    const a:sveiko skaičiaus masyvas = (1, 3, 2, 5);

    Užpildymas skaičiais iš eilės:

    Rezultatas: A = 8, A = 9, A = 10, ..., A[N] = A + 1

    Klaviatūros įvestis:

    Pavyzdys: Pažiūrėkime, kaip masyvas įvedamas Pascal:

    writeln("įveskite elementų skaičių: "); readln(n); (jei kiekis iš anksto nežinomas, mes jo prašome) for i:= 1 to n do begin write("a[", i, "]="); skaityti(a[i]); ...galas; ...


    ✍ Rezultato pavyzdys:

    Įveskite elementų skaičių: 3 a=5 a=7 a=4

    Masyvo elementų spausdinimas

    Pavyzdys: Pažiūrėkime, kaip rodyti masyvą Pascal:

    1 2 3 4 5 6 7 8 9 10 11 12 13 var a: masyvas [ 1 .. 5 ] sveikasis skaičius ; (penkių elementų masyvas) i:integer ; pradėti a[ 1 ] : = 2 ; a[2]: = 4; a[3]: = 8; a[4]: = 6; a[5]: = 3; writeln("Masyvas A:"); jei i : = nuo 1 iki 5, rašykite (a[ i] : 2 ); (masyvo elementų išvestis) galas.

    var a: sveikųjų skaičių masyvas; (penkių elementų masyvas) i: integer; pradėti a:=2; a:=4; a:=8; a:=6; a:=3; writeln("Masyvas A:"); jei i:= nuo 1 iki 5, parašykite (a[i]:2); (išvesties masyvo elementai) pabaiga.

    ✍ Rezultato pavyzdys:

    A masyvas: 2 4 8 6 3

    Norint dirbti su masyvais, jis dažniausiai naudojamas Pascal su parametru, nes paprastai žinote, kiek elementų yra masyve, ir kaip elementų indeksus galite naudoti kilpų skaitiklį.

    Masyvo 0 užduotis. Turite nurodyti tikrą matmenų masyvą 6 (t. y. šeši elementai); užpildykite masyvą įvesties reikšmėmis ir ekrane parodykite elementus. Naudokite dvi kilpas: pirmąją elementams įvesti, antrąją išvestims.


    IN šiame pavyzdyje Darbas su vienmačiu masyvu turi akivaizdžių nepatogumų: elementų reikšmių priskyrimas.

    Masyvų apdorojimas Pascal programoje, taip pat masyvo užpildymas paprastai vyksta naudojant for kilpą.

    Atsitiktinė funkcija Pascal

    Kad nebūtų nuolat reikalaujama masyvo elementų reikšmių, naudojamas atsitiktinių skaičių generatorius Pascal, kurį įgyvendina funkcija Random. Tiesą sakant, generuojami pseudoatsitiktiniai skaičiai, bet tai ne esmė.

    Norėdami sugeneruoti skaičius nuo 0 iki n (neįskaitant paties n reikšmės, sveikieji skaičiai sveikojo skaičiaus intervale; i:integer; pradėti atsitiktinės atrankos būdu; nuo i:=1 iki 10 pradėkite f[i]:=random(10); ( intervalas ) write(f[i]," pabaiga);

    ✍ Rezultato pavyzdys:

    9 8 9 2 0 3 6 9 5 0

    Dėl realūs skaičiai intervale ir rodyti elementus ekrane: nustatykite tris kiekvieno elemento rodymo pozicijas.

    Fibonačio skaičiai Paskaliais

    Dažniausias darbo su masyvu pavyzdys yra Fibonačio skaičių serijos išvestis Pascal. Pasvarstykime.

    Pavyzdys: Fibonačio skaičių serija: 1 1 2 3 5 8 13…

    f[0]: = 1; f[1]: = 1; f[2]: = 2; ...

    f:=1; f:=1; f:=2; ...

    f[2] : = f[0] + f[1]; f[3] : = f[1] + f[2];
    f[i] : = f[i-2] + f[i-1];

    f[i]:=f+f;

    Gavome serijos elementų formulę.

    Pavyzdys: Apskaičiuokite ir atspausdinkite pirmuosius 20 Fibonačio skaičių.

    1 2 3 4 5 6 7 8 9 10 11 var i: sveikasis skaičius ; f: sveikojo skaičiaus masyvas [0 .. 19]; pradėti f[0] : = 1; f[1]: = 1; jei i: = nuo 2 iki 19, prasideda f[i] : = f[i-1] + f[i-2]; writeln (f[ i] ) pabaiga ; galas.

    var i:integer; f:sveikasis skaičius; pradėti f:=1; f:=1; nuo i:=2 iki 19 pradėkite f[i]:=f+f; writeln(f[i]) pabaiga; galas.

    Šiame pavyzdyje išryškėja darbo su skaičių serijomis principas. Paprastai, norint išvesti skaičių eilutę, randama formulė kiekvienam šios serijos elementui nustatyti. Taigi, Fibonačio skaičių atveju ši formulė-taisyklė atrodo taip f[i]:=f+f. Todėl jis turi būti naudojamas už kilpą formuojant masyvo elementus.

    2 masyvo užduotis. Pateikta 10 eilutė savavališkas skaičiai: a, a, ... , a (naudokite funkciją atsitiktinis()). Apskaičiuokite ir atspausdinkite gretimų skaičių tripletų sumą: a+a+a , a+a+a , a+a+a , …… , a+a+a

    Pseudokodas:

    Didžiausio elemento radimas pagal jo indeksą:


    Masyvo_min užduotis: Raskite mažiausią masyvo elementą. Išspausdinkite elementą ir jo rodyklę.

    4 masyvo užduotis. Duotas 10 sveikųjų skaičių elementų masyvas. Raskite neigiamų skaičių ir parodykite skaičių ekrane.

    5 masyvo užduotis. Raskite mažiausią ir didžiausią n įvestų skaičių (masyvo). Nustatykite atstumą tarp šių elementų. 3 2 6 1 3 4 7 2 >>> min = 1, maks = 7, atstumas = 3

    Masyvo 6 užduotis. Duotas sveikųjų skaičių dydžio masyvas N. Išvestis viskas, kas yra šis masyvas lyginiai skaičiai jų indeksų mažėjimo tvarka, taip pat jų skaičius K. N=4 masės: 8 9 2 5 >>> 2 8 kiekis = 2

    Masyvo 7 užduotis. Iš klaviatūros įveskite 5 elementų masyvą, suraskite jame du maksimalius elementus ir jų skaičių.

    Pavyzdys:

    Pradinis masyvas: 4 -5 10 -10 5 maksimalus A=10, A=5

    Ieškokite masyve

    Pažvelkime į sudėtingą darbo su vienmačiais masyvais pavyzdį:

    Pavyzdys: Duotas 10 skaičių masyvas. Nustatykite, ar vartotojo įvestas skaičius yra masyve. Jei yra, išvesti "rastas", jei ne - "nerastas".
    Užduoties sudėtingumas yra atspausdinti žodžius "rastas" arba "nerastas" reikia vieną kartą.


    Norėdami išspręsti šią problemą, jums reikės pertraukos teiginio, kad išeitumėte iš ciklo.
    1 sprendimo parinktis. Ciklai:

    Rodyti sprendimą

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var f: sveikojo skaičiaus masyvas [1 .. 10 ]; vėliavėlė:bulio ; i, c: sveikasis skaičius ; pradėti randomizuoti; i: = nuo 1 iki 10 pradėkite f[ i] : = atsitiktinis(10) ; rašyti (f[ i] , " " ) ; galas ; vėliavėlė: = false ; writeln ("įvesti pavyzdį"

    ) ; readln(c); i: = nuo 1 iki 10 darykite, jei f[i] = c, tada pradėkite writeln ("rasta"); vėliavėlė: = tiesa ; pertrauka ;

    galas ; if flag= false then writeln ("nerasta" ); galas.

    var f: sveikųjų skaičių masyvas; vėliavėlė:bulio; i,c:integer; pradėti randomizuoti; jei i:=1–10, pradėkite f[i]:=atsitiktinis(10); rašyti (f[i]," "); galas; vėliavėlė:=false; writeln("įveskite pavyzdį"); readln(c); i:=1 iki 10 darykite, jei f[i]=c then begin writeln("rasta"); vėliavėlė:=tiesa; pertrauka; galas; if flag=false then writeln("nerasta"); galas.

    Pasvarstykime

    • efektyvus sprendimas:
    • Užduotis:

    masyve raskite elementą, lygų X, arba nustatykite, kad jo nėra.

    Algoritmas:

    pradėti nuo 1 elemento (i:=1); jei kitas elementas (A[i]) yra lygus X , tada baikite paiešką, priešingu atveju pereikite prie kito elemento.

    Pavyzdys:

    sprendimas Pascal 2 variante. Nors ciklas:

    Kviečiame žiūrėti išsamią vaizdo analizę, kaip ieškoti elemento masyve (veiksmingas algoritmas):

    Pavyzdys: 8 masyvo užduotis.



    Intervale 10 elementų masyvą užpildykite atsitiktiniais skaičiais ir atspausdinkite visų elementų skaičius, lygius X .

    Pasvarstykime
    Pradinis masyvas: 4 0 1 2 0 1 3 4 1 0 Ko mes ieškome? 0 A, A, A

    Ciklinė pavara

    perkelkite masyvo elementus į kairę 1 vieta, pirmasis elementas pakeičia paskutinį. Sprendimas: A:=A; A:=A;… A:=A[N];.
    Pavyzdys: Programa:

    9 masyvo užduotis.

    Užpildykite 10 elementų masyvą atsitiktiniais skaičiais diapazone [-10..10] ir atlikite ciklinį poslinkį į kairę

    Pavyzdys: be pirmojo elemento


    Intervale 10 elementų masyvą užpildykite atsitiktiniais skaičiais ir atspausdinkite visų elementų skaičius, lygius X .

    Pasvarstykime

    Pradinis masyvas: 4 -5 3 10 -4 -6 8 -10 1 0 Rezultatas: 4 3 10 -4 -6 8 -10 1 0 -5

    Ciklinė pavara

    Elementų pertvarkymas masyve 10 elementų masyvą užpildykite atsitiktiniais skaičiais intervale [-10..10] ir apverskite visus elementus, išskyrus paskutinį.
    Pavyzdys:Šaltinio masyvas: -5 3 10 -4 -6 8 -10 1 0 4 Rezultatas: 0 1 -10 8 -6 -4 10 3 -5 4

    Elementų pasirinkimas ir išsaugojimas kitame masyve

    Pavyzdys: masyve suraskite elementus, atitinkančius tam tikrą sąlygą (pavyzdžiui, neigiamą), ir nukopijuokite juos į kitą masyvą

    Intervale 10 elementų masyvą užpildykite atsitiktiniais skaičiais ir atspausdinkite visų elementų skaičius, lygius X .

    Intervale 10 elementų masyvą užpildykite atsitiktiniais skaičiais ir atspausdinkite visų elementų skaičius, lygius X . suskaičiuokite rastų elementų skaičių naudodami skaičių skaitiklį, įdiekite kitą elementą į vietą B. Naudojant kintamąjį skaičiuoti turi būti paskirta 1 .


    B masyvo išvestis:

    writeln("Pasirinkti elementai"); jei norite skaičiuoti i:=1 - 1 parašykite (B[i], " ")

    11 masyvo užduotis. Intervale užpildykite masyvą atsitiktiniais skaičiais ir į kitą masyvą įrašykite visus skaičius, kurie baigiasi 0.
    Pavyzdys:Šaltinio masyvas: 40 57 30 71 84 Baigiasi 0: 40 30

    Masyvo elementų rūšiavimas

    Burbulų rūšiavimas

    • Šio tipo rūšiavimo atveju masyvas vaizduojamas kaip vanduo, maži elementai yra burbuliukai vandenyje, kurie plaukia į viršų (šviesiausia).
    • Pirmosios ciklo iteracijos metu masyvo elementai lyginami vienas su kitu poromis: priešpaskutinis su paskutiniu, priešpaskutinis su priešpaskutiniu ir kt. Jei ankstesnis elementas yra didesnis nei paskesnis, jie keičiami.
    • Per antrąją ciklo iteraciją nereikia lyginti paskutinio elemento su priešpaskutiniu. Paskutinis elementas jau yra, jis yra didžiausias. Tai reiškia, kad palyginimų bus vienu mažiau. Tas pats pasakytina apie kiekvieną tolesnę iteraciją.

    Vykdymas Paskalyje:

    1 2 3 4 5 6 7 8 jei i: = 1 – N-1, pradėkite nuo j: = N-1 iki i do, jei A[ j] > A[ j+ 1 ], tada prasideda : = A[ j] ; A[ j] : = A[ j+ 1 ] ; A[ j+ 1 ] : = с; galas ;

    galas ;

    i:=1 iki N-1 pradėkite nuo j:=N-1 iki i do, jei A[j] > A, tada pradėkite nuo:= A[j]; A[j] := A; A := c; galas; galas; Pavyzdys: 12 masyvo užduotis.

    Intervale užpildykite 10 elementų masyvą atsitiktiniais skaičiais ir surūšiuokite pirmąją masyvo pusę didėjimo tvarka, o antrąją – mažėjančia tvarka (naudojant „Burbulo“ metodą).

    • Šaltinio masyvas: 14 25 13 30 76 58 32 11 41 97 Rezultatas: 13 14 25 30 76 97 58 41 32 11
    • Rūšiavimas pagal pasirinkimą

    masyve ieškoma minimalaus elemento ir dedama į pirmąją vietą (vietos sukeičiama su A);

    Tarp likusių elementų taip pat ieškoma minimalaus, kuris dedamas antroje vietoje (susikeitė vietomis su A) ir kt.< A then min:=j; if min <>tada pradedu c:=A[i]; A[i]:=A; A:=c; galas; galas;

    13 masyvo užduotis: Užpildykite 10 elementų masyvą atsitiktiniais skaičiais intervale ir surūšiuokite jį didėjimo tvarka pagal skaitmenų sumą Pavyzdys:Šaltinio masyvas: 14 25 13 12 76 58 21 87 10 98 Rezultatas: 10 21 12 13 14 25 76 58 87 98

    Greitas rūšiavimas arba greitas rūšiavimas

    Pasvarstykime

    Vykdymas Paskalyje:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 procedūra QSort ( pirmas, paskutinis: sveikasis skaičius ) ; var L, R, c, X: sveikasis skaičius ; pradėti, jei pirmas< last then begin X: = A[ (first + last) div 2 ] ; L: = first; R: = last; while L <= R do begin while A[ L] < X do L: = L + 1 ; while A[ R] >X – R: = R-1; jei L<= R then begin c: = A[ L] ; A[ L] : = A[ R] ; A[ R] : = c; L: = L + 1 ; R: = R - 1 ; end ; end ; QSort(first, R) ; QSort(L, last) ; end ; end .

    procedūra QSort(pirmas, paskutinis: sveikasis skaičius); var L, R, c, X: sveikasis skaičius; pradėti, jei pirmas< last then begin X:= A[(first + last) div 2]; L:= first; R:= last; while L <= R do begin while A[L] < X do L:= L + 1; while A[R] >X – R: = R-1; jei L<= R then begin c:= A[L]; A[L]:= A[R]; A[R]:= c; L:= L + 1; R:= R - 1; end; end; QSort(first, R); QSort(L, last); end; end.

    14 masyvo užduotis:
    Užpildykite 10 elementų masyvą atsitiktiniais skaičiais diapazone [-50..50] ir surūšiuokite naudodami greitojo rūšiavimo algoritmą.

    Vienmačio masyvo elementus galime užpildyti reikšmėmis: įvesdami reikšmes iš klaviatūros; atsitiktinai; pagal formulę. Vienmačių masyvų nurodymo metodai Kilpos naudojamos skaitmeninėms masyvo reikšmėms įvesti ir išvesti. Procedūra paima parametrą pagal nuorodą, tam tikro tipo Mssiv masyvą ir sveikąjį kintamąjį n, atsakingą už užpildomų masyvo langelių skaičių. Vienmačio masyvo formavimas atsitiktinai.


    Pasidalinkite savo darbais socialiniuose tinkluose

    Jei šis darbas jums netinka, puslapio apačioje yra panašių darbų sąrašas. Taip pat galite naudoti paieškos mygtuką


    Užpildymas.

    Vienmačio masyvo elementus galime užpildyti reikšmėmis:

    reikšmių įvedimas iš klaviatūros;

    Atsitiktinai;

    Pagal formulę.

    Vienmačių masyvų apibrėžimo metodai

    Ciklos naudojamos skaitmeninėms masyvo reikšmėms įvesti ir išvesti.

    Panagrinėkime procedūras, kurios sudarytų vienmatį masyvą dviem būdais

    1) atsitiktinai,

    2) elementų įvedimas iš klaviatūros

    Tarkime, kad dirbsime su sveikųjų skaičių masyvu. Tegu pakanka turėti maksimalų elementų skaičių, lygų 50. Procedūra paima parametrą pagal nuorodą, tam tikro tipo Massiv masyvą ir sveikąjį kintamąjį n , kuris yra atsakingas už užpildytų masyvo langelių skaičių. Mums taip pat reikės vietinio kintamojo i , kuris veiks kaip ciklo parametras ir naudojamas norint nurodyti skaičių, nurodantį elemento vietą masyve.

    1. Vienmačio masyvo formavimas atsitiktinai. Kiekvieno elemento reikšmę nustatykime į atsitiktinės funkcijos Random(10) rezultatą. Masyvo užpildymą nustatysime naudodami ciklinį operatorių, kurio korpuse atsitiktinis skaičius apskaičiuojamas naudojant Random(10) funkciją, po kurios ši reikšmė priskiriama kitam i - masyvo elementas.

    Procedūra InsertMas1(Var massiv:mas; n:integer);

    I: sveikasis skaičius;

    Pradėkite

    Atsitiktinis;

    Jei i:=1 – n

    Massiv[i] := Atsitiktinis(10);

    Galas ;

    2. Vienmačio masyvo formavimas įvedant elementus iš klaviatūros.

    Procedūra InsertMas2(Var massiv:mas; n:integer);

    I: sveikasis skaičius;

    Pradėkite

    Jei i:=1 – n

    Pradėkite

    write ("Enter", t.y "masyvo elementas");

    readln(masyvas[i]);

    Galas;

    Galas;

    Masyvas ekrane rodomas taip:

    Procedūra PrintMas(massiv:mas; n:integer);

    I: sveikasis skaičius;

    Pradėkite

    i:=1 iki n

    Rašyti(Massiv[i]:5);

    Galas.

    Turime atsiminti, kad visais trimis atvejais neapsieisime be ciklo organizavimo.

    Didžiausio (minimalaus) masyvo elemento radimas.

    Tarkime, kad turime vienmatį masyvą:

    20,-2, 4, 10,7, 21,-12, 0, 4, 17.

    Pagalvokime, kokias operacijas reikia atlikti, jei reikia rasti maksimalų elementą. Natūralu, kad palyginimo operacija Mes negalvojame apie tai, kad visada lyginame porą, „bėgančią“ per visus masyvo elementus. Sukonstruosime maksimalaus (minimalaus) elemento radimo algoritmą taip, kad palygintume skaičių porą, pakartodami palyginimo veiksmą reikiamą skaičių kartų.

    Taigi turime atsakyti į du klausimus:

    1) kokie skaičiai patenka į porą, kuri sudaro ryšio operaciją;

    2) kiek kartų turi būti kartojama palyginimo operacija. Pristatykime papildomą kintamąjį, pavadintą max. Tai bus vienas iš skaičių, antrasis skaičius yra kitas masyvo elementas. Norint atlikti pirmąją palyginimo operaciją, kintamajam max reikia priskirti tam tikrą pradinę reikšmę. Čia gali būti dvi parinktys:

    1) kintamajam max priskirti pirmąjį masyvo elementą;

    2) priskirti skaičių, kuris yra akivaizdžiai mažesnis už visus masyvo elementus.

    Masyve pateikiama informacija apie studentų skaičių kiekvienoje pirmųjų metų grupėje. Nustatykite grupę su didžiausiu mokinių skaičiumi, darydami prielaidą, kad grupės numeris atitinka masyve esančio numerio eilės numerį (manome, kad tokia grupė yra tik viena).

    Kitaip tariant, turime rasti maksimalų elementą ir jo skaičių.

    programa max_num;

    tipo mas=masyvas[ 1.. 10] of byte;

    var a: mas;

    skaičius, i: baitas;

    maks.: baitas;

    pradėti

    (užpildyti bloką)

    i:=l iki 7 daryti

    readln(a[i]);

    (ieškokite maksimumo ir jo skaičiaus)

    maks.:==0;

    (įveskite mažiausią šio masyvo skaičių)

    už i:=l iki n daryti

    jei a[i]>max tada pradėkite

    skaičius:=i;

    max:=a[i]

    galas;

    writeln("maksimalus mokinių skaičius=",maks.);

    writeln("grupės numeris=",skaičius);

    galas.

    3) Raskite mažiausią elementą tarp lyginių masyvo elementų.

    Paaiškinimas: negalime priskirti min kintamojo pirmajam masyvo elementui, nes tai gali būti keista. Todėl šiam duomenų tipui turime pasirinkti labai didelį skaičių.

    Jei paskelbsime masyvo elementai yra sveikieji skaičiai, tada kaip šitas numeris bus +32767.

    programa min_even;

    a: sveikųjų skaičių masyvas;

    i:integer;

    min:integer;

    pradėti

    už i:=l iki 10 do beein

    writeln("įveskite kitą masyvo elementą");

    readln(a[i]) ;

    galas;

    min:=32767;

    i:=l iki 10 daryti

    jei (a[i]

    jei min = 32767, tada writeln ("masyve nėra lyginių elementų") else writein ("minimalus elementas tarp lyginių masyvo elementų ==",min)

    galas.

    Atkreipkite dėmesį: būtina patikrinti, ar nepasikeitė min kintamojo reikšmė, nes gali nebūti net elementų.

    Kiti panašūs darbai, kurie gali jus sudominti.vshm>

    8729. BAIGTINĖS MAŠINOS APIBRĖŽIMAS IR METODAI. SINTEZĖS PROBLEMA. ELEMENTARINĖS MAŠINOS 189,1 KB
    Baigtinės būsenos mašinos apibrėžimas ir nurodymo metodai. BAIGTINĖS MAŠINOS APIBRĖŽIMAS IR METODAI. Baigtinės būsenos mašinos apibrėžimas. Baigtinės būsenos mašinos nustatymo metodai.
    3552. Individualūs chemijos namų darbai. Chemijos namų darbai 475,47 KB
    Rekomendacijose pateikiami individualūs namų darbai šiomis temomis: neorganinių junginių klasės, cheminis ekvivalentas, atomų sandara, cheminis ryšys, cheminė termodinamika, cheminė kinetika, tirpalų koncentracija, joninės reakcijos ir druskų hidrolizė, redokso reakcijos, elektrocheminiai procesai, metalų savybės.
    12127. Paleoproterozojaus sluoksniuotų mafinių masyvų, esančių Fenoskandijos skydo šiaurės rytuose, strateginiai mineralai (PGM, Ni, Co, Cr, Cu) 17,77 KB
    Trumpas plėtros aprašymas. Plėtros pranašumai, palyginti su analogais. Svarbus plėtros aspektas yra galimybė iki minimumo sumažinti neigiamą technogeninį poveikį aplinkai, smarkiai sumažinant intensyvų sunkiosios kasybos ir gręžimo įrangos naudojimą žvalgybos ir žvalgybos etapuose. Plėtros komercinio naudojimo sritys.
    9554. MATEMATIKA. METODINIS VADOVAS IR UŽDUOTYS 268,34 KB
    Akademinė disciplina „Matematika“ skirta valstybiniams reikalavimams dėl vidurinio profesinio išsilavinimo absolventų minimalaus mokymo turinio ir lygio įgyvendinti.
    18129. Kūrybinės užduotys kaip priemonė lavinti vaizduotę 91,06 KB
    Šiose studijose atsispindi mokslinių idėjų įvairovė ir praktiniai požiūriai organizuojant mokinių kūrybinę veiklą ugdymo procese, tačiau tikslingas kūrybinių užduočių teikimas jaunesniems moksleiviams mokymosi procese kaip vaizduotės ugdymo priemonė dar nėra pakankamai ištverta; studijavo. Remiantis nustatytais prieštaravimais nagrinėjant filosofinę psichologinę ir pedagoginę literatūrą bei nagrinėjant pradinių mokyklų patirtį, buvo suformuluota tyrimo problema, susidedanti iš teorinių...
    19517. Parduotuvės „Bukva“ automatizavimo techninių specifikacijų kūrimas 155,63 KB
    Kompetentingas prekių pardavimas pagal kliento reikalavimus, tai yra specialistų konsultacija. Todėl parduotuvė turi gauti informaciją apie rinkos būklę ir teikti rinkai informaciją apie turimas prekes ir paslaugas. Sąveika su žiniasklaida susideda iš to, kad parduotuvė pateikia duomenis apie save, savo prekes ir paslaugas, vėliau iš šių duomenų bus generuojama nešiojamųjų kompiuterių parduotuvės reklama, kurią suvokia prekių ir paslaugų rinka. Prekių rūšių plėtra Parduotuvės privalumai: Didelė patirtis...
    3548. Chemijos namų darbai ir jų atlikimo gairės 229,61 KB
    Šios namų darbų užduotys skirtos sistemingam visų specialybių studentų darbui pagal chemijos kursą pagal mokymo programą. Užduočių atlikimas padeda mokiniams ugdyti savarankiško darbo įgūdžius.
    19091. TECHNINIŲ SPECIFIKACIJŲ IR PAGRINDINIŲ TECHNINIŲ REIKALAVIMŲ PAGRINDAMAM PROJEKTUI ANALIZĖ 911,42 KB
    Serverio kambarys (serverių kambarys arba tiesiog serverių kambarys) yra tam skirta technologinė patalpa, kurioje yra specialiai sukurtos ir palaikomos sąlygos serverių ir telekomunikacijų įrangai išdėstyti ir eksploatuoti. Leidžiama temperatūra serverio patalpoje turi būti
    1763. Užduoties, kaip klasės, įgyvendinimas naudojant C++ standartinės šablonų bibliotekos (STL) konteinerį informacijai saugoti 190,6 KB
    C++ sintaksė yra paveldėta iš C kalbos. Vienas iš projektavimo principų buvo išlaikyti suderinamumą su C. Tačiau C++ nėra griežtai C viršūnė. daug programų, kurias gali vienodai sėkmingai išversti abu C kompiliatoriai...
    10124. Reklamos paslaugų teikimo, valymo paslaugų, apsaugos ir personalo techninių specifikacijų kūrimas 31,88 KB
    Reklamos paslaugų techninių specifikacijų rengimas: reklamos paslaugų teisinis reglamentavimas. Valymo paslaugų techninių specifikacijų kūrimas: pagrindinės paslaugų sąvokos ir rūšys. Saugos paslaugų techninių specifikacijų rengimas: teisinis reguliavimas. Personalo paslaugų techninių specifikacijų kūrimas: pagrindinės sąvokos.

    Pamoka iš serijos: „ Programavimo kalba Pascal»

    Deklaravęs masyvą, galite su juo dirbti. Pavyzdžiui, priskirkite reikšmes masyvo elementams ir paprastai traktuokite juos kaip įprastus kintamuosius. Norėdami pasiekti konkretų elementą, laužtiniuose skliaustuose turite nurodyti masyvo identifikatorių (pavadinimą) ir elemento indeksą.

    Pavyzdžiui, įrašas Mas, A leidžia pasiekti antrąjį masyvo elementą MAS ir dešimtąjį masyvo elementą A. Dirbant su dvimačiu masyvu nurodomi du indeksai, su n-mačiu masyvu - n. indeksai.

    Pavyzdžiui, įrašas Matr suteikia galimybę apdoroti elemento, esančio masyvo M ketvirto stulpelio ketvirtoje eilutėje, vertę.

    Indeksuoti masyvo elementai vadinami indeksuotais kintamaisiais. Negalite peržengti masyvo ribų. Tai yra, jei Mas masyve yra penki elementai, tada, pasiekiant šeštą arba aštuntą elementą, bus padaryta klaida.

    Pažvelkime į tipines operacijas, kurios atsiranda dirbant su vienmačiais masyvais.

    Vienmačio masyvo užpildymas reikšmėmis

    Masyvo užpildymas ir išvedimas galima atlikti tik elementą po elemento, tai yra, pirmiausia galite priskirti reikšmę pirmam elementui, tada antrajam ir tt, tas pats su jo rodymu ekrane - rodome pirmą, antrą, trečią, ir taip iki paskutinio.

    Pascal neturi masyvo elementų įvesties/išvesties priemonių vienu metu, todėl reikšmės įvedamos elementas po elemento. Vertės gali būti priskirtos masyvo elementui naudojant priskyrimo operatorių arba įvestos iš klaviatūros naudojant „Read“ arba „Readln“ operatorius. Labai patogu kartoti visus masyvo elementus for cikle.

    Vienmatių masyvų užpildymo būdai:

    1. Vertės įvedimas iš klaviatūros.
    2. Reikšmių nustatymas priskyrimo operatoriuje naudojant atsitiktinių skaičių generatorių. Šis metodas yra patogesnis, kai masyve yra daug elementų (jų reikšmių įvedimas iš klaviatūros užima daug laiko).
    3. Vertybių nustatymas naudojant formulę.
    4. Masyvo elementų įvedimas iš failo

    1. Masyvo elementų reikšmių įvedimas iš klaviatūros. Kadangi buvo naudojamas Readln operatorius, kiekviena reikšmė bus įvesta į naują eilutę.

    2. Masyvo užpildymas atsitiktinai sugeneruoti skaičiai iš intervalo . Sujungiame atsitiktinių skaičių jutiklį – atsitiktinę funkciją.

    3. Užpildymas masyvas pagal formulę. Kiekvienam masyvo elementui priskiriama reikšmė, apskaičiuota naudojant formulę. Jei kiekvienas masyvo elementas yra lygus trigubai jo eilės skaičiaus (indekso) vertei, procedūra atrodys taip:

    4. Skaičių skaitymas iš failo. Iš anksto turite sukurti tekstinį failą, kuriame parašykite kelias eilutes, kurių kiekvienoje yra 30 skaičių.

    Masyvo elementų reikšmių rodymas ekrane

    Išvada elementų reikšmės masyvasįvestis į ekraną atliekama, kaip ir įvestis, ciklas po elemento. Išvestims naudosime Write arba Writeln operatorius. Kaip įvesties parametrus perduosime procedūrai ne tik masyvą, bet ir elementų, kuriuos reikia išvesti, skaičių, pradedant nuo pirmojo (to prireiks, kai pašalinsime ir įtrauksime elementus į masyvą).

    1 pavyzdys. Užpildykite masyvą naudodami klaviatūrą ir parodykite jį ekrane.

    Sprendimas.

    Programa naudos dvi procedūras: Init1 procedūrą (masyvo užpildymas iš klaviatūros) ir Print procedūrą (masyvo atvaizdavimas ekrane).

    2 pavyzdys. Užpildykite masyvą iš tekstinio failo ir parodykite jį ekrane. Tekstiniame faile yra kelios eilutės, kiekvienoje eilutėje yra 30 skaičių.

    Sužinojote, kaip užpildyti vienmatį masyvą ir parodyti jį ekrane.

    Kitoje pamokoje toliau susipažinsime su vienmačių masyvų apdorojimo algoritmais.