Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
УРОК №7
РАБОТА С РАЗЛИЧНЫМИ ВИДАМИ МАССИВОВ.
Мы говорили, что массив имеет следующие атрибуты имя массива размер массива и тип массива
Сегодня мы попробуем разобраться с размерностью массива и типами данных
Давай те вспомним, какие массивы мы использовали
ТИПЫ ДАННЫХ
А имя массива
[1..5] размер массива от ячейки с номером 1 до ячейки с номером 5 всего 5 ячеек массива
Типы данных
of integer в этих ячейках могут быть занесены только целые числа(2,20,7,-3,0)
of string в этих ячейках могут храниться целые и дробный числа (2;2.7;-4.1;0;0.7)
of char в этих ячейках могут храниться символы (‘а’; ’5’; ’ф’; ’l’; ‘*’)
of в этих ячейках могут храниться слова и предложения ('white', 'red', 'blaсk', ‘green’, ‘grey’)
Два первых типа данных мы использовали в своих задачах
Попробуем разобраться с двумя другими.
Пароль имеет 7 символов и может иметь набор цифр и латинские буквы (k, l,m, p,t, z)
Определить является ли введенная информация паролем.
Задача состоит из нескольких этапов
Определим данные:
Par[0..16] of char
Ch-переменная типа char считывания данных.
I – индекс массива
J – счетчик букв пароля
K – счетчик совпавших символов
1. Организовать заполнения массив Par символами, которые могут входить в пароль. Рассмотрим простейший способ:
Par[0]:=’0’; Par[1]:=’1’;… Par[10]:=’k’; … Par[16]:=’z’;
2. Организовать ввод данных c помощью цикла от 1 до 7 так как в пароле 7 цифр
Каждый символ будем искать в массиве, если все символы были найдены в массиве то это пароль. Этот этап можно воспроизвести несколькими способами.
Рассмотрим один, пусть при совпадении символа пароля и символа в таблице к счетчику K прибавляем 1
3. Проверить K если значение K=7 то это пароль
uses crt;
var
par:array [0..16] of char;
i, j,k:integer;
ch:char;
begin
writeln ('заполнение массива par');
par[0]:='0';par[1]:='1';par[2]:='2';par[3]:='3';
par[4]:='4';par[5]:='5';par[6]:='6';par[7]:='7';
par[8]:='8';par[9]:='9';par[10]:='k';par[11]:='l';
par[12]:='m';par[13]:='n';par[14]:='p';par[15]:='t';par[16]:='z';
for i:=0 to 16 do
write (par[i]);
writeln;
k:=0;
for j:=1 to 7 do{ввод символов пароля}
begin
read(ch);
for i:=0 to 16 do
if par[i]=ch then k:=k+1{счетчик совпавших символов}
end;
{вывод заключения}
If k=7 then writeln (k,'parol') else writeln (k,'no parol');
end.
Рассмотрим задачу вводим дату в цифровом виде 7 11 а выводим 7 ноября
Можем решить эту задачу с помощью оператора выбора. А можем с помощью строкового массива mac array[1..12] of string в который введем название месяцев объем программы уменьшится в несколько раз.
Что нужно сделать создать массив mac можно сделать как и в предыдущей программе. А можно с помощью массива констант (значение в массиве не будут меняться мы будем только сравнивать введенные значения с данными массива)
Вспомним – раздел констант задается перед разделом переменных var/
Const mac array [1..12] of string размер массива а далее присваиваем значения массива при это ставится знак = круглые скобки и значения вводятся в ковычках=('январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь');
Если вводятся символьные данные
mec: array [0..9] of char =
('0','1','2','3','4','5','6','7','8','9');
Если вводятся целые данные
mec: array [0..9] of integer =
(7,-4,8,9,-5,1,1,3,11б0 Если вводятся символьные данные
mec: array [0..9] of char =
('0','1','2','3','4','5','6','7','8','9');
uses crt;
const
mec: array [1..12] of string =
('января','февраля','марта','апреля','майя','июня','июля','августа','сентября','октября','ноября','декабря');
var d, m:integer;
begin
write ('введи день и месяц 11 4');
readln (d, m);
if ((m>0) and (m<13)) then writeln(d,' ',mec[m]) else writeln ('ошибка ввода');
end.
Вспомним циклы (счетчики) вспомниm такой тип данных может быть у счетчика циклов целые и символьные
For i:=1 to 10 do
For ch:=’a’ to ’z’ do
В массивах индексы могут иметь тип Char
| d | e | f | g | h |
A[i] | A[d] | A[e] | A[f] | A[g] | A[h] |
содержимое | -4 | 8 | -12 | 7 | -3 |
A:array[‘d’..’h’] of integer
На вход программы подаются произвольные алфавитно-цифровые символы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать последовательность строчных английских букв ('a' 'b'... 'z') из входной последовательности и частот их повторения. Печать должна происходить в алфавитном порядке. Например, пусть на вход подаются следующие символы:
fhb5kmbfыshfm.
В этом случае программа должна вывести
b2
f3
h2
kl
m2
s1
{задача c4-3 c подсчет количества букв}
uses crt;
var
a2:array ['a'..'z'] of integer;{индекс массива буква}
c:char;{индекс для массива а2}
i:integer;
begin
clrscr;
repeat
read (c);
if c <> '.' then a2[c]:=a2[c]+1;
until c='.';
for c:='a' to 'z' do
if a2[c] <> 0 then writeln (c, a2[c]);
end.
Самостоятельно
1) В командных олимпиадах по программированию для решения предлагается не более 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систем соревнований. Вам предлагается написать эффективную, в том числе и по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы на проверку, чтобы определить популярность той или иной задачи. Следует учитывать, что количество запросов в списке может быть очень велико, например, когда олимпиада проводится через Интернет. перед текстом программы кратко опишите используемый вами алгоритм решения задачи. На вход программе в первой строчке подается количество пришедших запросов N. В каждой из последующих N строк записан номер задачи от 1 до 12. Пример входных данных:
6
1
2
1
1
5
2
6
Программа должна вывести список всех задач, встречающихся в запросах, количества запросов по ней с указанием этого количества запросов. Каждая задача должна быть выведена только один раз. Пример выходных данных для приведенных входных данных:
1 3
2 2
5 1
6 2


