Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ(Лек)МФ+ФГГиНД(2).docx
Скачиваний:
18
Добавлен:
11.04.2015
Размер:
617.66 Кб
Скачать

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.

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

Программа.

Programz6;

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.