Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции к экзамену ГТК.docx
Скачиваний:
16
Добавлен:
26.09.2019
Размер:
339.82 Кб
Скачать

4.5. Программирование задач с символами и строками

Строка – упорядоченный набор символов в кавычках.

Описание строки в разделе описания переменных (Var) на языке Pascal имеет вид:

St : string [ NMax ] ;

где string – строка, St – имя строки, NMax – максимальное количество символов в строке.

Это означает, что переменная St является строкой, которая может содержать от 0 до NMax символов.

Описание символьной переменной в разделе описания переменных (Var) на языке Pascal имеет вид:

Ch : char ;

где char – символьный тип (character), Ch – имя символа.

Это означает, что переменная Ch является символом.

Пример.

Var god : string[4];

bukva : char;

Это означает, что переменная god – строка, включающая максимум 4 символа, а переменная bukva – единичный символ.

Доступ к символу в строке имеет вид:

St [ Ind ]

где St – имя строки, Ind – индекс символа.

Это означает доступ к символу с номером Ind в строке St.

Пример.

god[3]

Это означает 3-й символ в строке god.

К строкам можно применять следующие операции:

+ (сцепление).

= (равно).

<> (не равно).

< (меньше).

> (больше).

<= (меньше или равно).

>= (больше или равно).

К строкам обычно применяют следующие стандартные функции:

  1. Length(St) – длина строки St.

  2. Concat(St1,…,StN) – соединение строк St1, …, StN.

  3. Copy(St,Ind,N) – скопированные N символов из строки St, начиная с позиции Ind .

  4. Pos(PodSt,St) – номер позиции, с которой начинается подстрока PodSt в строке St.

К строкам обычно применяют следующие стандартные процедуры:

  1. Insert(PodSt,St,Ind) – вставка подстроки PodSt в строку St, начиная с позиции Ind .

  2. Delete(St,Ind,N) – удаление N символов из строки St, начиная с позиции Ind .

Задача 4.

Условие задачи. Ввести строку с названием купленного товара. Если товар не является вещью, то объединить строку с названием товара и слово «вкусно».

Программа.

Program z4;

Var

tovar : string[10];

itog : string[20];

Begin

readln(tovar);

if not(tovar='Вещь')

then itog:=tovar+' - вкусно';

writeln(itog);

End.

Контрольный пример.

Исходные данные:

Товар = ‘Кефир’.

Результаты:

Итог = ‘Кефир – вкусно’.

4.6. Программирование задач с записями

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

Поле – именованная величина, являющаяся частью записи.

Описание записи в разделе описания переменных (Var) на языке Pascal имеет вид:

Zap : record

SP1 : T1;

SPN : TN

end;

где record – запись, end – конец описания записи, Zap – имя записи, SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке.

Это означает, что переменная Zap является записью, включающей поля в списке SP1 типа T1 , … поля в списке SPN типа TN.

Пример.

Var

computer : record

nazv : string[10];

god : integer;

bystr : real;

end;

Это означает, что переменная computer – запись, включающая поля nazv строкового типа, god целочисленного типа, bystr вещественного типа.

Доступ к полю записи имеет вид:

Zap . Pole

где Zap – имя записи, Pole – имя поля.

Это означает доступ к полю Pole записи Zap.

Пример.

computer.nazv

Это означает поле nazv записи computer.

Оператор присоединения имеет вид:

with Zap do Op

где with – с, do – делать, Zap – имя записи, Op – оператор.

Это означает, что с полями записи Zap надо выполнять оператор Op.

Пример 1. Ввести поля записи computer без использования оператора присоединения.

readln(computer.nazv,computer.god,computer.bystr);

Пример 2. Ввести поля записи computer с использованием оператора присоединения.

with computer do readln(nazv,god,bystr);

Задача 5.

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

Программа.

Program z5;

Var

student : record

fam: string[10];

god: integer;

ball: real;

end;

stip: real;

Begin

with student do

readln(fam,god,ball);

if student.ball=5 then stip:=1000 else stip:=0;

writeln('Стипендия – ',stip:7:2,' рублей');

End.

Контрольный пример.

Исходные данные:

Фамилия – Иванов

Год рождения – 1989

Средний балл – 5.

Результаты:

Стипендия – 1000 рублей.

Задача 6.

Условие задачи. Дан массив студентов из полей записи: фамилия, год рождения, средний балл за сессию. Найти студента с максимальным средним баллом.

Программа.

Program z6;

Type

student = record

fam: string;

god: integer;

ball: real;

end;

Var

A: array [1..50] of student;

i,imax,n: integer;

max: real;

Begin

readln(n);

for i:=1 to n do

with A[i] do

readln(fam,god,ball);

max:=A[1].ball;

imax:=1;

for i:=1 to n do

if A[i].ball>max then

begin

max:=A[i].ball;

imax:=i;

end;

writeln('Фамилия -',A[imax].fam,' с баллом ',A[imax].ball);

End.

Контрольный пример.

Исходные данные:

Фамилия

Год рождения

Средний балл за сессию

Иванов

1985

3,5

Петрова

1986

4,1

Сидоров

1984

4,7

Результаты:

Фамилия – Сидоров с баллом 4,7.