Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




Язык Тип, ключевое слово Примеры использования
Алгоритмический язык Символьный сим a:= "f "; b:= "+"; c:="5" If a = " " then k:= k + 1
Литерный лит t:= "Литерная величина" s:= "" (пустая строка)
Turbo Pascal Символьный Char a:= ' f '; b:= '+'; c:= '5'; If a = ' ' then k:= k + 1
Литерный String t:= 'Литерная величина'; f:= ' '; (пустая строка)

Для данных символьного и литерного типов применимы операции сцепки (соединения, конкатенации) и сравнения (<, >, <=, >=, =, <>). Сравнивать можно строки разной

длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов. Так, строка " стол " меньше строки " стул ", строка " teacher " больше строки " pupil ", а строка " пар " меньше строки " парад ".

Функции и команды обработки строк

Алгоритмический язык

Функция длин(S) Возвращает количество символов в строке S.

Операция вырезка позволяет "вырезать" из строки группу соседних символов. Вырезка из

строки S подстроки, начинающейся с i-ой и кончающейся j-ой позицией, обозначается

S [i: j]. Вырезка из строки S одного i-го символа обозначается S[i].

Команда присваивания вырезке S[N: M]:= SubS. Часть строки S, начиная с позиции N

и кончая позицией M, заменяется на подстроку SubS такой же длины.

Turbo Pascal

Процедуры

Delete (Var S: String; N, M: Integer) Удаляет M символов из строки S, начиная с

позиции N.

Insert (SubS: String; Var S: String; N: Integer) Вставляет подстроку SubS в строку S,

начиная с позиции N.

Str (X: Integer; Var S: String) Возвращает представление числа X в его символьной

форме S.

Val (S: String; Var X, Code: Integer) Возвращает представление символов строки S в ее

числовой форме X. Параметр Code содержит признак ошибки преобразования (если Code

= 0, ошибки нет).

Функции

Chr (X: Byte): Char Возвращает символ с заданным порядковым номером X.

Сoncat (S1 [, S2,..., SN ] ): String Выполняет сцепку (конкатенацию) последовательности

строк.

Copy (S: String; N, M: Integer): String Возвращает подстроку из строки S, начиная с

позиции N и длиной M символов.

Length (S: String): Byte Возвращает количество символов в строке S.

Ord (X: Char): LongInt Возвращает порядковый номер символа X в таблице кодов

символов.

Pos (SubS, S: String): Byte Возвращает номер позиции, начиная с которой в строке S

располагается подстрока SubS (если значение функции равно нулю, то S не содержит

SubS).

Пример 7.1. Определить количество слов в заданном тексте.

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

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

усложняется. Рассмотрим оба варианта решения этой задачи.

Вариант 1. Слова в тексте разделены одним пробелом.

Данные Результат
"Кот на крыше" N=3

Тест

 

Алгоритмический язык

алг Число слов (арг лит Text, рез цел N)

дано | В непустом тексте Text слова разделены одним пробелом

надо | N — количество слов

нач цел i

N:=1

нц для i от 1 до длин (Text) |цикл по буквам текста

если Text[i] = " "

то N:=N+1

Все

Кц

Кон

Исполнение алгоритма

i Text[i] Text[i]='' '' N
  К о т _ н а _ к р ы ш е + - - - + - - + - - - -      

Turbo Pascal

Program Probel;

Uses Crt;

Var Text: String; {заданный непустой текст}

i, Number: Integer; {Number — количество слов в тексте}

Letter: Char; {текущая буква }

BEGIN ClrScr;

WriteLn('Введите текст:'); ReadLn(Text);

Number:=1;

For i:=1 to Length(Text) do {цикл по буквам текста}

begin

Letter:=Text[i];

If (Letter = ' ') then Number:=Number+1;

end;

WriteLn('О т в е т: количество слов в тексте равно ', Number);

END.

 

Вариант 2. Слова в тексте разделены произвольным количеством пробелов

Тест

Данные Результат
"Кот на крыше" N=3

 

 

Алгоритмический язык

алг Число слов (арг лит Text, рез цел N)

дано | В тексте Text слова могут быть разделены произвольным количеством пробелов

надо | N — количество слов в тексте Text

нач цел i, лог Flag

N:=0; Flag:= да

нц для i от 1 до длин (Text) | цикл по буквам текста

если (Text[i]<>" ") и (Flag=да) | это условие выполняется только

то N:=N+1 | для первой буквы каждого слова

Все

Flag:= (Text[i]=" ") | Flag= да, если очередная буква — пробел,

кц | в противном случае Flag = нет

Кон

Исполнение алгоритма

Обозначение проверяемого условия:

(Text[i]<>" ") и (Flag = да)=>(1)

i Text[i] (1) N Flag
  К о т _ н а _ _ _ к р ы ш е + - - - + - - - - + - - - -       да нет нет нет нет да нет нет нет нет да нет нет нет нет

Turbo Pascal

Program KolSlov;

Uses Crt;

Var Text: String; {заданный текст}

i, Number: Integer; {Number - количество слов в тексте}

Flag: Boolean;

Letter: Char; {текущая буква }

BEGIN ClrScr;

WriteLn('Введите текст:');

ReadLn(Text);

Number:= 0; Flag:= TRUE;

For i:= 1 to Length(Text) do {цикл по буквам текста}

begin

Letter:= Text[i]; {текущая буква текста }

If (Letter <> ' ') and Flag then Number:= Number+1;

Flag:= (Letter=' '); {(Letter=' ') — логическое выражение, принимающее значения TRUE или FALSE }

end;

WriteLn;

WriteLn('О т в е т: количество слов в тексте равно ', Number); ReadLn;

END.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных