Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
31.03.2015
Размер:
74.75 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ЭНЕГРЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. СМОЛЕНСКЕ

Кафедра информатики

Отчет по лабораторной работе №5

Тема: «Обработка строк типа string»

По курсу: «Информатика»

Студент: Юшковский С.Л.

Группа: ПЭ-09

Преподаватель:

Бояринов Ю.Г.

Смоленск 2010

Подготовка к работе.

Цель работы – приобретение навыков работы со строками.

  1. Реализация строк типа String.

Для описания символьных переменных применяется служебное слово string. Описание символьной переменной в общем виде выглядит следующим образом: var имя_переменной: string[длина]; после слова string указывается длина описываемой переменной, т. е. максимальное количество символов, которое может содержать данная переменная.

Например, если в разделе описания переменных в программе мы видим:

var i:integer;

х:real

stroka:string[25] ;

то это означает, что в данной программе наряду с переменными целого типа I и вещественного типа х используется и переменная строкового типа stroka, которая может содержать до 25 символов. Параметр, заключенный в квадратные скобки, не является обязательным и используется в том случае, если существуют причины, по которым необходимо жестко ограничить максимальную длину строковой переменной. Если же после имени переменной ее длина не указывается, то по умолчанию она считается равной 255 символам. В этом случае описание символьной переменной будет выглядеть так:

var stroka:string;

Значения символьных переменных так же, как и уже знакомые нам символьные константы (к текстовым константам относятся, в частности, сообщения, выводимые оператором writein), должны обязательно заключаться в апострофы. Таким образом, оператор присваивания строковой переменной stroka значения "набор_символов" будет выглядеть следующим образом:

stroka:= 'набор_символов';

Подобно числовым переменным, строковые переменные можно складывать. Результат сложения также можно присваивать какой-либо символьной переменной. Например, если значение переменной slovol равно "Турбо ", а переменной siovo2 — "Паскаль", то в результате операции:

slovo:=slovol+slovo2;

значение переменной slovo станет равным словосочетанию "Turbo Pascal". Можно прибавлять к строковой переменной текстовую константу. Например, если в программе имеется следующий оператор:

fraza:=slovo + " версия 7.0";

то в результате значение строковой переменной fraza станет равным "Turbo Pascal версия 7.0".

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

При обращении к элементу строковой переменной в скобках после ее имени может указываться не только числовая константа, но и имя переменной целого типа. В этом случае номер "вызываемого" символа будет равен значению данной целочисленной переменной. Например, если мы присвоим целочисленной переменной i значение 10, а затем укажем в программе stroka[i], то в результате будет вызвана буква, которая является в строковой переменной десятой по счету.

  1. Основные процедуры функции работы со строками.

Основные функции работы со строками:

Concat (SI [, S2,... ,Sn]:string):string - конкатенация (сцепление) строк;

Copy (S: string; Index:integer; Count: integer): string; - возвращает копию подстроки из

строки S с позиции Index;

Length (S: string): integer; - возвращает текущую длину строки;

Pos (Substr: string; S: string):byte; - поиск подстроки Substr в строке S

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

Delete (var S:string; Index: integer; Count: integer); - удаление из строки S Count символов, начиная с позиции Index

Insert (SI: string; var S: string; Index: integer) - вставка в строку S подстроки SI с позиции Index

Str(X [: Width [:Decimals]]; var S: string) - преобразование числа в строку

Val (S; var V; var Code: integer); - преобразование строки в число

Техническое задание.

Составить алгоритм и программу для решения задачи.

  1. Дан текст определить количество букв «U» в первом предложении:

  • Известно, что буквы «U» в этом предложении есть.

  • Букв может не быть.

  1. Дана строка, изображающая целое число, вывести сумму цифр этого числа.

Анализ технического задания.

Для решения задачи 1 необходимо определить есть ли во введенном тексте точки, если есть, то необходимо найти все буквы «U» среди символов, стоящих до точки и вывести их количество, если точек нет, то во всем тексте найти все буквы «U» и вывести их количество. Искать буквы «U» и точку по номеру символа в таблице кодировки, используя функции chr и ord.

Для решения задачи 2 необходимо в цикле перевести каждую цифру из строки в число используя процедуру val и сложить эти цифры сумму вывести на экран.

Задача 1.

Блок схема.

Нет

Да

Нет

Да

Нет

Да

Sum:=sum+1

i:=i+1

Текст программы.

program str;

uses crt;

var s:string; i,sum:integer;

begin

clrscr;

writeln('Введите строку');

readln(s);

for i:=1 to length(s) do

begin

if s[i]='.' then

break;

if (s[i]='U') or (s[i]='u') then

inc(sum);

end;

writeln('В первом предложении “u” встречается ',sum,' раз');

readln;

end.

Результаты тестирования.

Ввод

Вывод

V pervom predlogenii ix net

В первом предложении “u” встречается 0 раз

V pervom predlogenii odna bukva

В первом предложении “u” встречается 1 раз

V pervom predlogenii odna bukva. A vtoroe nam ne nado UuuuUU

В первом предложении “u” встречается 1 раз

V pervom predlogenii nUgnih bUkv ochen mnogo UUUUcvsu. A tut ne schitaem.

В первом предложении “u” встречается 7 раз

124789

В первом предложении “u” встречается 0 раз

Задача 2.

Блок схема.

Нет

Да

Val(s[i],pr,er);

Sum:=sum+pr

i:=i+1

Результаты тестирования.

Ввод

Вывод

1230983

26

0125

8

vasya

0

-125

8

12.78

18

Текст программы.

program str1;

uses crt;

var s:string; i,sum,pr,er:integer;

begin

clrscr;

writeln('Введите число');

readln(s);

for i:=1 to length(s) do

begin

val(s[i],pr,er);

sum:=sum+pr;

end;

writeln('Сумма цифр числа равна ',sum);

readln;

end.

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

Соседние файлы в папке Программирование