- •Часть 1
- •4 Требование к отчету Отчет о проделанной работе должен содержать:
- •5 Теоретические положения
- •5.1 Элементы языка
- •5.1.1 Алфавит языка
- •5.1.2 Идентификаторы
- •5.1.3. Константы
- •5.1.4 Выражения
- •5.3 Структура программы
- •5.3.1 Заголовок программы
- •5.3.2 Блок описаний
- •5.3.3 Раздел действий (операторов).
- •5.4 Комментарии
- •5.5 Оператор присваивания
- •5.6 Процедура ввода информации
- •5.7 Процедура вывода информации на печать
- •6 Методические рекомендации
- •7 Контрольные вопросы
- •Приложение а
- •Приложение б Сообщения об ошибках.
- •Библиография
- •Методические указания к лабораторной работе
- •4. Требование к отчету Отчет о проделанной работе должен содержать:
- •5 Теоретические положения
- •5.1 Логические выражения
- •5.2 Составной оператор
- •5.3 Оператор if
- •6 Методические рекомендации
- •7. Контрольные вопросы
- •Приложение
- •Библиография
- •1 Цель работы
- •3 Порядок выполнения работы
- •4 Требования к отчету
- •5 Общие положения
- •5.1 Алгоритмы циклической структуры
- •5.2 Оператор цикла с параметром
- •5.3 Цикл с предпроверкой условия
- •5.4 Цикл с постпроверкой условия
- •6 Методические указания к выполнению работы
- •7 Контрольные вопросы
- •1 Цель работы
- •2 Задачи работы
- •3 Порядок выполнения работы
- •4 Отчет о проделанной работе должен содержать
- •5 Теоретические положения
- •5.1 Общие сведения о массивах
- •5.2 Одномерные массивы
- •5.3 Примеры основных типов задач с использованием одномерных массивов
- •5.3.1 Нахождение суммы элементов массива
- •5.3.2 Нахождение наибольшего элемента в массиве
- •5.3.3 Нахождение количества элементов массива, удовлетворяющих некоторому условию
- •5.3.4 Сортировка массива по возрастанию
- •5.4 Двумерные массивы
- •5.5 Примеры задач с использованием двумерных массивов
- •5.5.1 Нахождение наибольшего элемента в заданной строке матрицы
- •5.5.2 Нахождение элементов массива, удовлетворяющих определенному условию
- •5.5.3 Нахождение сумм элементов строк матрицы
- •6 Методические рекомендации к выполнению работы
- •7 Контрольные вопросы
- •Библиография
- •Приложение а Варианты заданий на тему «Одномерные массивы»
- •Приложение в Варианты заданий на тему «Двумерные массивы»
- •Методические указания к лабораторной работе
- •Использование строковых переменных в среде программирования Pascal
- •4 Отчет о проделанной работе должен содержать
- •5 Теоретические положения
- •5.1 Описание переменных строкового типа
- •5.2 Процедуры и функции по работе со строками
- •5.3 Некоторые алгоритмы решения задач с использованием строковых переменных
- •6 Контрольные вопросы
- •Библиография
- •Приложение а Варианты заданий для выполнения
- •4 Требования к отчету
- •5 Основные положения
- •Результаты работы Pascal-программы
- •Система тестов
- •Система тестов
- •6 Задачи для самостоятельного решения
- •Библиография
- •Приложение а
- •Приложение б
- •Приложение в
- •6 Задачи для самостоятельного решения
- •Система тестов
- •6 Задачи для самостоятельного решения
- •Библиография
5.3 Некоторые алгоритмы решения задач с использованием строковых переменных
Рассмотрим алгоритмы по работе со строковыми переменными на примере некоторых задач.
Задача 1. Задан список из 6 слов. Определить, сколько слов списка начинается на букву «п».
Одно из возможных решений данной задачи имеет следующий вид:
program z1;
var
s: string[20];
i,k:integer;
begin
k:=0;
for i:=1 to 6 do
begin
writeln('Введите слово');
readln(s);
if s[1]='п' then k:=k+1;
end;
writeln(k);
end.
В приведенной выше программе обработка слов происходит без их последующего хранения, т.е. на каждом шаге цикла переменной s присваивается значение очередного слова и происходит сравнение первой буквы s[1] данного слова s с образцом 'п'.
Примечание. Аналогично можно определить и количество слов, заканчивающихся на ту или иную букву. В этом случае достаточно ввести некоторую промежуточную целочисленную переменную len, служащую для обозначения длины слова s и вычисляемую как length(s), после чего проводить сравнение последней буквы s[len] слова s с образцом.
Задача 2. Задан список из 8 слов. Найти самое короткое слово в списке. Если таких слов несколько, то распечатать их в один столбец.
Решение поставленной задачи сводится к нескольким этапам: ввести список слов в виде массива строковых переменных; подсчитать длину каждой строки; определить наименьшую из длин; распечатать те строки массива, длина которых совпадает с наименьшей.
Пример возможного решения поставленной задачи:
program z2;
type t=array[1..8] of string[20];
tt=array[1..8] of integer;
var s: t;
n: tt;
i, min: integer;
begin
for i:=1 to 8 do
begin
writeln('Введите слово');
readln(s[i]);
n[i]:=length(s[i]);
end;
min:=n[1];
for i:=2 to 8 do
if min>n[i] then min:=n[i];
for i:=1 to 8 do
if n[i]=min then writeln(s[i]);
end.
В данной программе для обозначения слов используется массив строковых переменных s, для обозначений соответствующих им длин слов – целочисленный массив n. Наименьший элемент массива n хранится в виде переменной min.
Задача 3. Задана строка из двух слов, разделенных пробелом. Поменять в данной строке слова местами.
Пример программы-решения задачи:
program z3;
var s: string[40];
s1,s2: string[20];
i,n: integer;
begin
writeln('Введите строку');
readln(s);
n:=length(s);
i:=pos(' ', s);
s1:=copy(s, 1, i);
s2:=copy(s, i+1, n-i);
s:=s2 + ' ' + s1;
writeln(s);
end.
В данной программе переменная s служит для обозначения строки из двух слов, переменные s1 и s2 – для обозначения первого и второго слова строки соответственно. Алгоритм решения заключается в том, что сначала с помощью оператора pos выясняется, каким по счету символом в строке s находится пробел. Далее в строке выделяются две подстроки: одна включает все символы левее пробела (первое слово), другая – правее пробела (второе слово). В конце программы слова сцепляются в обратном порядке с использованием разделяющего их пробела.
Задача 4. Пусть задана некоторая произвольная цифра. Создать программу, позволяющую вывести на экран название данной цифры в прописном виде, например, «5 – пять», «8 - восемь» и т.д.
Возможное решение задачи:
program z4;
var n:integer;
s:string[30];
begin
writeln('Введите цифру');
readln(n);
case n of
0: s:='ноль';
1: s:='один';
2: s:='два';
3: s:='три';
4: s:='четыре';
5: s:='пять';
6: s:='шесть';
7: s:='семь';
8: s:='восемь';
9: s:='девять';
else
s:=' не является цифрой';
end;
writeln(n,' - ', s);
end.
В данной программе используется оператор множественного выбора CASE, позволяющий сопоставить каждой введенной цифре ее название. При попытке ввода чисел, не являющихся цифрами, на экран выдается сообщение «не является цифрой».
Задача 5. Задан двумерный строковый массив, состоящий из 3 строк и 4 столбцов. Выяснить, сколько раз встречается латинская буква «а» в первом и последнем столбцах массива и поменять данные столбцы местами.
Пример решения задачи:
program z5;
type mas=array[1..3,1..4] of string[10];
var s: mas;
i, j, k, n_1, n_4: integer;
c: string[10];
begin
for i:=1 to 3 do
for j:=1 to 4 do
begin
writeln('Введите s[', i:2, j:2,']');
readln(s[i,j]);
end;
writeln('исходный массив');
for i:=1 to 3 do
begin
for j:=1 to 4 do write(s[i,j]:10,' ');
writeln;
end;
n_1:=0;
n_4:=0;
for i:=1 to 3 do
for k:=1 to 10 do
begin
if s[i,1][k]='a' then n_1:=n_1+1;
if s[i,4][k]='a' then n_4:=n_4+1;
end;
for i:=1 to 3 do
begin
c:=s[i,1];
s[i,1]:=s[i,4];
s[i,4]:=c;
end;
writeln('В 1-м столбце ',n_1, ' а');
writeln('В 4-м столбце ',n_4, ' а');
writeln('Полученный массив');
for i:=1 to 3 do
begin
for j:=1 to 4 do write(s[i,j]:10,' ');
writeln;
end;
end.
Здесь вспомогательная переменная с используется при перестановке местами элементов первого и четвертого столбцов; переменные n_1 и n_4 содержат количество букв «а» в первом и четвертом столбцах матрицы соответственно.