Různé způsoby naplnění a výstupu pole. 2D pole

Pole je datová struktura reprezentovaná jako skupina buněk stejného typu sjednocených pod jedním jediným názvem. Pole se používají ke zpracování velkého množství dat stejného typu. Název pole je , co jsou ukazatele, vysvětlím trochu později. Jednotlivá datová buňka pole se nazývá prvek pole. Prvky pole mohou být libovolný typ dat. Pole mohou mít jeden nebo více než jeden rozměr. V závislosti na počtu dimenzí se pole dělí na jednorozměrná pole, dvourozměrná pole, trojrozměrná pole a tak dále až po n-rozměrné pole. Nejčastěji se v programování používají jednorozměrná a dvourozměrná pole, proto budeme uvažovat pouze tato pole.

Jednorozměrná pole v C++

Jednorozměrné pole je pole s jedním parametrem charakterizujícím počet prvků jednorozměrného pole. Ve skutečnosti je jednorozměrné pole pole, které může mít pouze jeden řádek a n-té množství sloupců. Sloupce v jednorozměrném poli jsou prvky pole. Obrázek 1 ukazuje strukturu celočíselného jednorozměrného pole A. Velikost tohoto pole je 16 buněk.

Obrázek 1 - Pole v C++

Všimněte si, že maximální index jednorozměrného pole A je 15, ale velikost pole je 16 buněk, protože číslování buněk pole vždy začíná od 0. Index buňky je nezáporné celé číslo, které lze použít pro přístup ke každé buňce pole a provádění jakýchkoli akcí s ní (buňka ).

//syntaxe pro deklaraci jednorozměrného pole v C++: /*datový typ*/ /*jméno jednorozměrného pole*/; //příklad deklarace jednorozměrného pole znázorněného na obrázku 1: int a;

kde, int je celé číslo;

A je název jednorozměrného pole;
16 je velikost jednorozměrného pole, 16 buněk.

Vždy hned za názvem pole jsou hranaté závorky určující velikost jednorozměrného pole, tím se pole odlišuje od všech ostatních proměnných.

//další způsob, jak deklarovat jednorozměrná pole int mas, a;

Dvě jednorozměrná pole mas a a jsou deklarována s velikostí 10 a 16, v tomto pořadí. Navíc při tomto způsobu deklarace budou mít všechna pole stejný datový typ, v našem případě int .

// pole lze inicializovat při deklaraci: int a = ( 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 ); // inicializace jednorozměrného pole

Inicializace jednorozměrného pole se provádí ve složených závorkách za znaménkem rovná se, každý prvek pole je oddělen od předchozího čárkou.

Int a=(5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15); // inicializace pole bez určení jeho velikosti.

V tento případ překladač sám určí velikost jednorozměrného pole. Velikost pole lze vynechat pouze při jeho inicializaci; při normální deklaraci pole musíte zadat velikost pole. Budeme se rozvíjet jednoduchý program zpracovat jednorozměrné pole.

// array.cpp: definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include << "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } system("pause"); return 0; }

// kód Kód::Blocks

// Kód Dev-C++

// array.cpp: definuje vstupní bod pro konzolovou aplikaci. #zahrnout pomocí jmenného prostoru std; int main(int argc, char* argv) ( cout<< "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } return 0; }

V řádky 10-11 deklarované a inicializované celočíselné jednorozměrné pole s názvem pole1 , jehož velikost se rovná 16 buňkám, to znamená, že do takového pole lze uložit 16 čísel. Jakékoli zpracování pole je možné pouze ve spojení se smyčkami. Jaký cyklus pro zpracování pole zvolíte, je na vás. Pro tento úkol se ale hodí nejlépe. K odkazování na prvky jednorozměrného pole pole1 použijeme čítač proměnné čítače. V podmínce pro pokračování cyklu for je přísné znaménko nerovnosti, protože v jednorozměrném poli pole1 není žádný šestnáctý index. A protože číslování buněk začíná od nuly, v poli je prvků 16. V těle cyklu for vypíše příkaz cout prvky jednorozměrného pole (viz obrázek 2).

Zpracování massiva indexů prvek pole1 pole1 5 pole1 -12 pole1 -12 pole1 9 pole1 10 pole1 0 pole1 -9 pole1 -12 pole1 -1 pole1 23 pole1 65 pole1 64 pole1 11 pole1 43 pole1 39 pole1 -15 Pokračujte stisknutím libovolné klávesy. . .

Obrázek 2 - Pole v C++

Pojďme vyvinout další program pro zpracování jednorozměrného pole v C++. Program musí postupně přečíst deset zadaných čísel z klávesnice. Sečtěte všechna zadaná čísla, výsledek zobrazte na obrazovce.

// array_sum.cpp: definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include << "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >> << "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; system("pause"); return 0; }

// kód Kód::Blocks

// Kód Dev-C++

// array_sum.cpp: definuje vstupní bod pro konzolovou aplikaci. #zahrnout pomocí jmenného prostoru std; int main(int argc, char* argv) ( int pole1; // deklarace celočíselného pole cout<< "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >>pole1; // přečte zadaná čísla z klávesnice cout<< "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; return 0; }

Před zpracováním pole musí být deklarováno a velikost jednorozměrného pole je 10, jak je stanoveno podmínkou problému. V součtové proměnné budeme akumulovat součet prvků jednorozměrného pole. První cyklus for vyplní deklarované jednorozměrné pole čísly zadanými z klávesnice, řádky 12-13. Proměnná čítače se používá k sekvenčnímu přístupu k prvkům jednorozměrného pole pole1, počínaje indexem 0 a až 9. včetně. Druhá smyčka for zobrazuje prvky pole, řádky 15-16. Třetí cyklus for sekvenčně čte prvky jednorozměrného pole a sečte je, součet je akumulován v proměnné součtu, řádky 17-18. Podívejte se na výsledek programu na obrázku 3.

Zadejte elementi massiva: 0 1 2 3 4 5 6 7 8 9 pole1 = (0 1 2 3 4 5 6 7 8 9 ) součet = 45 Pokračujte stisknutím libovolné klávesy. . .

Obrázek 3 - Pole v C++

Nejprve bylo postupně zadáno všech 10 čísel, poté se zobrazilo jednorozměrné pole a vytiskl se součet čísel pole.

2D pole v C++

Dosud jsme uvažovali o jednorozměrných polích, která nelze vždy omezit. Řekněme, že potřebujete zpracovat nějaká data z tabulky. Tabulka má dvě vlastnosti: počet řádků a počet sloupců. Ve dvourozměrném poli jsou kromě počtu prvků pole také takové charakteristiky, jako je počet řádků a počet sloupců dvourozměrného pole. To znamená, že vizuálně je dvourozměrné pole běžná tabulka s řádky a sloupci. Ve skutečnosti je dvourozměrné pole jednorozměrné pole jednorozměrných polí. Struktura dvourozměrného pole s názvem a o velikosti m x n je znázorněna níže (viz obrázek 4).

Obrázek 4 - Pole v C++

kde m je počet řádků dvourozměrného pole;
n je počet sloupců dvourozměrného pole;
m * n je počet prvků pole.

// syntaxe pro deklaraci dvourozměrného pole /*datový typ*/ /*název pole*/;

V deklaraci dvourozměrného pole, stejně jako v deklaraci jednorozměrného pole, je první věcí, kterou musíte udělat, zadat:

  • datový typ;
  • název pole.

Poté je počet řádků dvourozměrného pole uveden v prvních hranatých závorkách, počet sloupců dvourozměrného pole je uveden v druhých hranatých závorkách. Dvourozměrné pole se vizuálně liší od jednorozměrného pole druhým párem hranatých závorek. Zvažte příklad deklarace dvourozměrného pole. Řekněme, že potřebujeme deklarovat dvourozměrné pole s počtem prvků rovným 15. V tomto případě může mít dvourozměrné pole tři řádky a pět sloupců nebo pět řádků a tři sloupce.

// příklad deklarace dvourozměrného pole: int a;

  • a - celočíselný název pole
  • číslo v prvních hranatých závorkách udává počet řádků ve dvourozměrném poli, v tomto případě 5;
  • číslo v druhých hranatých závorkách udává počet sloupců ve dvourozměrném poli, v tomto případě 3.

// inicializace dvourozměrného pole: int a = ( (4, 7, 8), (9, 66, -1), (5, -5, 0), (3, -3, 30), ( 1, 1, jedna));

Toto pole má 5 řádků, 3 sloupce. za přiřazovacím znakem jsou umístěny obecné složené závorky, uvnitř kterých je tolik párů složených závorek, kolik má být řádků ve dvourozměrném poli, a tyto závorky jsou odděleny čárkami. Do každé dvojice složených závorek napište prvky dvourozměrného pole oddělené čárkami. Všechny složené závorky musí mít stejný počet prvků. Protože je v poli pět řetězců, existuje také pět vnitřních párů závorek. Tři prvky jsou zapsány ve vnitřních závorkách, protože počet sloupců je tři. Graficky bude naše pole vypadat jako dvourozměrná tabulka (viz obrázek 5).

Obrázek 5 - Pole v C++

V každé buňce dvourozměrného pole A je zobrazena hodnota, v pravém dolním rohu je zobrazena adresa dané buňky. Adresa buňky dvourozměrného pole je název pole, číslo řádku a číslo sloupce.

Pojďme si vyvinout jednoduchý program pro zpracování dvourozměrného pole, kterému se říká „Labyrint“. Bludiště musí být postaveno na základě dvourozměrného pole. Velikost bludiště je na vás.

// array2.cpp: definuje vstupní bod pro konzolovou aplikaci. #include "stdafx.h" #include < 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) jinak cout<< " "; // вывести два пробела cout << endl; } system("pause"); return 0; }

// kód Kód::Blocks

// Kód Dev-C++

// array2.cpp: definuje vstupní bod pro konzolovou aplikaci. #zahrnout pomocí jmenného prostoru std; int main(int argc, char* argv) ( // 1-podmíněně "stěny bludiště" // 2-"správná cesta, výstup z bludiště" // 0-"falešná cesta" int mas = ( (1, 2,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,), // inicializace dvourozměrného pole ( 1,2,1,0 ,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,), (1,2,1,1 ,0,1,0, 1,2,1,2,2,2,2,1,0,1,1,0,1, (1,2,2,2,2,2,2,1, 2,1,1 ,1,1,2,1,0,0,1,0,1,), (1,1,1,1,1,1,2,1,2,1,0,0 ,1,2, 1,1,0,1,0,1,), (1,0,0,1,0,0,2,2,2,1,1,0,0,2,0, 0,0,1 ,0,1,), (1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1,0 ,1,), (1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,), (1 ,1,1, 1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1, (1,1,0,0,0, 1,0 ,0,1,1,2,1,1,1,1,0,0,0,0,1, (1,0,0,1,0,0,0,0,0,1 , 2,2,2,2,1,1,1,1,0,1,), (1,1,1,1,1,1,1,1,1,1,1,1,1, 2 ,1,0,0,0,0,1, (1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,1, 1 ,1,1,), (1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,), (1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,), (1,2,1 , 1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,), (1,2,1,2,2,2, 1 ,2,1,2,2,2,1,1,1,1,1,1,1,1,), (1,2,1,2,1,2,1,2,1,0 , 1,2,2,2,2,2,2,2,2,1,), (1,2,1,2,1,2,1 ,2,1,0,1,1,1,1,1,1,1,1,2,1,), (1,2,1,2,1,2,1,2,1,0, 0,0,0,0,0,0,0,0,2,1, (1,2,1,2,1,2,2,2,1,0,1,1,1,1 ,1 ,1,0,1,2,1,), (1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0, 1, 2,1,), (1,2,1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,) , ( 1,2,1,1,2,1,1,0,0,0,0,0,1,0,1,0,0,1,2,1,), (1,2,1 ,1 ,2,1,0,0,1,1,1,1,1,1,1,1,1,1,2,1,), (1,2,1,1,2,1, 1, 0,1,2,2,2,2,2,2,2,2,2,2,1, (1,2,1,1,2,1,0,0,1,2 ,1,1 ,1,1,1,1,1,1,1,1,), (1,2,1,1,2,1,0,1,1,2,1,1,1, 1,1, 1,1,1,2,2,), (1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2 ,2,2 ,1,), (1,2,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1, ), (1 ,2,1,1,2,1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,), (1,2, 2,2, 2,1,0,1,1,2,2,2,2,0,0,1,0,0,0,1, (1,1,1,1,1,1 ,1,1,1 ,1,1,1,1,1,1,1,1,1,1,1,)); // dvě smyčky - vnitřní a vnější, které přistupují ke každému prvku pole for (int i = 0; i< 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) jinak cout<< " "; // вывести два пробела cout << endl; } return 0; }

Správná a nepravdivá cesta by mohla být označena stejným číslem, například nula, ale pro názornost je správná cesta označena číslem 2. Pole bylo inicializováno ručně, pouze pro zjednodušení programu. Protože program zpracovává dvourozměrné pole, jsou pro přepínání mezi prvky dvourozměrného pole potřeba dvě smyčky. První smyčka for přepíná mezi řádky dvourozměrného pole. Protože ve dvourozměrném poli je 33 řádků, proměnná čítače i se zvýší z 0 na 33, řádek 46. Uvnitř první smyčky je smyčka for, která cyklicky prochází prvky řádku dvourozměrného pole. V těle druhé smyčky for je uvnitř provedena operace unárního převodu datového typu - static_cast<>() , který vytiskne znak , na čísle 176. Operace převodu datového typu je duplikována, aby se zvětšila šířka bludiště. Výsledek programu (viz obrázek 6).

Obrázek 6 - Pole v C++

Sekce: Informatika

cíle:

  1. Seznámit studenty s možností vyplňování a zpracování pole.
  2. Vytvořte grafické rozhraní pro projekt pro vyplnění pole a výpočet součtu prvků v daném poli.
  3. Rozvíjejte kognitivní zájem o předmět
  4. Vypěstujte si zodpovědný přístup k učení

BĚHEM lekcí

1. Aktualizace lekce

Organizace času

Frontální průzkum na předchozí téma „Koncept pole. Jednorozměrné pole”

2. Formování dovedností a schopností

Vysvětlení nového materiálu

Prohlášení pole

Pole se deklaruje stejně jako deklarace proměnné, pouze je nutné zadat rozsah změny indexu. Například jednorozměrné celočíselné pole obsahující 10 prvků je deklarováno následovně:

A: pole celých čísel;

Základní úlohy při práci s poli

1. Vytvoření (vyplnění) pole

1.1. podle vzorců Pro i:=1 až 10 udělejte a[i]:= i*i;

1.2. generovat náhodně Pro i:=1 až 10 proveďte a[i]:= random(20):

Vestavěná funkce RANDOM(MAX) vrací náhodné celé číslo rovnoměrně rozložené v rozsahu od 0 do MAX - 1 (MAX je inverzní parametr)

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

2. Seřadit pole (vzestupně, sestupně);

3. Vyhledejte prvky v poli;

4. Výběr prvků z pole podle podmínky;

Náhodné vyplnění pole.

Chcete-li začít pracovat s polem, musí být vyplněno, tzn. přiřadit prvkům pole určité hodnoty. Chcete-li vygenerovat posloupnost náhodných čísel, použijte funkci Random(100). Když program spustíte, tato funkce zobrazí pseudonáhodnou sekvenci celých čísel v rozsahu od 0 do 100.

Pro generování posloupností náhodných čísel, která se od sebe liší, se doporučuje použít operátor Randomize

Akce s jednorozměrnými poli

1. Výpočet součtu prvků

Pro I:= 1 až 10 Proveďte s:=s+ a[i]; (obvyklá akumulace součtu v s)

2. Výpočet produktu

Pro I:= 1 až 10 Do p:=p* a[i]; (obvyklá akumulace produktu v p)

3. Vyhledejte prvek s danou hodnotou

3. Poznámka měnící se dovednosti v praxi

Projekt „Součet prvků v poli“. Pojďme vyvinout projekt „Součet prvků v poli“, který naplní pole náhodnými čísly a vypočítá součet těchto čísel

Nejprve si vytvoříme proceduru vyplňování pole.

1. Spusťte programovací systém Delphi.

2. Práce na projektu začíná vytvořením grafického rozhraní v okně Tvůrce formulářů ovládací prvky jsou umístěny na formuláři. Pro vytvoření grafického rozhraní projektu umístíme na formulář dvě textová pole pro zobrazení číselných údajů (jedno pro vyplnění pole, druhé pro zobrazení množství) a dvě tlačítka pro implementaci procedur událostí: vyplnění pole a součtu

3. Použití Panely nástrojů umístěte textové pole Editl a příkazové tlačítko Buttonl do formuláře Forml

Dalším krokem je kódování procedur událostí. Poklepáním na tlačítko, pro které chcete vytvořit kód programu, se zobrazí okno Programový kód s prázdným útržkem procedury události.

4. Dvakrát klikněte na tlačítko Buttonl, objeví se útržek procedury události TForml.ButtonlClick: Declare an array A a popis proměnných JE v sekci deklarace var

A:pole celého čísla;

procedure TForm1.Button1Click(Sender: TObject);

Pro I:= 1 až 10 Udělejte

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

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

5. Uložit projekt jako

6. Kompilace projektu (Project - Compile)

Nyní vytvoříme postup pro výpočet součtu prvků ve vyplněném poli

Přes Panely nástrojů str Umístíme tlačítko Button2 a textové pole Edit2 na formulář Forml. Poklepáním na tlačítko Button2, pro které chcete vytvořit kód programu, se otevře okno Programový kód s prázdným útržkem procedury události.

procedure TForm1.Button2Click(Sender: TObject);

Pro I:= 1 až 10 Udělejte

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

Uložení projektu celého projektu (Save Project).

Zkompilujeme projekt (stiskem klávesy F9).

Klikněte na tlačítka Vyplnit pole a Součet.

V textovém poli se zobrazí výsledky součtů pro různé možnosti plnění.

4. Shrnutí

5. Domácí úkol: Vytvořte projekt „Produkt prvků pole“, který umožňuje naplnění pole náhodnými čísly a možnost zobrazit součin všech prvků v poli v textovém poli.

Jednorozměrná pole. Vytvoření pole a zobrazení jeho prvků

Definice pojmu

Pole je kolekce dat stejného typu se společným názvem pro všechny prvky.

Prvky pole jsou očíslovány a ke každému z nich lze přistupovat pomocí čísla. Počty prvků pole se jinak nazývají indexy a samotné prvky pole se nazývají indexované proměnné.

A[n]

- 0. 5

-5.2

0.6

Vektor (lineární nebo jednorozměrné pole) je příklad pole, kde jsou prvky číslovány stejným indexem.

  • Tak jako čísla (index) prvek pole, obecně se používá výraz ordinální typ(nejčastěji je to celočíselná konstanta nebo proměnná celočíselného typu: celé číslo, slovo, byte nebo zkratka)
  • Při přístupu k prvku pole je index uveden v hranatých závorkách. Například a, hmotnost.
  • Prvky pole se zpracují, když se změní indexy prvků. Například při použití výrazu jsou následující proměnné užitečné pro procházení prvků pole:
    • a[i] - všechny prvky;
    • a - prvky na sudých místech;
    • a - prvky na lichých místech

Popis pole

  • Definování proměnné jako pole bez předchozího deklarování typu pole
vara,b,c: pole z celé číslo; var s: pole celého čísla; k: pole celého čísla;

Poznámka

    • Popis pole je vyžadován kompilátorem pro alokaci paměti pro jeho prvky.
    • Proměnná je definována jako pole pomocí servisního slova pole(pole). Hranaté závorky označují rozsah, tj. dolní a horní hranici hodnoty indexu pole. Hodnota horní hranice nemůže být nižší než dolní hranice.
    • Zde jsou proměnné s ak považovány za různé typy. Pro zajištění kompatibility je nutné aplikovat deklaraci proměnných prostřednictvím předběžné deklarace typu.
    • Pokud jsou typy polí identické, lze v programu přiřadit jedno pole jinému. V tomto případě budou hodnoty všech proměnných jednoho pole přiřazeny odpovídajícím prvkům druhého pole.
    • Relační operace nejsou na polích definovány. Můžete porovnávat pouze dvě pole prvek po prvku.
  • Předběžný popis typu pole
konst n=5; typ mas = pole celého čísla; var a: mas;

Poznámka

    • K prvkům pole se bude přistupovat takto: a, a, a, a, a (tj. pole obsahuje pět prvků).
    • Použití konstant(v tomto příkladu n) při popisu pole je výhodnější, protože v případě změny velikosti pole nebude nutné provádět opravy v celém textu programu.
  • Určení pole jako typované konstanty
konst X: pole celého čísla = (1, 2, 3, 4, 5, 6);

Poznámka

    • V tomto příkladu není pouze alokována paměť pro pole, ale buňky jsou vyplněny daty.
    • Prvky pole mohou být změna v průběhu programu (stejně jako všechny typované konstanty).

Vyplnění pole daty

§ K naplnění pole dat (a jejich výstup), nejčastěji se používá smyčka s parametrem pro

§ Chcete-li vyplnit pole náhodnými čísly, použijte funkci náhodný a postup randomizovat(inicializace generátoru náhodných čísel). Formát záznamu je: náhodné (B - A) + A, kde A a B jsou převzaty z intervalu :4);

Příklad programu pro vstup a výstup pole

Formulace problému. Získejte součet prvků pole 10 celočíselných prvků. Prvky pole se zadávají z klávesnice.

program pole2; var součet: celé číslo; já: byte; A: pole slova; začít součet:= 0; proi:= 0 na 9 dělat začít napsat("A[", já," ] = "); readln(a[i]); součet:= součet + a[i] konec; napsáno("suma =",součet) konec.

Příklad programu pro práci s prvky pole

Formulace problému. Získejte aritmetický průměr prvků pole. Prvky pole jsou vyplněny náhodnými čísly.

program pole3; konst n=100; var sar: nemovitý; součet: celé číslo; já: byte; A: pole celého čísla; začít součet:= 0; randomizovat; proi:= 0 na n dělat začít a[i] := náhodný(sto); součet:= součet + a[i] konec; sar:=součet/n; napsáno("sar=", sar) konec.

Lekce ze seriálu: " Programovací jazyk Pascal»

Jakmile je pole deklarováno, můžete s ním pracovat. Například přiřazování hodnot prvkům pole a obecně s nimi zachází jako s běžnými proměnnými. Chcete-li získat přístup ke konkrétnímu prvku, musíte zadat identifikátor pole (jméno) a index prvku v hranatých závorkách.

Například zápis Mas, A umožňuje přístup k druhému prvku pole MAS a desátému prvku pole A. Při práci s dvourozměrným polem jsou označeny dva indexy, u n-rozměrného pole n indexy.

Například položka Matr zpřístupňuje pro zpracování hodnotu prvku umístěného ve čtvrtém řádku čtvrtého sloupce pole M.

Prvky indexovaného pole se nazývají indexované proměnné. Je nemožné jít za hranice pole. To znamená, že pokud je v poli Mas pět prvků, pak přístup k šestému nebo osmému prvku povede k chybě.

Zvažte typické operace, které vznikají při práci s jednorozměrnými poli.

Vyplnění jednorozměrného pole hodnotami

Vyplnění a výstup pole lze provést pouze prvek po prvku, to znamená, že nejprve můžete přiřadit hodnotu prvnímu prvku, poté druhému atd., Totéž se zobrazením na obrazovce - zobrazíme první, druhý, třetí a tak až do posledního.

Pascal nemá prostředky pro vstup a výstup prvků pole najednou, proto se vstup a hodnoty provádějí prvek po prvku. Hodnoty lze přiřadit prvku pole pomocí operátoru přiřazení nebo zadávat z klávesnice pomocí příkazů Read nebo Readln. Je velmi výhodné iterovat všechny prvky pole ve smyčce for.

Způsoby, jak vyplnit jednorozměrná pole:

  1. Zadání hodnoty z klávesnice.
  2. Nastavení hodnot v příkazu přiřazení pomocí generátoru náhodných čísel. Tato metoda je pohodlnější, když je v poli mnoho prvků (zadání jejich hodnot z klávesnice trvá dlouho).
  3. Nastavení hodnot podle vzorce.
  4. Zadávání prvků pole ze souboru

1. Zadávání hodnot prvků pole z klávesnice. Vzhledem k tomu, že byl použit příkaz Readln, bude každá hodnota zadána na nový řádek.

2. Vyplnění polečísla vygenerovaná náhodně z intervalu . Připojíme generátor náhodných čísel - náhodnou funkci.

3. plnicí pole podle vzorce. Každému prvku pole je přiřazena hodnota vypočítaná vzorcem. Pokud je každý prvek pole roven trojnásobku hodnoty jeho sériového čísla (indexu), bude postup vypadat takto:

4. Čtení čísel ze souboru. Musíte si předem vytvořit textový soubor, do kterého zapište několik řádků, z nichž každý obsahuje 30 čísel.

Zobrazení hodnot prvků pole na obrazovce

Výstup hodnoty prvků pole na obrazovce se provádí, stejně jako vstup, prvek po prvku ve smyčce. Pro výstup použijeme příkazy Write nebo Writeln. Jako vstupní parametry předáme proceduře nejen pole, ale také počet prvků, které se mají zobrazit, počínaje prvním (budeme to potřebovat, když budeme prvky v poli odebírat a přidávat).

Příklad 1 Vyplňte pole z klávesnice a zobrazte jej na obrazovce.

Řešení.

Program použije dvě procedury: proceduru Init1 (vyplnění pole z klávesnice) a proceduru Print (výpis pole na obrazovku).

Příklad 2 Vyplňte pole z textového souboru a zobrazte jej na obrazovce. V textovém souboru je několik řádků, každý řádek obsahuje 30 čísel.

Naučili jste se, jak vyplnit jednorozměrné pole a zobrazit je na obrazovce.

V další lekci se budeme dále seznamovat s algoritmy pro zpracování jednorozměrných polí.

Prvky jednorozměrného pole můžeme naplnit hodnotami: zadáním hodnot z klávesnice; náhodně; podle vzorce. Způsoby určení jednorozměrných polí Smyčky se používají ke vstupu a výstupu číselných hodnot v poli. Procedura přebírá referenční parametr pole Mssiv zadaného typu a celočíselnou proměnnou n odpovědnou za počet buněk pole, které mají být vyplněny. Náhodné vytvoření jednorozměrného pole.


Sdílejte práci na sociálních sítích

Pokud by vám tato práce nevyhovovala, dole na stránce je seznam podobných prací. Můžete také použít tlačítko vyhledávání


Plnicí.

Prvky jednorozměrného pole můžeme naplnit hodnotami:

Zadáním hodnot z klávesnice;

Náhodně;

Podle vzorce.

Způsoby definování jednorozměrných polí

Smyčky se používají pro vstup a výstup číselných hodnot pole.

Zvažte procedury, které by vytvořily jednorozměrné pole dvěma způsoby

1) náhodně,

2) zadávání prvků z klávesnice

Předpokládejme, že budeme pracovat s polem celých čísel. Nechť nám stačí mít maximální počet prvků rovný 50. Procedura bere parametr odkazem na pole Massiv daného typu a celočíselnou proměnnou n , který je zodpovědný za počet vyplněných buněk pole. Potřebujeme také lokální proměnnou i , který bude provádět funkce parametru smyčky a použije se k určení čísla, které určuje umístění prvku v poli.

1. Náhodná tvorba jednorozměrného pole. Nastavte hodnotu každého prvku na výsledek náhodné funkce Random(10). Naplnění pole bude specifikováno cyklickým operátorem, v jehož těle je funkcí Random(10) vypočítáno náhodné číslo, po kterém je tato hodnota přiřazena další i -tý prvek pole.

Vložit ProcedureMas1(Var massiv:mas; n:integer);

I: celé číslo

Začít

randomizovat;

Pro i:=1 až n udělejte

Massiv[i] := Náhodně(10);

Konec ;

2. Vytvoření jednorozměrného pole zadáním prvků z klávesnice.

Vložit ProcedureMas2(Var massiv:mas; n:integer);

I: celé číslo

Začít

Pro i:=1 až n udělejte

Začít

napište("Enter", tj ,,tý prvek pole");

readln(pole[i]);

konec;

konec;

Pole se zobrazí na obrazovce následovně:

ProcedurePrintMas(massiv:mas; n:integer);

I: celé číslo

Začít

Pro i:=1 až n

Write(Array[i]:5);

konec.

Musíme mít na paměti, že ve všech třech případech se bez organizace cyklu neobejdeme.

Nalezení maximálního (minimálního) prvku pole.

Řekněme, že máme jednorozměrné pole:

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

Pojďme se zamyslet nad tím, jaké operace je třeba provést, pokud chcete najít maximum prvku. Přirozeně, srovnávací operace Nemyslíme na to, že vždy porovnáváme pár, „probíhající“ očima všech prvků pole. Vyhledávací algoritmus pro maximální (minimální) prvek sestrojíme tak, abychom porovnávali dvojici čísel, přičemž porovnávací akci zopakujeme požadovaný početkrát.

Musíme si tedy odpovědět na dvě otázky:

1) jaká čísla jsou zahrnuta v páru, který tvoří operaci vztahu;

2) kolikrát je nutné opakovat operaci porovnání. Představme si další proměnnou s názvem max. Bude to jedno z čísel, druhé číslo je dalším prvkem pole. Aby bylo možné provést první porovnávací operaci, je nutné přiřadit nějakou počáteční hodnotu proměnné max. Zde mohou být dvě možnosti:

1) přiřadit první prvek pole proměnné max;

2) přiřadit číslo, o kterém je známo, že je menší než všechny prvky pole.

Pole obsahuje informace o počtu studentů v každé skupině prvního kurzu. Určete skupinu s maximálním počtem studentů za předpokladu, že číslo skupiny odpovídá pořadovému číslu v poli (předpokládáme, že taková skupina je jedinečná).

Jinými slovy, musíme najít maximální prvek a jeho počet.

program max_num;

typ mas=array[ 1.. 10] bajtu;

var a: mas;

num, i: byte;

max: byte;

začít

(vyplnit blok)

pro i:=l až 7 do

readln(a[i]);

(hledejte maximum a jeho počet)

max:==0;

(zadejte nejmenší číslo pro toto pole)

pro i:=l až n dělat

pokud a[i]>max pak začněte

num:=i;

max:=a[i]

konec;

writeln("maximální počet studentů=",max);

writeln("číslo skupiny=",num);

konec.

3) Najděte minimální prvek mezi sudými prvky pole.

Vysvětlení: první prvek pole nemůžeme přiřadit proměnné min, protože může to být liché. Proto musíme pro tento datový typ vybrat nějaké velmi velké číslo.

Pokud prohlásíme prvky celočíselného pole, tedy tak číslo bude +32767.

program min_sudý;

a:array of integer;

i: celé číslo;

min:integer;

začít

pro i:=l až 10 do beein

writeln("Zadejte další prvek pole");

readln(a[i]);

konec;

min:=32767;

pro i:=l až 10 do

pokud (a[i]

if min=32767 then writeln ("v poli nejsou žádné sudé prvky") else writein ("minimální prvek mezi sudými prvky pole=",min)

konec.

Poznámka: musíte zkontrolovat, zda se hodnota proměnné min nezměnila, protože dokonce ani prvky nemusí existovat.

Další související díla, která by vás mohla zajímat.vshm>

8729. DEFINICE A ZPŮSOBY OZNAČENÍ KONEČNÉHO AUTOMATU. PROBLÉM SYNTÉZY. ZÁKLADNÍ AUTOMATY 189,1 kB
Definice a metody specifikace konečného automatu. DEFINICE A ZPŮSOBY OZNAČENÍ KONEČNÉHO AUTOMATU. Definice konečného automatu. Způsoby nastavení konečného automatu.
3552. Samostatný domácí úkol z chemie. Domácí úkol z chemie 475,47 kB
Pokyny obsahují individuální domácí úkoly na následující témata: třídy anorganických sloučenin, chemický ekvivalent, atomová struktura, chemická vazba, chemická termodynamika, chemická kinetika, koncentrace roztoků, iontové reakce a hydrolýza solí, redoxní reakce, elektrochemické procesy, vlastnosti kovy.
12127. Strategické minerály (PGM, Ni, Co, Cr, Cu) paleoproterozoických vrstevnatých mafických masivů na severovýchodě Fennoskandinávského štítu 17,77 kB
Stručný popis vývoje. Výhody vývoje ve srovnání s analogy. Důležitým aspektem vývoje je schopnost minimalizovat negativní technogenní dopady na životní prostředí v důsledku prudkého omezení rozsáhlého používání těžké těžební a vrtné techniky ve fázích rekognoskace a prospekce. Oblasti komerčního využití zástavby.
9554. MATEMATIKA. METODICKÁ POMŮCKA A ÚKOLY 268,34 kB
Akademický obor "Matematika" je určen k realizaci požadavků státu na minimální obsah a úroveň přípravy absolventů středního odborného vzdělání.
18129. Tvůrčí úkoly jako prostředek rozvoje fantazie 91,06 kB
Tyto studie odrážejí různorodost vědeckých myšlenek a praktických přístupů k organizaci tvůrčí činnosti žáků ve vzdělávacím procesu, nicméně hledisko cíleného zajišťování tvůrčích úkolů mladším žákům v procesu učení jako prostředku rozvoje fantazie se zatím neprosadilo. dostatečně nastudován. Na základě zjištěných rozporů v rozboru filozoficko-psychologické a pedagogické literatury i v důsledku studia zkušeností základní školy byl formulován výzkumný problém, který spočívá v teoretické ...
19517. Vypracování zadání pro automatizaci prodejny Bukva 155,63 kB
Kompetentní prodej zboží na základě požadavků klienta, tedy konzultace specialistů. Proto je nutné, aby obchod dostával informace o stavu trhu a poskytoval trhu informace o dostupném zboží a službách. Interakce s médii spočívá v poskytování údajů obchodu o jeho zboží a službách - následně se z těchto údajů vytvoří reklama na salon notebooků, který je vnímán trhem zboží a služeb. Rozšíření druhů zboží Výhody obchodu: Bohaté zkušenosti ...
3548. Domácí úkoly z chemie a pokyny k jejich realizaci 229,61 kB
Tyto domácí úkoly jsou určeny pro systematickou práci studentů všech specializací na předmětu chemie v souladu s učebním plánem. Plnění úkolů přispívá k rozvoji dovedností žáků samostatné práce.
19091. ANALÝZA SPECIFIKACE A HLAVNÍCH TECHNICKÝCH POŽADAVKŮ NA VYPRACOVANÝ NÁVRH 911,42 kB
Serverovna (serverovna nebo jen serverovna) - vyhrazená technologická místnost se speciálně vytvořenými a udržovanými podmínkami pro umístění a provoz serverového a telekomunikačního zařízení. Přípustná teplota v serverovně musí být
1763. Implementace úlohy jako třídy pomocí kontejneru standardní knihovny šablon C++ (STL) k ukládání informací 190,6 kB
Syntaxe C++ je zděděna z jazyka C. Jedním z principů návrhu bylo zachování kompatibility s C. C++ však není striktně nadmnožinou C; sada programů, které lze stejně úspěšně zkompilovat jako kompilátory C...
10124. Vypracování zadání pro poskytování reklamních služeb, úklidové služby, ostraha, personální zajištění 31,88 kB
Vývoj zadání pro reklamní služby: právní úprava reklamních služeb. Vývoj zadání pro úklidové služby: základní pojmy a typy služeb. Vývoj zadání pro bezpečnostní služby: právní úprava. Vývoj zadání pro personální služby: základní pojmy.