Отсортировать массив по возрастанию. Как отсортировать многомерный массив по одному из полей внутреннего массива в PHP? Литература Основная литература

Часто при решении определенных задач требуется сделать сортировку данных, которые хранятся в массиве. Что такое сортировка массивов? Вот, например, играя в преферанс, люди раскладывают свои карты по значению и масти. Это дает возможность определить, каких еще карт им не хватает. А в словарях все упорядочивается по алфавиту. Примеров можно привести много. Сортировка - перегруппировка определенного множества объектов в каком-либо порядке по заданному признаку. Сортировка массивов требуется довольно часто. Для этого применяются разные методы. Чтобы понять их суть, достаточно рассмотреть подробно несколько способов.

На основе чего делают

Важно понимать, что массив состоит из многочисленных пар ключей и определенных значений. Сортировка массивов на языке Си делается при помощи десятков строк кода, а на языке PHP это достигается лишь одной несложной командой. Сортировка массивов возможна на основе ключей или значений. Еще можно распределять значения, оставив им существующие ключи или присвоив новые.

Главные различия функций

Сортировка возможна при помощи разных функций. Давайте рассмотрим, чем они отличаются:

Одни функции сортируют массивы по ключам их элементов, а другие - по значениям.

Бывает разный порядок сортировки: убывающий, возрастающий, натуральный, числовой, алфавитный, определенный пользователями или случайный.

Некоторые функции способны сохранять после сортировки связь, существующую между ключом и значением. Но есть функции, в которых ключи сбросятся в новые значения.

Каждая функция осуществляет модификацию переданного массива. Отсортированную копию они не возвращают.

Порядок сортировки считается неопределенным, когда функция определяет два элемента, как равные. Это нестабильная сортировка.

Некоторые функции сортировки массивов в PHP

Функции sort() и rsort() . Sort() упорядочивает в алфавитном порядке массив. Обратим внимание: данная функция чувствительна к регистру. Происходит сортировка по значениям без учета ключей. Rsort() сортирует в обратном порядке тоже по значениям и не учитывает ключи.

Asort() - это одна из функций, сохраняющая отношения ключей и значений. Ее полезно применять для ассоциативных массивов, когда это важно.

В примере ключами выбраны наименования фруктов, а значения - это цены. Сортировка происходит по возрастанию цены. Если необходима сортировка по то нужна функция ksort (), которая делает сортировку по ключам. Arsort () осуществляет сортировку с индексами (описательными) по убыванию значений. Krsort () сортирует по убыванию ключей элементов.

Двумерный массив

Интересна сортировка двумерного массива. Это можно делать по-разному. В PHP есть возможность сравнивать два числа или две строки. Но в любом многомерном массиве каждый из элементов представляет собой массив. В PHP, чтобы сравнить несколько массивов, надо создать определенный метод. Рассмотрим двумерный массив, в котором хранится сокращенное название фруктов, полное название и цена. Элементы массива можно отсортировать в алфавитном порядке по сокращенным названиям.

В примере у нашей функции имя compare (сравнение). У нее 2 аргумента - x, y. Функция должна принять 2 значения, после чего определить порядок. Параметры x, y - 2 массива, которые находятся внутри y основного массива. Чтобы сравнивать description-элементы из массивов, что переданы в функцию, нужны переменные $x, $y. В строке return1 происходит возвращение значения коду, который вызвал функцию. В основе сортировки нашего массива функция usort(). Сортировка идет по правилам, которые описывает функция compare().

Теперь сортировка массивов в PHP станет для вас понятной.

Инструкция

Существует несколько способов сортировки массива. Наиболее простая для алгоритмизации - «пузырьковая» сортировка, однако она же относится к самым медленным. Суть данного метода заключается в последовательном проходе по массиву данных и сравнении каждой пары элементов. Если нижестоящий элемент оказывается меньше предыдущего, производится обмен местами. Далее алгоритм начинается сначала. Пример кода сортировки на языке С:

int mаss ;
int el_min=10;

for (int i=0; ii; j--)
if (lеss(mаss [j], mаss ))
swаp(mаss [j], mаss );
}

Одним из оптимальных алгоритмов сортировки массива по возрастанию считается упорядочивание методом вставок. Суть алгоритма заключается в формировании заданной последовательности среди группы элементов (по возрастанию). Специальный обработчик в цикле проверяет массив на упорядоченность. Для сортировки по возрастанию задается следующее условие. Если последующий элемент меньше предыдущего, он изымается со своего места и помещается на то, которое соответствует его значению. Пример кода программы сортировки по возрастанию на языке С:

int Kol = 40;
int mаss , k;

for (int i = 1, j=0; i{
k = mаss [i]; // вспомогательная переменная для хранения элемента массива
j = i - 1;
while (k {
mаss = mаss [j];
j--;
if (j mаss = k;
}
}

Еще один из часто используемых методов сортировки – алгоритм упорядочивания через поиск минимального или максимального элемента в массиве. При сортировке по возрастанию в момент первого прохода по массиву находится его элемент с самым минимальным значением и помещается в начало массива. На его же место устанавливается элемент, занимавший ранее первую позицию. При дальнейшем рассмотрении массива заполненное место исключается. Ищется следующий минимальный элемент, помещается уже на второе место и т.д., пока весь массив не будет отсортирован. Код сортировки методом нахождения минимального элемента списка:

int mаss , bb;
int Kоl = 30, min, pоs;

for (int i = 0; i{
min = mаss [i];
pоs = i;
for (int j=0; j {
if (mаss [j] {
min = mаss [j];
pоs = j;
}
bb = mаss [i];
mаss [i] = mаss ;
mаss = bb;
}
}

Способы упорядочивания элементов массивов зависят от инструментов, которые имеются у вас в распоряжении. Ниже приведены несколько вариантов упорядочивания одномерных массивов при использовании наиболее распространенного серверного языка программирования PHP. Самостоятельно составлять функции для перебора элементов массива, их сравнения и присвоения новых значений при использовании этого языка не требуется - все это делают встроенные функции.

Инструкция

Используйте функцию sort(), если надо выстроить данные в массиве в порядке их возрастания. Например:$values = array(58, 15, 2.41, 26, 30);
sort($values);В результате применения изменится расположения данных в массиве - он станет таким: (2.41, 15, 26, 30, 58). Если в вызов функции добавить флаг SORT_STRING, то функция будет считать данные массива строковыми и выстраивать их по . Так как знак строковой переменной «2.41» в алфавите располагается дальше, чем первый знак строковой переменной «15», то после применения функции sort($values, SORT_STRING) переменные выстроятся иначе: (15, 2.41, 26, 30, 58).

Воспользуйтесь функцией rsort() при необходимости упорядочить массив в порядке убывания его значений. Эта функция отличается от описанной в первом шаге только порядком сортировки.

Применяйте функцию asort(), если необходимо упорядочить в порядке возрастания значения именованного (ассоциативного) массива, не изменяя при этом исходных соответствий между индексом и значением каждого элемента массива. Например:$values = array("one" => 58, "two" => 15, "three" => 2.41, "four" => 26, "five" => 30);
asort($values);В результате порядок следования элементов массива станет таким: ("three" => 2.41, "two" => 15, "four" => 26, "five" => 30, "one" => 58). В остальном действие этой функции не отличается от описанной в первом шаге функции sort. Для аналогичного упорядочивания элементов в порядке убывания используйте функцию arsort().

Рано или поздно необходимость сортировать данные из массива возникает у любого программиста. Будь то вывод данных из базы в алфавитном порядке или сортировка имен файлов по дате последнего изменения, можно осуществить благодаря встроенным php функциям для сортировки данных массива. В данной статье продемонстрирую и объясню в примерах как работают такие функции как: sort(), rsort().

Функция ; - Сортировка массива по возрастанию и по алфавиту

Структура:

($Массив, $Флаг);

Функция сортирует заданный ей массив $Массив по возрастанию. Функция предназначена для работы со списками. Списки это обычные массивы, ключи которых начинаются с нуля. Функции можно задать необязательный аргумент $Флаг, который манипулирует тем как именно должно происходить сортировка . Рассмотрим описание аргумента $Флаг:

SORT_REGULAR – Сортировка по умолчанию работы функции

SORT_NUMERIC - Сортировка чисел, по возрастанию

SORT_STRING - Сортировка строк, по алфавиту

Рассмотрим пример, у нас есть массив где хранятся в хаотичном виде данные о количестве пар студента в разные года учебы.

"; } ?> Результат работы скрипта: Курс: 1 - 72 пар Курс: 2 - 83 пар Курс: 3 - 100 пар Если бы мы не применили функцию результат работы был бы следующим: Курс: 1 - 83 пар Курс: 2 - 100 пар Курс: 3 - 72 пар

Сортировка по алфавиту

Ниже приведен скрипт который сортирует страны их массива по алфавиту, второй аргумент функции ($Флаг) не обязательно ставить, т.к. функция сама поймет, что предстоит работать со строками.

"; } ?> Результат работы: Армения Италия Россия Япония

Функция rsort() - Сортировка массива по убыванию

функция является алогичной функции только сортирует массивы по убыванию. рассмотрим структуру синтаксиса:

($Массив, $Флаг);

Пример для данной функции будет похож на примеры выше приведенные, кроме одного, данные из массива будут отсортированы по убыванию. Создаем массив с призами для тех кто займет 1-е, 2-е и 3-е место в конкурсе.

"; } ?> Результат выполнения скрипта: 1 место - приз: 2800 руб. 2 место - приз: 1200 руб. 3 место - приз: 500 руб.

Рrogram Sort_Obmen;

var а:array of integer;

n,i,k,x: integer;

begin write("количество элементов массива ");

for i:=1 to n do read([i]);

for k:=n-1 downto 1 do {количество сравниваемых пар}

for i:=1 to k do if a[i]>a then {меняем местами соседние элементы}

for i:=1 to n do write(a[i]," "); {упорядоченный массив}

Наряду с сортировкой методом пузырька, существуют и некоторые другие, более эффективные методы сортировки: быстрая сортировка, метод Шелла, сортировка вставками.. . Однако рассмотренный алгоритм наиболее прост в реализации и логичен.

Приведем, тем не менее, процедуру "быстрой сортировки", которая шаг за шагом ищет максимальный, второй по величине и т.д. элементы и переносит: их в конец массива. Остановка цикла произойдет тогда, когда при очередном проходе не произойдет (т.е., элементы встали на свои места):

Имя фала : FastSort.pas

Procedure FastSort(Var aa:Massive);

Var ii,kk,nn:byte;

For ii:=1 to nn-1 Do Begin

If (aa>aa) Then Begin

Swap (aa,a);

В то время, как при сортировке предыдущем методом для массива из 10 элементов понадобится 9 проходов, для данного алгоритма это число может уменьшиться. К примеру, массив из значений (1,-3,7,-10,11,4,-6,2,5,-4) будет отсортирован за 8 проходов, а массив (1,4,3,2,4,5,6,7,10,11) – всего за 1.

Следуя похожей, логике отсортируем массив по возрастанию:

Имя фала : Sort_Inc.pas

Procedure Sort_Inc(Var aa:Massive);

For kk:=1 to n-1 Do Begin

For ii:=1 to n-kk Do Begin

If (aa>aa) Then Begin

Swap (aa,a);

Обработка двумерных массивов

Основные принципы ввода двумерных массивов во многом схожи с принципами ввода одномерных. При его описании можно ссылать на введенные как константы число строк матрицы MиN, например

Type Matrix=array of Real;

Var a,b,c,d: Matrix;

e: array of Byte;

Как и в случае одномерного массива, обработка его двумерного родственника может быть локальной или глобальной, глобальная – обработкой по индекса, по значениям или комбинированной.

Заметим, что двумерный массив всегда можно развернуть в одномерный, а одномерный – свернуть в двумерный. Рассмотрим примеры решения задач на практическом занятии.

Литература Основная литература

    Ахметов К.С. Курс молодого бойца. Изд. 5-е. М., Компьютер-Пресс,1998.

    Фигурнов В.Э. IBM PC для пользователя. Изд. 7-е. М., Инфра-М, 1997, и 1999.

    Александр Левин Самоучитель Работы на компьютере 8-ое издание Раздел «из чего состоит компьютер." – Питер, 2004 г.

    Электронное методическое пособие МГАПИ 2005 г.

    Алексеев Е.Р., Чеснокова О.В., Павлыш в.Р., Славинская Л.Ф. Турбо Паскаль 7.0 2-ое издание – NT Press, М., 2006 г.

    Коротаев Д.Г. TURBO-PASCAL в примерах и задачах. Учебное пособие МГАПИ, М, 2000 г.

    Программирование на языке Паскаль Задачник. Под редакцией О.Ф.Усковой – Питер, 2003 г.

    Фаронов В.В. Учебное пособие Turbo - Pascal - Питер, 2007.

Известны результаты соревнования 9 участников по стрельбе. Расположить данные результаты в порядке возрастания набранных при стрельбе очков.

Алгоритм решения данной задачи является наиболее сложным из приведенных выше примеров и требует использования вложенных циклов.

Один из способов сортировки массивов заключается в следующем. Сначала первый элемент массива в цикле сравнивается по очереди со всеми оставшимися элементами. Если очередной элемент массива меньше по величине, чем первый, то эти элементы переставляются местами. Сравнение продолжается далее уже для обновленного первого элемента. В результате окончания данного цикла будет найден и установлен на первое место самый наименьший элемент массива. Далее продолжается аналогичный процесс уже для оставшихся элементов массива, т.е. второй элемент сравнивается со всеми остальными и, при необходимости, переставляется с ними местами. После определения и установки второго элемента массива, данный процесс продолжается для третьего элемента, четвертого элемента и т.д. Алгоритм завершается, когда сравниваются и упорядочиваются предпоследний и последний из оставшихся элементов массива.

Программа реализации изложенного алгоритма может иметь следующий вид:

Program pr4;

Type STREL=arrayof integer;

Var rez:strel;

i,j,s:integer;

For i:=1 to 9 do

writeln(‘Введите результаты ",i,"-го участника");

readln(rez[i]);

for i:=1 to 8 do

for j:=i+1 to 9 do

if rez[i]>rez[j] then

s:=rez[j];

rez[j]:=rez[i];

rez[i]:=s;

writeln(‘Отсортированные по возрастанию результаты:");

for i:=1 to 9 do write (rez[i]:5," ‘);

Здесь STREL - тип массива результатов стрельбы участников, rez[i] - переменная для описания результатов i-го участника (i меняется от 1 до 9). Вспомогательная переменная s используется при перестановке местами элементов массива.

Алгоритм сортировки выбором в Turbo Pascal
Очевидно, что первое место в массиве должен занять минимальный элемент массива, второе - наименьший из всех остальных, третий - наименьший из оставшихся и т.д.
Для этого необходимо выполнить следующую последовательность действий:
1. Определить минимальный элемент массива;
2. Поменять его местами с первым элементом;
3. Определить минимальный элемент среди оставшихся;
4. Поменять его местами со вторым элементом и т.д.;
Эта последовательность действий должна выполняться до тех пор, пока не будет определён последний минимальный элемент.
Данный способ называется сортировка выбором.
Всю операцию по упорядочиванию массива можно разбить на более простые задачи и назвать сортировкой выбора.
Первая - поиск минимального элемента. Предлагаемый фрагмент программы напомнит Вам, как это делается.

min:=m; {допустим, что 1-й элемент - минимален}
t:=1; {и его номер = 1}
FOR i:=1 TO 30 DO
if m[i]> buf:=m[t]; {замена}
m[t]:=m[i];
m[i]:=buf;
END;

Описанный метод «сортировки выбором» сортировки массивов можно применять как для сортировки массивов по возрастанию, так и для сортировки массивов по убыванию. Для этого просто необходимо определять не минимальный элемент массива, а максимальный. В тексте программы это выражается заменой в некоторых местах знака "".


41. Множества в Паскале

Множество - это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества.

Все элементы множества должны принадлежать одному из порядковых типов, содержащему не более 256 значений. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением.

Область значений типа множество - набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: , ["а",‘b","с"], ["a".."z"].

Если множество не имеет элементов, оно называется пустым и обозначается как . Количество элементов множества называется его мощностью.

Множество может принимать все значения базового типа. Базовый тип не должен превышать 256 возможных значений. Поэтому базовым типом множества могут быть byte, char, boolean и производные от них типы.

Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт.

Число байтов, выделяемых для данных типа множество, вычисляется по формуле:

ByteSize = (max div 8) - (min div 8) + 1,

где max и min - верхняя и нижняя границы базового типа данного множества.

Номер байта для конкретного элемента Е вычисляется по формуле:

ByteNumber = (E div 8) - (min div 8),

номер бита внутри этого байта по формуле:

BitNumber = E mod 8

Не имеет значения порядок записи элементов множества внутри конструктора. Например, и - это эквивалентные множества.

Каждый элемент в множестве учитывается только один раз. Поэтому множество эквивалентно .

Переменные множественного типа описываются так:
Var <идентификатор> : set of <базовый тип>;

Например:

Var A, D: Set Of Byte; B: Set Of "a".."z"; C: Set Of Boolean;

Нельзя вводить значения во множественную переменную процедурой ввода и выводить процедурой вывода.

Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания:
<множественная переменная> := <множественное выражение>;

Например:

A: = ;B: = ["m", "n", "k"]; C: = ; D: = A;

Кроме того, выражения могут включать в себя операции над множествами.

Операции над множествами

Объединением двух множеств A и B называется множество, состоящее из элементов, входящих хотя бы в одно из множеств A или B. Знак операции объединения в Паскале «+».

1) + => 2) +[‘a’..’z’]+[‘A’..’E’, ‘k’] => [‘A’..’E’, ‘a’..’z’]3) + =>

Пересечением двух множеств A и B называется множество, состоящее из элементов, одновременно входящих во множество A и во множество B.

Знак операции пересечения в Паскале «*»

1) * => 2) [‘a’..’z’]*[‘A’..’E’, ‘k’] => [‘k’]3) * =>

Разностью двух множеств A и B называется множество, состоящее из элементов множества A, не входящих во множество B.

1a) - => 1b) - => 2a) [‘a’..’z’]-[‘A’..’E’, ‘k’] => [‘a’..’j’, ‘i’..’z’]2b) [‘A’..’E’, ‘k’] - [‘a’..’z’] => [‘A’..’E’]3a) - => 3b) - =>

Операция вхождения . Это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если x - такая скалярная величина, а M - множество, то операция вхождения записывается так: x in M.

Результат - логическая величина true, если значение x входит в множество M, и false - в противном случае.

Например, 4 in –– true, 5 in –– false.

Используя данную операцию, можно не только работать с элементами множества, но и, даже если в решении задачи явно не используются множества, некоторые логические выражения можно записать более лаконично.

1) Натуральное число n является двухзначным. Вместо выражения (n >= 10) and (n <=99) можно записать n in .

2) Символ c является русской буквой. Вместо выражения (c >= ‘А’) and (c <= ‘Я’) or (c>=‘а’) and (c<=‘п’) or (c>=‘р’) and (c<=‘я’) пишем c in [‘А’.. ‘Я’, ‘а’.. ‘п’, ‘р’.. ‘я’] и т.д.

Добавить новый элемент в множество можно с использованием операции объединения. Например, a:= a+ Для этих же целей в Turbo Pascal 7.0 предназначена процедура Include: include (M, A) M – множество, A – переменная того же типа, что и элементы множества M. Тот же пример можно записать так: Include (a, 5)

Исключить элемент из множества можно с помощью операции «разность множеств». Например, a:= a- Для этих же целей в Turbo Pascal 7.0 предназначена процедура Exclude: exclude (M, A) M – множество, A – переменная того же типа, что и элементы множества M. Тот же пример можно записать так: Exclude (a, 5)

Рассмотрим несколько примеров использования множеств при решении задач.

Задача 1. В городе имеется n высших учебных заведений, которые производят закупку компьютерной техники. Есть шесть компьютерных фирм: «Диалог», «Avicom», «Нэта», «Сервер», «Декада», «Dega.ru». Ответить на следующие вопросы:
1) в каких фирмах закупка производилась каждым из вузов?
2) в каких фирмах закупка производилась хотя бы одним из вузов?
3) в каких фирмах ни один из вузов не закупал компьютеры?

Решим задачу с использованием множеств. Для удобства дальнейших манипуляций в порядке следования занумеруем компьютерные фирмы, начиная с единицы. Занесём информации о месте закупок компьютеров каждым из вузов в отдельное множество.

Ответ на первый вопрос можно получить, выполнив пересечение всех таких множеств.

Ответ на второй вопрос – результат объединения множеств.

И, наконец, на последний – разность множества всех фирм и множества фирм, где хотя бы один вуз делал покупки.

Program ex_set_1;type firma = set of 1..6; v = array of firma;const f: array of string = ("Диалог", "Avicom", "Нэта", "Сервер", "Декада", "Dega.ru");{процедура ввода информации о закупке компьютеров в очередной фирме}procedure vvod(var a: firma);var i: byte; ans: 0..1;begin a:= ; for i:= 1 to 6 do begin Write("Вуз покупал компьютеры в фирме ", f[i], " (1 - да, 0 - нет)? "); ReadLn(ans); if ans = 1 then a:=a+[i] end;end;{процедура вывода элементов массива, номера которых содержатся в множестве}procedure Print(a: firma);var i: byte;begin for i:= 1 to 6 do if i in a then write(f[i]:10); writelnend;{Процедура, дающая ответ на первый вопрос}procedure Rez1(a: v; n: byte; var b: firma);var i: byte;begin b:= ; for i:= 0 to n-1 do b:= b * a[i];end;{Процедура, дающая ответ на второй вопрос}procedure Rez2(a: v; n: byte; var b: firma);var i: byte;begin b:= ; for i:= 0 to n-1 do b:= b + a[i];end;var a: v; n, i: byte; c: firma;begin write("Сколько вузов делали закупку? "); readln(n); for i:= 0 to n-1 do vvod(a[i]); Rez1(a, n, c); writeln("Каждый из вузов закупил компьютеры в фирмах: "); Print(c); Rez2(a, n, c); writeln("Хотя бы один из вузов закупил компьютеры в фирмах: "); Print(c); writeln("Ни один из вузов не закупил компьютеры в фирмах: "); Print(-c);end.

Задача 2. Сгенерировать n множеств (нумерацию начать с 1). Вывести элементы, которые входят во все множества с номерами, кратными трём, но не входят в первое множество.

Program ex_set_2;type mn = set of byte; v = array of mn;{процедура ввода информации в очередное множество}procedure vvod(var a: mn);var i, n, vsp: byte;begin a:= ; n:= 1 +random(200); for i:= 1 to n do begin vsp:= random(256); a:=a+ end;end;{процедура вывода элементов множества}procedure Print(a: mn);var i: byte;begin for i:= 0 to 255 do if i in a then write(i:4); writelnend;{Процедура, дающая ответ на вопрос}procedure Rez(a: v; n: byte; var b: mn);var i: byte;begin b:= ; i:= 3; while i <= n do begin b:= b * a[i]; i:= i + 3 end; b:= b - aend;var a: v; n, i: byte; c: mn;begin randomize; write("Сколько множеств? "); readln(n); for i:= 1 to n do begin vvod(a[i]); print (a[i]) end; Rez(a, n, c); Print(c);end.

Program ex_set_3;var m: set of char; s: string; i: byte;begin write("Введите строку: "); readln(s); m:=; i:= 1; while i <= length(s) do if s[i] in m then delete(s, i, 1) else begin m:=m+]; i:= i + 1 end; writeln(s)end.

42. Программа поиска количества определенных символов в тексте.

Здесь представлены наиболее часто используемые функции. Приведем пример программы, определяющей количество символов и слов в произвольной строке символов .

program pr28;

const YES=1; {Константы, опpеделяющие является ли }

NO=0; { текущий символ элементом слова}

str: string;

nw, {Количество слов}

nc, {Количество символов}

inword: integer; {Пеpеменная, пpинимающая значения

констант YES или NO}

i: integer;

writeln("Введите стpоку символов:");

read (str);

nw:=0;nc:=0;inword:=NO;

for i:=1 to length(str) do

nc:=nc+1;

if str[i] in [":",".",",",""","!","?",";"," "]{Если pазделитель,}

then inword:=NO {то текущий символ вне слова}

if inword=NO then

begin inword:=YES;

nw:=nw+1;

writeln ("nc=",nc,"nw=",nw);


43. Символьный тип данных в языке Турбо-Паскаль.