Dvojrozmerné polia. Vyplnenie dvojrozmerného poľa podľa daného pravidla

Sekcie: Počítačová veda

Predmet: Dvojrozmerné polia. Vyplnenie dvojrozmerného poľa podľa daného pravidla.

Ciele: precvičiť si zručnosti práce s prvkami dvojrozmerného poľa, naučiť sa vyplniť dvojrozmerné polia podľa daného pravidla, naučiť sa odvodiť vzťah medzi číslom riadku a číslom stĺpca; rozvoj logického myslenia žiakov.

POKROK TRIEDY

1. Aktualizácia vedomostí

Polia, v ktorých je poloha prvkov opísaná dvoma indexmi, sa nazývajú dvojrozmerné. Štruktúra takéhoto poľa môže byť reprezentovaná pravouhlou maticou. Každý prvok matice je jedinečne identifikovaný uvedením čísla riadku a stĺpca, číslo riadka je i, číslo stĺpca je j.
Uvažujme maticu A veľkosti n*m:

11 12 13 14
21 22 23 24
31 32 33 34

Matica 3 riadky a 4 stĺpce, počet riadkov n=3, počet stĺpcov m=4. Každý prvok má svoje číslo, ktoré sa skladá z dvoch čísel – čísla riadku, v ktorom sa prvok nachádza, a čísla stĺpca. Napríklad a23 je prvok nachádzajúci sa v druhom riadku a treťom stĺpci.
Dvojrozmerné pole v Turbo Pascal možno opísať rôznymi spôsobmi. Ak chcete opísať dvojrozmerné pole, musíte určiť, aký typ jeho prvkov je a ako sú očíslované (o aký typ indexu ide). Existuje niekoľko spôsobov, ako opísať dvojrozmerné pole.

Const maxN=…; (Maximálny počet riadkov)
maxM=…; (Maximálny počet stĺpcov)

1 spôsob

Typ Mas = pole<тип элементов>; (Jednorozmerné pole)
Typ Tmas = pole Mas; (Jednorozmerné pole, ktorého prvky sú jednorozmerné polia)

Metóda 2

Typ Tmas = pole poľa<тип элементов>;
(Jednorozmerné pole, ktorého prvky sú jednorozmerné polia)

3 spôsob

Typ<имя типа>= pole<тип элементов>; (Dvojrozmerné pole)

Prednosť sa dáva tretiemu spôsobu opisu dvojrozmerného poľa.

Napríklad:

Const N=3; M = 4;
Typ TMas= pole integer; (2-rozmerné pole celých čísel)

Vytvorenie dvojrozmerného poľa sa môže uskutočniť štyrmi spôsobmi: zadaním z klávesnice, cez generátor náhodných čísel, podľa daného pravidla alebo pomocou súboru.

1) Vytvorenie dvojrozmerného poľa pomocou vstupu z klávesnice a algoritmu pre výstup maticových prvkov riadok po riadku.

Konšt. N = 10; M = 10;
Typ Tmas= pole integer;
Var A:Tmas; i,j:integer;
Začať
(Zadanie prvkov matice)
Pre i:=1 až N do
Pre j:=1 až M urobte
Prečítaj);
(Výstup maticových prvkov)
Pre i:=1 až N začnite
Pre j:=1 až M urobte
Napíšte(A:4); (Je vytlačený prvý riadok)
Writeln (nový riadok)
koniec;
Koniec.

2) Fragment programu na generovanie dvojrozmerného poľa pomocou generátora náhodných čísel.

Začať
Randomizovať; (Inicializácia generátora náhodných čísel)
(Zadanie prvkov matice)
Pre i:=1 až N do
Pre j:=1 až M urobte
A:=random(45)-22;

2. Štúdium nového materiálu. Vyplnenie poľa podľa pravidla

Zoberme si niekoľko fragmentov programov na vyplnenie dvojrozmerného poľa podľa určitého zákona. Aby ste to dosiahli, musíte odvodiť pravidlo plnenia.

1. Vyplňte pole A veľkosti n*m ​​napríklad takto

1 2 3 4 5 6 7 8
16 15 14 13 12 11 10 9
17 18 19 20 21 22 23 24
32 31 30 29 28 27 26 25
33 34 35 36 37 38 39 40
48 47 46 45 44 43 42 41

Pole je vyplnené podľa princípu „hada“. Pravidlo vyplnenia: ak je číslo riadku nepárne, potom A=(i-1)*m+j, inak A=i*m-j+1.

program M1A;

n,m,i,j: celé číslo;
začať
readln(n,m);
pre i:=1 až n sa začínajú
pre j:=1 až m do
začať
ak i mod 2 = 1 potom
A = (i-1)*m+j
inak
A = i*m-j+l;
písať(A:3);
koniec;
writeln;
koniec;
readln;
koniec.

Tu je príklad programu pre iný spôsob plnenia podľa daného pravidla:

program M1B;
var A:pole celého čísla;
n,m,i,j: celé číslo;
c: celé číslo;
začať
readln(n,m);
c:=1;
pre i:=1 až n do
začať
pre j:=1 až m do
začať
A:=c;
ak (i ​​mod 2 = 0) a (j<>m) potom
dec(c)
inak
inc(c);
písať(A:3);
koniec;
c:=c+m-1;
writeln;
koniec;
readln;
koniec.

2. Vyplňte pole A podľa nasledujúceho princípu:

1 0 2 0 3 0 4
0 5 0 6 0 7 0
8 0 9 0 10 0 11
0 12 0 13 0 14 0

program M2;
var A:pole celého čísla;
n,m,i,j: celé číslo;
c: celé číslo;
začať
readln(n,m);
c:=0;
pre i:=1 až n do
začať
pre j:=1 až m do
začať
ak (i-1+j) mod 2 = 0 potom
A:=0
inak
začať
inc(c);
A:=c;
koniec;
písať(A:5);
koniec;
writeln;
koniec;
readln;
koniec.

3. Vyplňte pole A podľa nasledujúceho princípu:

1 12 13 24 25 36
2 11 14 23 26 35
3 10 15 22 27 34
4 9 16 21 28 33
5 8 17 20 29 32
6 7 18 19 30 31

var A:pole celého čísla;
n,m,i,j: celé číslo;
c: celé číslo;
začať
readln(n,m);
c:=1;
pre j:=1 až m do
začať
pre i:=1 až n do
začať
A:=c;
ak (j mod 2 = 0) a (i<>n) potom
dec(c)
inak
inc(c);
koniec;
c:=c+n-l;
koniec;
pre i:=1 až n do
začať
pre j:=1 až m do
písať(A:5);
writeln;
koniec;
readln;
koniec.

4. Vyplňte pole A podľa nasledujúceho princípu:

1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

var i,j,m,c,d: celé číslo;

začať
c:=1;
readln(m);
pre j:=1 až m do
začať
i:=c;
d:=1;
opakovať
A:=d;
inc(i);
ak som potom
i:=1;
inc(d);
kým i=c;
dec(c);
ak c<= 0 then
c:=m-c;
koniec;
for i:=1 to m do
začať
pre j:=1 až m do
písať(A:2);
writeln;
koniec;
koniec.

5. Vyplňte pole A podľa nasledujúceho princípu:

1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1

var m,i,j: celé číslo;
A:pole celého čísla;
začať
readln(m);
for i:=1 to m do
začať
pre j:=1 až m do
začať
ak (i=j) alebo (m-i+1=j), potom
A:=1
inak
A:=0;
písať(A:2);
koniec;
writeln;
koniec;
koniec.

3. Úlohy na samostatné riešenie

6 5 4 3 2 1
7 8 9 10 11 12
18 17 16 15 14 13
19 20 21 22 23 24
30 29 28 27 26 25
31 32 33 34 35 36

36 25 24 13 12 1
35 26 23 14 11 2
34 27 22 15 10 3
33 28 21 16 9 4
32 29 20 17 8 5
31 30 19 18 7 6

0 1 1 1 0
1 0 1 0 1
1 1 0 1 1
1 0 1 0 1
0 1 1 1 0

4) Vyplňte pole podľa nasledujúceho princípu:

31 32 33 34 35 36
25 26 27 28 29 30
19 20 21 22 23 24
13 14 15 16 17 18
7 8 9 10 11 12
1 2 3 4 5 6

5) Vyplňte pole podľa nasledujúceho princípu:

31 25 19 13 7 1
32 26 20 14 8 2
33 27 21 15 9 3
34 28 22 16 10 4
35 29 23 17 11 5
36 30 24 18 12 6

Domáca úloha:

1) Vyplňte pole podľa nasledujúceho princípu:

6 7 18 19 30 31
5 8 17 20 29 32
4 9 16 21 28 33
3 10 15 22 27 34
2 11 14 23 26 35
1 12 13 24 25 36

2) Vyplňte pole podľa nasledujúceho princípu:

31 32 33 34 35 36
30 29 28 27 26 25
19 20 21 22 23 24
18 17 16 15 14 13
7 8 9 10 11 12
6 5 4 3 2 1

3) Vyplňte pole podľa nasledujúceho princípu:

0 1 1 1 0
1 0 1 0 1
1 1 0 1 1
1 0 1 0 1
0 1 1 1 0

Sekcie: Počítačová veda

Ciele:

  1. Oboznámiť študentov s možnosťou vyplnenia a spracovania poľa.
  2. Vytvorte grafické rozhranie pre projekt na vyplnenie poľa a vypočítajte súčet prvkov v danom poli.
  3. Rozvíjajte kognitívny záujem o predmet
  4. Podporujte zodpovedný prístup k učeniu

POČAS VYUČOVANIA

1. Aktualizácia lekcie

Organizovanie času

Frontálny prieskum na predchádzajúcu tému „Koncept poľa. Jednorozmerné pole"

2. Formovanie zručností a schopností

Vysvetlenie nového materiálu

Vyhlásenie poľa

Deklarovanie poľa je podobné ako deklarovanie premenných, stačí zadať rozsah zmien indexu. Napríklad deklarovanie jednorozmerného celočíselného poľa obsahujúceho 10 prvkov sa vykonáva takto:

A: pole celých čísel;

Základné úlohy pri práci s poliami

1. Vytvorenie (naplnenie) poľa

1.1. podľa vzorcov Pre i:=1 až 10 urob a[i]:= i*i;

1.2. generovať náhodne Pre i:=1 až 10 urobte a[i]:= random(20):

Zabudovaná funkcia RANDOM(MAX) vracia náhodné celé číslo rovnomerne rozdelené v rozsahu od 0 do MAX – 1 (MAX je prístupový parameter)

1.3. zadajte z klávesnice For i:=1 až 10 do read(a[i]);

2. Zoradiť pole (vzostupne, zostupne);

3. Vyhľadajte prvky v poli;

4. Výber prvkov z poľa podľa podmienky;

Náhodné vyplnenie poľa.

Ak chcete začať pracovať s poľom, musíte ho vyplniť, t.j. priraďte konkrétne hodnoty prvkom poľa. Na vygenerovanie postupnosti náhodných čísel použijeme funkciu Random(100). Keď spustíte program, táto funkcia vypíše pseudonáhodnú postupnosť celých čísel v rozsahu od 0 do 100.

Na generovanie sekvencií náhodných čísel, ktoré sa navzájom líšia, sa odporúča použiť operátor Randomize

Akcie s jednorozmernými poľami

1. Výpočet súčtu prvkov

Pre I:= 1 až 10 Do s:=s+ a[i]; (zvyčajná akumulácia množstva v s)

2. Výpočet produktu

Pre I:= 1 až 10 Do р:=р* a[i]; (zvyčajná akumulácia produktu v p)

3. Vyhľadajte prvok s danou hodnotou

3. Poznámka Rozvoj zručností a schopností v praxi

Projekt „Súčet prvkov v poli“. Vytvorme projekt „Súčet prvkov v poli“, ktorý naplní pole náhodnými číslami a vypočíta súčet týchto čísel

Najprv si vytvoríme postup na vyplnenie poľa

1. Spustite programovací systém Delphi.

2. Práca na projekte začína vytvorením grafického rozhrania, pre toto v okne Form Builder Na formulári sú umiestnené ovládacie prvky. Pre vytvorenie grafického rozhrania projektu umiestnime na formulár dve textové polia na zobrazenie číselných údajov (jedno na vyplnenie poľa, druhé na zobrazenie súčtu) a dve tlačidlá na implementáciu procedúr udalostí: vyplnenie poľa a súčet.

3. S Panely s nástrojmi umiestnite textové pole Editl a tlačidlo príkazu Buttonl na formulár

Ďalším krokom je vytvorenie kódu procedúry udalosti. Dvojitým kliknutím na tlačidlo, pre ktoré potrebujete vytvoriť kód programu, sa zobrazí okno Programový kód s prázdnou šablónou procedúry udalosti.

4. Dvakrát kliknite na tlačidlo Buttonl, zobrazí sa procedúra udalosti šablóny TForml.ButtonlClick: Declare an array A a popis premenných JE v časti popis premennej var

A:pole celého čísla;

procedure TForm1.Button1Click(Sender: TObject);

Pre I:= 1 až 10 Do

A[I] := Náhodné(10);

Edit1.Text:= Edit1.Text +" " + IntToStr(a[i]);

5. Uložiť projekt ako

6. Zostavenie projektu (Project - Compile)

Teraz vytvoríme postup na výpočet súčtu prvkov vo vyplnenom poli

Používaním Panely s nástrojmi Na Formulár umiestnime tlačidlo Button2 a textové pole Edit2. Dvojitým kliknutím na tlačidlo Button2, pre ktoré je potrebné vytvoriť kód programu, sa otvorí okno Programový kód s prázdnou šablónou procedúry udalosti.

procedure TForm1.Button2Click(Sender: TObject);

Pre I:= 1 až 10 Do

Edit2.Text:= Edit2.Text +" " + IntToStr(s)

Uloženie projektu celého projektu (Save Project).

Poďme skompilovať projekt (stlačením klávesy F9).

Kliknite na tlačidlá Vyplniť pole a Súčet.

V textovom poli sa zobrazia výsledky súm pre rôzne možnosti plnenia

4. Zhrnutie

5. Domáca úloha: Vytvorte projekt „Produkt prvkov poľa“, ktorý zahŕňa vyplnenie poľa náhodnými číslami a schopnosť zobraziť súčin všetkých prvkov poľa v textovom poli.

Jednorozmerné polia. Vytvorenie poľa a zobrazenie jeho prvkov

Definícia pojmu

Pole je súbor údajov rovnakého typu so spoločným názvom pre všetky prvky.

Prvky poľa sú očíslované a ku každému z nich je možné pristupovať podľa čísla. Počty prvkov poľa sa inak nazývajú indexy a samotné prvky poľa sa nazývajú indexované premenné.

a[n]

- 0. 5

-5.2

0.6

Vektor (lineárne alebo jednorozmerné pole) je príkladom poľa, v ktorom sú prvky očíslované jedným indexom.

  • Ako čísla (index) element poľa, vo všeobecnosti sa používa výraz radový typ(najčastejšie je to celočíselná konštanta alebo premenná celočíselného typu: celé číslo, slovo, byte alebo skrat)
  • Pri prístupe k prvku poľa je index uvedený v hranatých zátvorkách. Napríklad a, hmotnosť.
  • Prvky poľa sa spracujú, keď sa indexy prvkov zmenia. Napríklad, keď používate výraz, nasledujúce premenné sú užitočné na prepínanie medzi prvkami poľa:
    • a[i] - všetky prvky;
    • a - prvky umiestnené na párnych miestach;
    • a - prvky na nepárnych miestach

Popis poľa

  • Definovanie premennej ako poľa bez predchádzajúcej deklarácie typu poľa
vara,b,c: pole z celé číslo; var s: pole celého čísla; k: pole celého čísla;

Poznámka

    • Opis poľa vyžaduje kompilátor na pridelenie pamäte pre jeho prvky.
    • Premenná je definovaná ako pole pomocou funkčného slova pole(pole). Rozsah je uvedený v hranatých zátvorkách, t. j. dolná a horná hranica hodnoty indexu poľa. Horná medzná hodnota nemôže byť nižšia ako dolná medza.
    • Tu sa premenné s ak považujú za rôzne typy. Na zabezpečenie kompatibility je potrebné používať deklarácie premenných prostredníctvom predbežnej deklarácie typu.
    • Ak sú typy polí identické, potom v programe môže byť jedno pole priradené druhému. V tomto prípade budú hodnoty všetkých premenných v jednom poli priradené zodpovedajúcim prvkom druhého poľa.
    • Na poliach nie sú definované žiadne relačné operácie. Môžete porovnávať iba dve polia prvok po prvku.
  • Predbežný popis typu poľa
konšt n = 5; typu mas = pole celého čísla; var a: mas;

Poznámka

    • K prvkom poľa sa bude pristupovať takto: a, a, a, a, a (t. j. pole obsahuje päť prvkov).
    • Použitie konštánt(v tomto príklade n) pri popise poľa je výhodnejšie, pretože ak sa veľkosť poľa zmení, nebude potrebné robiť opravy v celom texte programu.
  • Nastavenie poľa na typovanú konštantu
konšt X: pole celého čísla = (1, 2, 3, 4, 5, 6);

Poznámka

    • V tomto príklade nie je len pridelená pamäť pre pole, ale bunky sú tiež naplnené údajmi.
    • Prvky poľa môžu byť zmeniť počas programu (ako všetky napísané konštanty).

Vyplnenie poľa údajmi

§ Na vyplnenie poľa dáta (a ich výstup), najčastejšie sa používa slučka s parametrom pre

§ Ak chcete vyplniť pole náhodnými číslami, použite funkciu náhodný a postup randomizovať(inicializácia generátora náhodných čísel). Formát záznamu je: náhodné (B - A) + A, kde A a B sú prevzaté z intervalu :4);

Príklad programu pre vstup a výstup poľa

Formulácia problému. Získajte súčet prvkov poľa pozostávajúceho z 10 celočíselných prvkov. Prvky poľa sa zadávajú z klávesnice.

program pole2; var suma: celé číslo; ja: byte; a: pole slova; začať súčet:= 0; prei:= 0 do 9 robiť začať písať("a[",ja," ] = "); readln(a[i]); súčet:= súčet + a[i] koniec; písaťln("suma =", súčet) koniec.

Príklad programu na prácu s prvkami poľa

Formulácia problému. Získajte aritmetický priemer prvkov poľa. Prvky poľa sú vyplnené náhodnými číslami.

program pole3; konšt n = 100; var sar: reálny; suma: celé číslo; ja: byte; a: pole celého čísla; začať súčet:= 0; randomizovať; prei:= 0 do n robiť začať a[i] := náhodný(100); súčet:= súčet + a[i] koniec; sar:= suma/n; písaťln("sar =", sar) koniec.

Lekcia vysvetľuje ako pracovať s jednorozmernými poľami v Pascale, ako používať generátor náhodných čísel – funkciu náhodný v jazyku Pascal. Uvažuje sa o príklade, ako odvodiť Fibonacciho čísla.


Materiály na stránke sú zamerané na praktické zvládnutie programovacieho jazyka Pascal. Stručné teoretické informácie netvrdia, že sú úplným pokrytím materiálu na danú tému; Potrebné informácie sa dajú nájsť vo veľkom množstve na internete. Medzi naše úlohy patrí poskytovanie možnosti získať praktické programovacie zručnosti v jazyku Pascal. Vyriešené vizuálne príklady a úlohy sú prezentované v poradí s narastajúcou zložitosťou, čo uľahčí štúdium materiálu od začiatku.

Vyhlásenie poľa

V Pascale existujú dva typy polí: jednorozmerné a dvojrozmerné.
Definovanie jednorozmerného poľa v jazyku Pascal znie takto: jednorozmerné pole je určitý počet prvkov patriacich do rovnakého dátového typu, ktoré majú rovnaký názov a každý prvok má svoj vlastný index – poradové číslo.
Popis poľa v jazyku Pascal (deklarácia) a prístup k jeho prvkom je nasledovný:

Vyhlásenie poľa

var dlzka: pole [ 1 .. 3 ] integer ; počiatočná dĺžka[ 1 ] : = 500 ; dlina[2]: = 400; dlina[3]: = 150; ...

var dlzka: pole integer; počiatočná dĺžka:=500; dĺžka:=400; dĺžka:=150; ...

  • dlina — identifikátor poľa (názov);
  • pre vyhlásenie sa používa služobné slovo Array (preložené z angličtiny ako „pole“ alebo „set“);
  • - v hranatých zátvorkách sa umiestni číslo (index) prvého prvku, potom dve bodky a index posledného prvku poľa, t.j. v podstate je uvedený počet prvkov; počet prvkov v poli sa nazýva rozmer poľa
  • of integer (z anglického „from integers“) - označuje, o aký typ poľa ide, tu je pomocné slovo.
  • Oznámiť veľkosť môže byť použitá prostredníctvom konštanty:

    Inicializácia poľa

    Okrem toho môže byť samotné pole konštantný, t.j. všetky jeho prvky v programe sú vopred určené. Popis takéhoto poľa vyzerá takto::

    const a: pole [ 1 .. 4 ] celého čísla = (1 , 3 , 2 , 5 );

    const a:array of integer = (1, 3, 2, 5);

    Dopĺňanie po sebe idúcich čísel:

    Výsledok: A = 8, A = 9, A = 10, ..., A[N] = A + 1

    Vstup z klávesnice:

    Príklad: Pozrime sa, ako sa pole zadáva v jazyku Pascal:

    writeln("zadajte pocet prvkov: "); readln(n); (ak množstvo nie je vopred známe, opýtame sa ho) for i:= 1 až n do begin write("a[", i, "]="); read(a[i]); ...koniec; ...


    ✍ Príklad výsledku:

    Zadajte počet prvkov: 3 a=5 a=7 a=4

    Tlač prvkov poľa

    Príklad: Pozrime sa, ako zobraziť pole v jazyku Pascal:

    1 2 3 4 5 6 7 8 9 10 11 12 13 var a: pole [ 1 .. 5 ] celého čísla ; (pole piatich prvkov) i:integer ; begin a[ 1 ] : = 2 ; a[2]: = 4; a[3]: = 8; a[4]: = 6; a[5]: = 3; writeln("Pole A:"); for i : = 1 až 5 do píšte (a[ i] : 2 ); (výstup prvkov poľa) koniec.

    var a: pole integer; (pole piatich prvkov) i: celé číslo; begin a:=2; a:=4; a:=8; a:=6; a:=3; writeln("Pole A:"); for i:= 1 až 5 do write(a[i]:2); (prvky výstupného poľa) koniec.

    ✍ Príklad výsledku:

    Pole A: 2 4 8 6 3

    Na prácu s poľami sa najčastejšie používa v Pascale s parametrom, pretože zvyčajne viete, koľko prvkov je v poli a ako indexy prvkov môžete použiť počítadlo slučiek.

    Pole 0 úloh. Musíte zadať skutočné pole dimenzií 6 (t.j. šesť prvkov); vyplňte pole vstupnými hodnotami a zobrazte prvky na obrazovke. Použite dve slučky: prvú na zadávanie prvkov, druhú na výstup.


    V tomto príklade práce s jednorozmerným poľom je zjavná nepríjemnosť: priraďovanie hodnôt prvkom.

    Spracovanie polí v jazyku Pascal, ako aj vyplnenie poľa sa zvyčajne uskutočňuje pomocou cyklu for.

    Náhodná funkcia v Pascale

    Aby sa neustále nevyžadovali hodnoty prvkov poľa, používa sa generátor náhodných čísel v jazyku Pascal, ktorý je implementovaný funkciou Random. V skutočnosti sa generujú pseudonáhodné čísla, ale o to nejde.

    Na generovanie čísel od 0 do n (bez hodnoty samotného n, celé čísla v intervale celé číslo; i:integer; begin randomize; for i:=1 až 10 do begin f[i]:=random(10); ( interval ) write(f[i]," "); koniec; koniec.

    ✍ Príklad výsledku:

    9 8 9 2 0 3 6 9 5 0

    Pre reálne čísla v intervale a zobrazenie prvkov na obrazovke: definujte tri polohy pre zobrazenie každého prvku.

    Fibonacciho čísla v Pascale

    Najbežnejším príkladom práce s poľom je výstup série Fibonacciho čísel v jazyku Pascal. Zvážme to.

    Príklad: Fibonacciho číselný rad: 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;

    Dostali sme vzorec pre prvky série.

    Príklad: Vypočítajte a vytlačte prvých 20 Fibonacciho čísel.

    1 2 3 4 5 6 7 8 9 10 11 var i: integer ; f: pole [0 .. 19] celého čísla; begin f[ 0 ] : = 1 ; f[1]: = 1; pre i: = 2 až 19 do begin f[ i] : = f[ i-1] + f[ i-2]; writeln (f[ i] ) end ; koniec.

    var i:integer; f:pole integer; begin f:=1; f:=1; pre i:=2 až ​​19 začni f[i]:=f+f; writeln(f[i]) koniec; koniec.

    V tomto príklade sa ozrejmí princíp práce s číselným radom. Zvyčajne sa na odvodenie číselného radu nájde vzorec na určenie každého prvku tohto radu. Takže v prípade Fibonacciho čísel toto pravidlo vzorca vyzerá ako f[i]:=f+f. Preto sa pri vytváraní prvkov poľa musí použiť v slučke for.

    Pole 2 úloha. Daný rad 10 svojvoľnýčísla: a, a, ... , a (použite funkciu random()). Vypočítajte a vytlačte súčet trojíc susedných čísel: a+a+a , a+a+a , a+a+a , …… , a+a+a

    Pseudokód:

    Nájdenie maximálneho prvku podľa jeho indexu:


    Úloha Array_min: Nájdite minimálny prvok poľa. Vytlačte prvok a jeho index.

    Pole 4 úloha. Dané pole 10 celočíselných prvkov. Nájdite počet záporných čísel a zobrazte číslo na obrazovke.

    Pole 5 úloh. Nájdite minimum a maximum z n zadaných čísel (pole). Určite vzdialenosť medzi týmito prvkami. 3 2 6 1 3 4 7 2 >>> min=1, max=7, vzdialenosť=3

    Pole 6 úloh. Dané celočíselné pole veľkosti N. Vytlačte všetky párne čísla obsiahnuté v tomto poli v zostupnom poradí ich indexov, ako aj ich počtu K. N=4 mas: 8 9 2 5 >>> 2 8 množstvo= 2

    Pole 7 úloh. Zadajte pole 5 prvkov z klávesnice, nájdite v ňom dva maximálne prvky a ich čísla.

    Príklad:

    Počiatočné pole: 4 -5 10 -10 5 maximum A=10, A=5

    Vyhľadajte v poli

    Pozrime sa na komplexný príklad práce s jednorozmernými poľami:

    Príklad: Dané pole 10 čísel. Zistite, či je číslo zadané používateľom v poli. Ak existuje, výstup "nájdený", Ak nie - "nenájdené".
    Náročnosť úlohy je vytlačiť slová "nájdený" alebo "nenájdené" potrebné raz.


    Na vyriešenie tohto problému budete potrebovať príkaz break na ukončenie cyklu.
    Možnosť riešenia 1. Slučka For:

    Ukážte riešenie

    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: pole [ 1 .. 10 ] celého čísla ; flag:boolean ; i, c: celé číslo; začať randomizovať; for i: = 1 až 10 do begin f[ i] : = random(10) ; napíš (f[ i] , " " ); koniec ; príznak: = false ; writeln( "zadať vzorku"); readln(c); pre i: = 1 až 10 urob, ak f[ i] = c then begin writeln ("nájdené" ); príznak: = true ; prestávka ; koniec ; if flag= false then writeln ("nenajdene" ); koniec.

    var f: pole celého čísla; flag:boolean; i,c:integer; začať randomizovať; for i:=1 až 10 do begin f[i]:=random(10); write(f[i]," "); koniec; flag:=false; writeln("zadať vzorku"); readln(c); for i:=1 až 10 urob if f[i]=c then begin writeln("nájdené"); flag:=true; prestávka; koniec; if flag=false then writeln("nenajdene"); koniec.

    Uvažujme efektívne riešenie:

    Úloha: nájsť prvok rovný X v poli alebo zistiť, že neexistuje.

    Algoritmus:

    • začať od 1. prvku (i:=1);
    • ak sa nasledujúci prvok (A[i]) rovná X, dokončite vyhľadávanie, inak prejdite na ďalší prvok.

    riešenie v Pascal Option 2. Slučka while:

    Pozývame vás pozrieť si podrobnú video analýzu vyhľadávania prvku v poli (efektívny algoritmus):

    Pole 8 úloh. Vyplňte pole 10 prvkov náhodnými číslami v intervale a vypíšte čísla všetkých prvkov rovné X .

    Príklad:

    Počiatočné pole: 4 0 1 2 0 1 3 4 1 0 Čo hľadáme? 0 A, A, A

    Cyklický posun

    Príklad: posuňte prvky poľa doľava o 1 pozíciu, prvý prvok nahradí posledný.



    Riešenie:

    Algoritmus:
    A:=A; A:=A;...A:=A[N];

    Program:

    Pole 9 úloh. Vyplňte pole 10 prvkov náhodnými číslami v intervale [-10..10] a vykonajte cyklický posun doľava bez prvého prvku.
    Príklad: Počiatočné pole: 4 -5 3 10 -4 -6 8 -10 1 0 Výsledok: 4 3 10 -4 -6 8 -10 1 0 -5

    Preusporiadanie prvkov v poli

    Pozrime sa, ako je pole preusporiadané alebo obrátené.

    Príklad: preusporiadajte prvky poľa v opačnom poradí


    Riešenie:

    Algoritmus:

    Pseudokód:

    Program:

    Zostavte 10 úloh. Vyplňte pole 10 prvkov náhodnými číslami v intervale [-10..10] a otočte všetky prvky okrem posledného.
    Príklad: Zdrojové pole: -5 3 10 -4 -6 8 -10 1 0 4 Výsledok: 0 1 -10 8 -6 -4 10 3 -5 4

    Výber prvkov a uloženie do iného poľa

    Príklad: nájdite prvky v poli, ktoré spĺňajú nejakú podmienku (napríklad zápornú) a skopírujte ich do iného poľa

    Riešenie:

    Riešenie: spočítajte počet nájdených prvkov pomocou počítadla počtu, nainštalujte ďalší prvok na miesto B. Pomocou premennej počítať musí byť pridelené 1 .


    Výstup poľa B:

    writeln("Vybrané položky"); pre i:=1 napočítať-1 napíšte(B[i], " ")

    Pole úloha 11. Vyplňte pole náhodnými číslami v intervale a do iného poľa zapíšte všetky čísla, ktoré končia 0.
    Príklad: Zdrojové pole: 40 57 30 71 84 Končí na 0: 40 30

    Triedenie prvkov poľa

    Bublinové triedenie

    • V tomto type triedenia je pole reprezentované ako voda, malé prvky sú bubliny vo vode, ktoré plávajú nahor (najľahšie).
    • Počas prvej iterácie cyklu sa prvky poľa porovnávajú navzájom vo dvojiciach: predposledný s posledným, predposledný s predposledným atď. Ak sa ukáže, že predchádzajúci prvok je väčší ako nasledujúci, vymenia sa.
    • Počas druhej iterácie cyklu nie je potrebné porovnávať posledný prvok s predposledným. Posledný prvok je už na svojom mieste, je najväčší. To znamená, že počet porovnaní bude o jedno menej. To isté platí pre každú nasledujúcu iteráciu.

    Vykonanie v Pascale:

    1 2 3 4 5 6 7 8 for i: = 1 až N- 1 do begin for j: = N- 1 down to i to if A[ j] > A[ j+ 1 ] then begin with: = A[ j] ; A[j]: = A[j+1]; A[j+1]: = с; koniec ; koniec ;

    pre i:=1 až N-1 začnite pre j:=N-1 nadol až po i urobte, ak A[j] > A potom začnite od:= A[j]; A[j]:= A; A := c; koniec; koniec;

    Pole 12 úloh. Vyplňte pole 10 prvkov náhodnými číslami v intervale a zoraďte prvú polovicu poľa vzostupne a druhú v zostupnom poradí (pomocou metódy „Bubble“). Príklad: Zdrojové pole: 14 25 13 30 76 58 32 11 41 97 Výsledok: 13 14 25 30 76 97 58 41 32 11

    Triedenie podľa výberu

    • minimálny prvok sa vyhľadá v poli a umiestni sa na prvé miesto (vymenené miesta s A);
    • Medzi zvyšnými prvkami sa hľadá aj ten minimálny, ktorý sa umiestni na druhom mieste (prehodené miesta s A) atď.

    begin c: = A[ i] ; A[i]: = A[min]; A[min]: = c; koniec ; koniec ;

    pre i:= 1 až N-1 začína min:= i; pre j:= i+1 až N urob, ak A[j]< A then min:=j; if min <>i potom začne c:=A[i]; A[i]:=A; A:=c; koniec; koniec;

    Úloha 13: Vyplňte pole 10 prvkov náhodnými číslami v intervale a zoraďte ho vo vzostupnom poradí podľa súčtu číslic Príklad: Zdrojové pole: 14 25 13 12 76 58 21 87 10 98 Výsledok: 10 21 12 13 14 25 76 58 87 98

    Rýchle triedenie alebo rýchle triedenie

    Algoritmus:

    Vykonanie v Pascale:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 procedure QSort ( prvy, posledny: integer ) ; var L, R, c, X: celé číslo; začať ako prvý< 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 až R: = R-1; ak 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(prvý, posledný: celé číslo); var L, R, c, X: celé číslo; začať ako prvý< 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 až R:= R-1; ak 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.

    Úloha 14:
    Vyplňte pole 10 prvkov náhodnými číslami v rozsahu [-50..50] a zoraďte ho pomocou algoritmu rýchleho triedenia.

    1 metóda (výplň klávesnice. Dynamicvstupúdajov)

    M:pole celého čísla;

    Pre I:=1 až 10 Začnite

    Write("Zadajte ",I," hodnota ");

    2 Metóda (pomocou generátora náhodných čísel)

    M: pole celých čísel;

    Pre I:=1 až 25 Začnite

    M[I]:=náhodné(50);

    3 Metóda (statické zadávanie údajov)

    M: pole celých čísel = (31,28,31,30,31,30,31,31,30,31,30,31);

    Pre I:=1 až 9 urob

    1.4 Príklady riešenia problémov

    1. Algoritmy na vyhľadávanie a priraďovanie hodnôt prvkom poľa

    1. Vytvorte program na spracovanie poľa dimenzie n vyplneného celými číslami zadanými z klávesnice. Vytlačte indexy a hodnoty prvkov kladného poľa.

    A:POLIE CELÉHO ČÍSLA;

    (Vyplnenie poľa)

    PRE JA:=1 AŽ N DO Začať

    Write("Enter ",I," prvok poľa "); ReadLn(A[I]);

    (Spracovanie prvkov poľa)

    PRE JA:=1 AŽ N DO

    IF A[I]>0 THEN WriteLn("Pozitívny prvok = ",A[I]," jeho index = ",I);

    2. Vytvorte program na výpočet a tlač hodnôt funkcie Y=sin(x-1)/2x. Nastavte hodnoty argumentov v poli X pozostávajúcom zo 6 prvkov. Zapíšte hodnoty funkcií do poľa Y.

    X,Y:ARRAY OF REAL;

    PRE JA:=1 AŽ 6 ZAČNITE

    Write("Zadajte ",I," hodnota argumentu "); ReadLn(X[I]);

    PRE JA:=1 AŽ 6 ZAČNITE

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

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

    3. Dané pole M pozostávajúce z 30 prvkov. Prvky poľa sú ľubovoľné celé čísla. Zobrazte hodnotu každého piateho a kladného prvku. Výstup zadaných prvkov do reťazca.

    M:ARRAY INTEGER;

    ClrScr; Randomizovať;

    WriteLn("Hodnoty prvkov poľa");

    PRE JA:=1 AŽ 30 ZAČNITE

    M[I]: = náhodne (20)-4; Napíšte(M[I]:3);

    WriteLn("Hodnoty každého piateho a kladného prvku poľa");

    Kým<=30 DO Begin

    AK M[I] > 0 TAK Zapíš(M[I]:3);

    Príklady nezávislých riešení:

      Dané jednorozmerné pole s rozmerom 10, vyplnené celými číslami zadanými z klávesnice a hodnotou N. Nahraďte záporné prvky N. Zobrazte upravené pole v jednom riadku.

      Dané jednorozmerné pole dimenzie N, vyplnené náhodnými číslami v rozsahu od -15 do 20. Zobrazte hodnoty prvkov poľa, ktorých absolútna hodnota je >10.

      Dané jednorozmerné pole dimenzie N, vyplnené náhodnými číslami. Odmocni každý tretí prvok poľa, ak je prvok záporný. Zobrazte upravené pole na obrazovke.

      Vytvorte program na výpočet a tlač hodnôt funkcie Y=(sinx+1)cos4x. Nastavte hodnoty argumentov v poli X pozostávajúcom z 10 prvkov. Zapíšte hodnoty funkcií do poľa Y.

      Z prvkov poľa A pozostávajúceho z 25 prvkov vytvorte pole D rovnakej dimenzie podľa pravidla: prvých 10 prvkov nájdeme podľa vzorca Di=Ai+i, zvyšok - podľa vzorca Di=Ai -i.

    Články k téme