Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
П
рограммы линейной структуры
Задача.
Вычислить и вывести значение функции
y
. Исходные да
н
ные
x
,
a
и
b
должны быть введены пользователем
.
Случаи не
допустимой обл
а
сти определения функции пока можно не рассматривать.
x
b
a
b
a
y
cos
1
Ф
орма будет иметь следующий вид рис. 1:
Рис.
1
С
войства компонентов
формы
меняются
в соответствии со знач
е
ниями из
таблицы
:
Компонент
Свойство
Значение
Form
Na
m
Cation
frm
_
Z1
Задача 1
Labl
Nam
Cation
Font
Шрифт
Размер
Начертание
lbl_X
Введите х
Courir
1
жирный
для остальных меток изменения аналогичны
Eit
Nam
Txt
t_X
Пустая
строка
для остальных полей ввода
Eit
изменения аналогичны
Bu
tton
Nam
Cation
btn
_
Y
Вычислить значение функции
Ф
рагмент
кода
:
{
}
rocur Tfrm_Z1.btn_YClickSnr: TObjct;
var a,b,x,y,r : xtn;
bgin
a : StrToFloatt_A.Txt;
b : StrToFloatt_B.Txt;
x : StrToFloatt_X.Txt;
r:ab;
y:rsqrtr/cosx;
lbl_Y.Cation : FloatToStry;
n;
{
}
Лабораторн
ая работа №
1
Зада
ние
.
В
ычислить и вывести значение функции
y
. Исходные да
н
ные
x
,
a
и
b
должны быть введены пользователем
.
Случаи недопустимой обл
а
с
ти определения функции пока
можно не рассматривать.
Замечание
:
Напомним, что
при выполнении арифметических операций с
о
блюдается
следующая иерархия приоритет выполнения:
стандартные функции;
iv, mo;
,
/
,
Порядок выполнения операций можно изменять при помощи ск
о
бок.
Формула в
озведения числа в любую степень:
ln
xln
xa
x
axa
1.
1
/
sin
b
yaab
x
.
tg/ln
b
yaxba
.
1
/
sin
a
yaab
x
.
11
ln/
sin
b
yba
x
5
5.
1
/tg
b
yabax
.
tg/ln
ab
yxax
b
7.
1
/ln
cos
yabab
x
8.
1
/ln
sin
b
yab
x
9.
1
tg/ln
b
yxaab
10.
/
cos
b
a
ybab
x
11.
1
/ln
sin
yabb
x
1.
1/tg
b
yabx
1.
ctg/ln
b
yaxba
1.
1
/
cos
yabba
x
15.
1
/tg
a
yabx
1.
sin
/ln
x
yax
axb
17.
/sin
a
ybx
18.
0,5
/1cos
a
ybx
19.
/1sincos
ab
yxx
0.
0,5
/cos
b
yax
1.
sin
/ln
1
b
x
ybx
a
.
tg/ln
b
yaxba
.
1
/
sin
a
ybab
x
.
1
/ln
sin
b
yab
x
5.
/
ctg
aba
yx
b
.
1/ctg
b
yabx
7.
1
/lntg
b
yaabx
8.
1
/ln
cos
yabab
x
9.
1
/tg
b
yabax
0.
1/cos
ab
ybx
Ветвления
Задача.
Определить, принадлежит ли точка с координатами, введенными
пользователем
,
изображенн
ым
на рисунке
заштрихованным
област
ям
.
Изображение области поместить на форму
рис. :
.
Рис.
Для размещения на форме изображения, созданного в данном случае в
р
е
дакторе
Paint
, используется компонент
Imag
с закладки
Aitional
п
а
литры компонентов. Чтобы
загрузить содержимое графического файла,
необход
и
мо воспользоваться свойством
Pictur
инспектор объектов, з
а
кладка
Pro
rtis
в раскрывшемся диалоговом окне нажать на кнопку
Loa
и указать необходимое имя файла.
Фрагмент
кода:
{
}
rocur Tfrm_Z.btnRsultClickSnr: TObjct;
var x,y : xtn;
bgin
x:StrToFloattX.Txt;
y:StrToFloattY.Txt;
if x1 an x
1 an y1 an y
1
thn
lblRsult.Cation:
Точка с введенными координатами принадлежит
фигуре
ls
lblRsult.Cation: Точка с введенными координатами не
принадл
е
жит фигуре;
n;
{
}
7
8
Лабораторная работа №
Зада
ние
.
Определить, принадлежит ли точка с координатами, введенными
пользователем
,
изображенн
ым
на рисунке
заштрихованным
област
ям
.
Изображение области поместить на форму.
1.
.
.
.
5.
.
7.
8.
9.
10.
11.
1.
1.
1.
15.
1.
17.
18.
19.
0.
1.
.
.
.
9
10
5.
.
7.
8.
9.
0.
11
1
Циклы
Лабораторная работа №
Простейшие циклы
Зада
ние
.
Вычислить:
1.
1
1
i
N
i
i
.
1
1
1
i
N
i
i
.
1
1
i
N
i
i
.
1
N
i
i
ii
5.
1
N
i
i
i
.
1
1
1
N
i
i
7.
1
1
1
1
i
N
i
ii
8.
1
5
1
1
i
N
i
i
9.
0
1
N
i
i
10.
1
N
i
i
i
11.
1
i
N
i
i
1.
1
1
N
i
i
1.
1
1
1
1
i
N
i
iii
1.
1
1
1
i
N
i
i
15.
1
1
i
N
i
ii
1.
1
1
1
i
N
i
i
17.
1
N
i
i
ii
18.
1
1
1
i
N
i
ii
19.
1
1
N
i
i
i
0.
1
1
1
1
i
N
i
ii
1.
1
5
1
1
i
N
i
i
.
1
0
1
i
N
i
i
.
1
ln
i
N
i
i
.
1
cos
N
i
ii
5.
1
sin
N
i
ii
.
1
sin
1
N
i
i
i
i
7.
1
cos
1
N
i
i
i
i
8.
1
1sin
1
N
i
i
i
9.
1
1
1
N
i
i
i
0.
1
1tg
1
N
i
i
i
Задача.
Для заданных значений
и
x
вычислить сумму ряда
579
sin
!5!7!9!
xxxx
xx
,
где
1
x
.
с точностью
. Суммирование ряда заверш
ить
, если модуль оч
ередного
члена ряда не превосходит
. Предусмотр
еть
ограничение количества сл
а
гаемых ряда.
Форма будет иметь следующий вид рис.
:
Рис.
Замечание
: При решении задач, связанных с нахождением сумм
_
_
êîç
i
iàç
a
или произведений
, бывает полезно рассмотреть следу
ю
щее с
о
отношение элементов
1
i
i
a
a
. В рассматриваемой задаче
1
1
1!
ii
i
x
a
i
для
0
i
, соответственно
1
11
1
1
111!
1!1
ii
i
i
i
i
xi
a
a
ix
ii
x
. О
т
сюда
1
ii
x
aa
ii
. Далее важно определиться с начальным зн
а
чением
0
a
в нашем случае
0
ax
и проследить, чтобы порядок
накопления суммы и значения счетчика ряда менялись в нужной посл
ед
о
в
а
тельн
о
сти. Чтобы осознать значимость следования операторов, попробу
й
те поменять в теле цикла местоположение оператора
i
:
i
1
“
поднимите
”
его в начало тела цикла, сразу после слова
bgin
. Выполнив фрагмент пр
о
граммы пошагово лучше сделать это на б
умаге, вы убед
и
тесь, что общий
1
1
член ряда будет видоизменен
уже при
1
i
вы получите
5
x
a
вместо
необходимого
x
a
.
Фрагмент
кода
:
{
}
rocur
Tfrm
_
Z
.
btnOKClick
Snr
:
TObjct;
var sum, x, s, a, mnog : xtn;
i, m_o: Wor;
bgin
x:StrToFloatt_X.Txt;
s:StrToFloatt_s.Txt;
m_o:StrToIntt_m_o.Txt;
i: 0;
{к
оличество членов ряда}
a: x;
{ a
первый член ряда }
Sum: a;
{ Sum
первая частичная сумма ряда }
whil absa s an im_o o
bgin
mnog:
xx/i/i;
a: amnog;
Sum:
Suma;
i: i1;
n;
mm_Rsult.Visibl:tru;
mm_Rsult.Clar;
if im_o
thn
bgin mm_Rsult.Lins.A
Контрольное
значение
функции
sinx
FloatToStrFsinx,ffGnral,1,8;
mm_Rsult.Lins.A
Приближенное
значение
функции
FloatToStrFSum,ffGnral,1,8;
mm_Rsult.Lins.Aпри количестве членов ряда
IntToStri;
n
ls
bgin mm_Rsult.Lins.AКоличе
ство членов ряда превосходит
максимально допустимое;
mm_Rsult.Lins.AТребуемая точность вычислений не
достигнута;
n;
n;
{
}
Лабораторная работа
№
Вы
числение суммы ряда
Зада
ние
.
Для заданных значений
0
и
x
вычислить сумму ряда с точн
о
стью
. Суммирование ряда завершить, если модуль очередн
о
го члена
ряда не превосходит
. Предусмотреть ограничение количества слагаемых
р
я
да.
Значение параметра
m
, входящего в некоторые варианты,
предост
а
вить
вводит
ь
пользователю
.
Приложением должен быть также предусмотрен ввод
значений
только из
ук
азанного диап
о
зона.
1.
8
cos1...
!!!8!
xxxx
x
,
||1
x
.
.
5
ln1...
5
xxxx
xx
,
||1
x
.
.
579
11
ln...
1579
xxxxx
x
x
,
||1
x
.
.
11
11...
!!
m
mmmmm
xmxxx
,
||1
x
,
0
m
.
5.
11
11...
!!
m
mmmmm
xmxxx
,
||1
x
,
0
m
.
.
11
11...
!!
m
mmmmm
xmxxx
,
||1
x
,
0
m
.
7.
11
11...
!!
m
mmmmm
xmxxx
,
||1
x
,
0
m
.
15
1
8.
579
arctg...
579
xxxx
xx
,
||1
x
.
9.
579
arcctg...
579
xxxx
xx
,
||1
x
.
10.
1111
ln...
xxxx
x
x
xxx
,
1
x
.
11.
5
ln1...
5
xxxx
xx
,
||1
x
.
1.
1
1...
1
xxxx
x
,
||1
x
.
1.
1
1...
1
xxx
x
,
||1
x
.
1.
1
1...
1
xxx
x
,
||1
x
.
15.
1111
ln...
1
xxxx
x
,
0
x
.
1.
1...
1!!!!
x
xxxx
,
01
x
.
17.
8
1...
!!!8!
xx
xxxx
,
01
x
.
18.
579
...
579
xx
xxxx
x
,
01
x
.
19.
lnlnln
1...
1!!!
x
xxx
,
01
x
.
0.
1...
1!!!!
x
xxxx
,
01
x
.
1.
8
ch1...
!!!8!
xxxx
x
,
||
x
.
.
5
sh...
1!!5!
xxx
x
,
||
x
.
.
lnlnln
1...
1!!!
x
xxx
,
||
x
.
Целочисленная арифметика
Задача
. Даны натуральные числа
n
и
k
. Проверить, есть ли в записи чи
с
ла
k
n
цифра
m
.
Форма имеет следующий вид рис. :
Рис
.
Фрагмент
кода
:
{
}
rocur Tfrm_Z.bBtn_OKClickSnr: TObjct;
var N,k,m,i,z:Byt;
,_ish:Longwor;
f:Boolan ;
bgin
N:StrToIntt_N.Txt;
k:StrToIntt_k.Txt;
m:StrToIntt_m.Txt;
:N;
for i: to k o :N;
{
накопление
степени
}
_
ish
:
;
{
дублируем
полученное
N
в степени
k
}
f
:
f
als
;
{
f
флажок», его значение
изначально
ложн
о в предполож
е
нии, что
цифр
а
m
не входит в запись
N
в степени
k
}
whil 0 o
bgin
z: mo 10;
if
z
m
{если цифра
z
совпала с
m
}
thn bgin
f
:
tru
;
{флажок» получает значение истина»}
:0
{обнуляем р, чтобы не продолжать цикл}
n;
: iv 10;
n;
if f
17
18
thn lbl_Rsult.Cation:
Цифра
t_m.Txt
вс
тречается
в
записи
числа
IntToStr
_
ish
ls lbl_Rsult.Cation:
Цифра
t_m.Txt
не
встречается
в
записи
числа
IntToStr
_
ish
;
n;
{
}
Замечание
: При решении задач по те
ме
“
распаковка целых ч
и
сел
”
также
можно ра
бот
ать
с
числа
ми, представленными
как строки символов. Но при
выполнении лабораторной работы №5 необходимо использовать
вышеи
з
ложенный
п
одход
.
Лабораторная работа №
5
1.
Дано натуральное число. Найти сумму первой и
последней цифры
этого числа.
.
Дано натуральное число п. Переставить местами первую и после
д
нюю цифры этого числа.
.
Даны два натуральных числа
n
и
m
n
9999,
m
9999. Про
верить, есть ли в записи числа
n
цифры, совпадающие с цифра
ми
в записи числа
m
.
.
Дано натуральное число
n
. Проверить, есть ли в записи числа три
одинак
о
вых циф
ры
n
9999.
5.
Дано натуральное число
n
99. Дописать к нему цифру
k
в конец
и в нач
а
ло.
.
Среди всех
n
значных чисел указать те, сумма цифр которых ра
в
н
а да
н
ному числу
k
.
7.
Найти наибольшую и наименьшую цифры в записи данного нат
у
рального числа.
8.
Найти на отрезке
n
,
m
натуральное число, имеющее наи
большее
количество делителей.
9.
Да
но натуральное число
N.
Найти и вывести все числа в интерв
а
ле
от 1 до
N
1
, у которых сумма всех цифр совпадает с суммой цифр
данного числа.
Пример. N
. Числа: 17, , 5
.
10.
Дано натуральное число
N.
Найти и вывести все числа в интерв
а
ле
от 1 до
N
1
, у ко
торых произведение всех цифр со
впадает с суммой
цифр данного числа.
Пример. N .
Числа: 18,
11.
Дано натуральное число
N.
Найти и вывести все числа в интерв
а
ле
от 1 до
N
1
, у которых произведение всех цифр со
впадает с суммой
цифр данного числа.
Пример.
N .
Числа: 18, .
1.
Дано натуральное число
N.
Найти наибольшее число
М М
1, на
которое сумма цифр в цифровой записи числа
N
делит
ся без оста
т
ка.
При
мер. N1
5,
М
5. Сумма цифр числа
N
,
равная 15, д
е
лится на 5.
1.
Дано натуральное число
N.
Найти н
аименьшее число
М
N
M
N
,
которое делится на сумму цифр числа
N
без остат
ка.
Пример.
N
1 5,
М
1 0. Число 1 0 делится на число 15
сумму
цифр числа
N.
1.
Дано натуральное число
N
N
9. Определить количество нулей,
идущих подряд в младших
разрядах данного числа.
Пример. N
1
00 000. Количество нулей равно четырем.
15.
Дано натуральное число
N
N
9. Определить количество н
у
лей в
цифровой записи числа, кроме нулей в младших разрядах.
Пример.
N10
05 000. Количество нулей равно двум.
1.
Дано на
туральное число
N
N
9. Определить сумму цифр в пе
р
вой половине числа старшие разряды. Если число содержит н
е
четное количество цифр, “среднюю” цифру отнести к старшим
разрядам.
Пример. N
1 57. Сумма составляет 1
10.
17.
Дано натуральное
число
N
N
9. Определить сумму цифр во вт
о
рой половине числа младшие разряды. Если число содержит н
е
четное количество цифр, “среднюю” цифру отнести к старшим
разрядам.
Пример. N
1 57. Сумма составляет 5 7 18.
18.
Дано натуральное число
N.
Есл
и число содержит цифры, то пол
у
чить новое число
М,
которое образуется путем переста
новки пе
р
вой
и последней цифр данного числа. Если количество цифр не , то
М N. Пр
и
мер.
N
—
1,
М
1.
19.
Дано натуральное число
N.
Если число содержит 5 цифр, то пол
у
чит
ь новое число
М,
которое образуется путем исключения средней
цифры исходного числа. Если количество цифр не 5, то
М
N.
Пример.
N
15,
М
15.
0.
Дано натуральное число
п.
Проверить, будут ли все цифры числа
различными.
1.
Дано натуральное число
п п99
999
.
Поменять порядок следов
а
ния цифр в этом числе на обратный.
.
Найти все делители натурального числа
п.
.
Натуральное число
М
называется совершенным, если оно равно
сумме всех своих делителей, включая 1, но исключая себя. Напеч
а
тать все совершенные числа меньш
ие заданного числа
N.
19
0
.
Даны натуральные числа
п, т.
Найти все натуральные числа мен
ь
шие
п
, квадрат суммы цифр которых равен
т.
5.
На отрезке ,
п
определить число с максимальной суммой делит
е
лей.
.
Дано натуральное число
N.
Определить количество цифр в цифр
о
во
й записи данного числа, которые имеют наименьшее зна
чение.
Пример.
N
58. Количество цифр с наименьшим значени
ем ра
в
но двум две цифры .
7.
Дано натуральное число
N.
Определить количество цифр в цифр
о
вой записи данного числа, которые имеют наибольшее зн
а
чение.
Пример.
N
1808. Количество цифр с наибольшим значени
ем ра
в
но двум две цифры 8.
8.
Дано натуральное число
N.
Получить новое число
М,
кото
рое обр
а
зуется из числа
N
путем замены последней цифры на значение
наименьшей цифры в записи числа
N. Пример.
N
18 5,
М
19
51.
9.
Дано натуральное число
N.
Получить новое число
М,
кото
рое обр
а
зуется из числа
N
путем замены последней цифры на значение
на
и
большей цифры в записи числа
N. Пример.
N
18 5,
М
18
58.
0.
Определить количество
М
значных натуральн
ых чисел, у которых
сумма цифр, стоящих в нечетных разрядах, равна
N
1
N
0,
0
M
5.
Одномерные массивы
Задача.
Из вещественного массива
,
,...
,
1
N
c
c
c
C
удалить все числа,
превыщающие среднее арифметическое элементов
ма
с
сива.
Форма будет иметь следующий вид рис.
5
:
Рис
.
5
Фрагмент
кода
:
{
}
rocur Tfrm_ZX.btn_ZXClickSnr: TObjct;
const
N 10;
var
C : array 1..N of singl;
S : singl;
, i, j : intgr;
str : string;
bgin
ranomiz;
str : ;
S : 0.0;
for i : 1 to N o
bgin
Ci : ranom 5
ranom51;
S : S Ci;
str : str FloatToStrFCi, ffFix, 7, ;
n;
S :
S / N;
lbl_Mas.Cation : str;
lbl_M.Cation : FloatToStrFS, ffFix, 7, ;
: 0;
i : 1;
whil i N
o
bgin
if Ci S
thn
bgin
: 1;
for j : i to N
o
C
j
:
C
j
1;
{
сдвиг элементов массива на
о
д
ну позицию вправо}
n
{
thn
}
ls
i : i 1;
n;
{ whil }
str : ;
for i : 1 to N
o
str : str FloatToStrFCi, ffFix, 7, ;
lbl_Rz.Cati
on : str;
n;
{
}
1
Лабораторная работа №
1.
В массив
N
A
занесены натуральные числа. Найти сумму тех
эл
е
ментов, которые кратны данному
K
.
.
В целочисле
нной последовательности есть нулевые элементы. С
о
з
дать ма
с
сив из номеров этих элементов.
.
Дана последовательность целых чисел
N
1
...,
,
,
a
a
a
. Выяснить, к
а
кое число встречается раньше
—
положительное или отрицател
ь
ное.
.
Дана последовательность дейст
вительных чисел
N
1
...,
,
,
a
a
a
. В
ы
яснить, будет ли она возрастающей.
5.
Дана последовательность натуральных чисел
N
1
...,
,
,
a
a
a
. Создать
массив из четных чисел этой последовательности. Если таких ч
и
сел нет, то вывести сообщение об этом факте
.
.
Дана последовательность чисел
N
1
...,
,
,
a
a
a
. Указать наимен
ь
шую
длину числовой оси, содержащую все эти числа.
7.
Дана последовательность действительных чисел
N
1
...,
,
,
a
a
a
. Зам
е
нить все ее члены, большие данного
Z
,
этим числом. Подсчитать
количество замен.
8.
Последовательность действительных чисел оканчивается нулем.
Найти к
о
личество членов этой последовательности.
9.
Дан массив действительных чисел, размерность которого
N
. По
д
считать, сколько в нем
отрицательных, положительных и нулевых
элементов.
10.
Даны действительные числа
N
1
...,
,
,
a
a
a
. Поменять местами
на
и
больший и наименьший элементы.
11.
Даны целые числа
N
1
...,
,
,
a
a
a
. Вывести на печать только те числа,
для к
о
торых
i
a
i
.
1.
Даны натуральные числа
N
1
...,
,
,
a
a
a
. Указать те из них, у кот
о
рых
остаток от деления на
M
равен
1
0
M
L
L
.
1.
В заданном одномерном массиве поменять местами соседние эл
е
менты, стоящие на четных местах, с
элементами, стоящими на н
е
четных местах.
1.
При поступлении в вуз абитуриенты, получившие двойку на пе
р
вом
экзамене, ко второму не допускаются. В массиве
N
A
запис
а
ны
оценки экзаменующихся, полученные на первом экзамене. Подсч
и
тать, сколь
ко человек не допущено ко второму экзамену.
15.
Дана последовательность чисел, среди которых имеется один нуль.
Вывести на печать все числа до нуля включительно.
1.
В одномерном массиве размещены: в первых элементах
—
знач
е
ния аргумента, в следующих
—
соответству
ющие им значения
функции. Напечатать элементы этого массива в виде двух пара
л
лельных столбцов арг
у
мент и значения функции.
17.
Пригодность детали оценивается по размеру
B
, который должен
соотве
т
ствовать интервалу
A
A
,
. Определить, имеются ли
в партии из
N
деталей бракованные. Если да, то подсчитать их
к
о
личество, в противном случае выдать отрицательный ответ.
18.
У вас есть доллары. Вы хотите обменять их на рубли. Есть инфо
р
мация о стоимости купли
про
дажи в банках города. В городе
N
банков. Составьте программу, определяющую, какой банк выбрать,
чтобы выгодно обменять доллары на рубли.
19.
Дан целочисленный массив с количеством элементов
N
. Напеч
а
тать те его элеме
нты, индексы которых являются степенями дво
й
ки
...
,
1
,
8
,
,
,
1
.
0.
Задана последовательность из
N
вещественных чисел. Опред
е
лить, скол
ь
ко среди них чисел меньших
K
, равных
K
и больших
K
.
1.
Задана последовательность
N
вещественных чисел. В
ы
числить
1
N
M
X
S
i
i
, где
M
—
среднее арифметическое данной п
о
следов
а
тельности.
.
Задан
массив
var a: array
1. .
N
of 0 .
.
9
;
.
Определить, вх
о
дит ли в него последовательность символов 1, если да, то скол
ь
ко раз и с каких позиций
N
.
.
Задан массив действительных чисел. Определить, сколько раз м
е
няется знак в данной последовательности чисел, запомни
ть номера
позиций, в которых происходит смена знака.
.
Задана последовательность
N
вещественных чисел. Вычислить
сумму чисел, порядковые номера которых являются простыми чи
с
лами.
5.
Задана последовательность
N
веществ
енных чисел. Вычислить
сумму чисел, порядковые номера которых являются числами
Ф
и
боначчи.
.
Задана последовательность
N
вещественных чисел. Вычислить
значение выражения
N
N
x
x
x
...
1
.
7.
Задана последовательность
N
целых чисел. Вычислить сумму
элементов массива, порядковые номера которых совпадают со зн
а
чением этого эл
е
мента.
8.
Заполнить массив из
N
элементов с начальным значением зада
н
ным
0
0
A
, по принципу
1
iv
i
A
i
A
i
A
.
9.
Определить количество элементов последовательности натурал
ь
ных чисел, кратных числу
M
и заключенных в промежутке от
L
до
N
.
0.
Определить, сколько процентов от всего количества элеме
нтов п
о
следов
а
тельности целых чисел составляют нечетные элементы.
5
Двум
ерные массивы
Задача.
Получить квадратную матрицу
nn
:
1 00
1 00
00 1
Форма будет иметь следующий вид рис. :
Рис
.
Фрагмент
кода
:
{
}
rocur Tfrm_Z.bBtnOKClickSnr: TObjct;
var i,j,n:byt;
bgin
sgrRsult.Visibl:Tru;
n:StrToInttDim.Txt;
sgrRsult.ColCount:n;
sgrRsult.RowCount:n;
fo
r i:0 to n
1 o
for j:0 to n
1 o
sgrRsult.Cllsi,j:0;
for i:0 to n
1 o
sgrRsult.Cllsi,i:1;
for i:0 to n
1 o
bgin
sgrRsult.Cllsi1,i:;
{
над
главной
диагональю
}
sgrRsult.Cllsi,i1:;
{
под
главной
диагональю
}
n;
n;
{
}
Лабораторная работа № 7
Пре
о
бразо
вание
и построение
ма
с
сивов
Зада
ние
.
Сформирова
ть квадратную матрицу
nn
по заданному обра
з
цу
в пунктах 1
1
:
1.
1
11
1
11
11
n
nnn
n
nnn
nnn
.
0001
000
0100
000
n
n
.
000
0100
000
0001
n
n
.
1000
000
0010
0001
nn
nn
5.
1111
1001
1001
11111
.
1111
0
1100
000
nn
n
7.
1111
0110
0110
11111
8.
100001
110010
110011
100001
7
8
9.
00 0
10 0
0
11
n
nn
n
nn
10.
11
0
100
000
nn
n
nn
n
11.
100
010
010
100
n
n
n
n
1.
11
11
1
11
11
nn
nn
nn
nnn
nnn
1.
11!1!1!
11!1!1!
11!1!1!
nnn
n
n
n
1.
100
010
100
n
n
n
15.
1
1
1
n
nnnn
nnnn
nnnn
1.
1001
0110
0110
10001
17.
Построить квадратную матрицу порядка
n
111
111
111
n
n
n
n
Зада
ние
.
Дана
действительная квадратная матрица порядка
n
заполнить
случайным образом из диапазона
5;5
.
Найти наибольшее из знач
е
ний элементов, расположенных в з
аштрихованной ча
с
ти матрицы
в пун
к
тах 18
7:
18.
19.
0.
1.
.
.
.
5.
.
7.
8.
Составить программу, которая заполняет квадратную мат
рицу п
о
рядка
n
натуральными числами
1, , ,,
n
, записывая их в нее по
спир
али. Н
а
пример, для
n
получаем:
1
89
75
9.
Дана действительная квадратная матрица порядка л. Полу
чить н
о
вую матрицу, переставляя ее блоки размера лхл крест
накрест.
0.
Магическим
квадратом порядка
п
называется квадратная матрица
размера
пхп,
составленная из чисел
1, , ,,
n
так, что суммы по
каждому столбцу, каждой строке и каждой из двух боль
ших диагон
а
лей равны между собой. Построить такой квадрат. Пример магич
е
ского квадрата п
о
рядка :
18
75
9
Лабораторная работа №
8
Операции с элементами масс
и
вов
1.
Вычислить сумму и число положительных элементов матри
цы
A
порядка
n
,
находящихся над главной ди
а
гональю.
9
0
.
Дана матрица
А
размером
nm
. Определить
k
—
количество ос
о
бых эл
ементов массива
А,
считая его элемент особым, если он
больше суммы остальных элеме
н
тов его столбца.
.
Задана квадратная матрица. Поменять местами строку с мак
симальным элементом на главной диагонали со строкой с задан
ным ном
е
ром
т.
.
Дана матрица
B
размером
nm
.
Найти в каждой строке матрицы
мак
симальный и минимальный элементы и поменять их местами с
пе
р
вым и последним элементом строки соответственно.
5.
Дана целая квадратная матрица порядка
n
. Определить, является
ли она магическим квад
ратом, т.е. такой, в которой сум
мы эл
е
ме
н
тов во всех строках и столбцах одинаковы.
.
Элемент матрицы назовем
седловой точкой,
если он является
на
и
меньшим в своей строке и одновременно наибольшим в своем
столбце или, наоборот, является наибольшим в своей стр
оке и
на
и
меньшим в своем столбце. Для заданной целой матрицы раз
мером
nm
напечатать индексы всех ее седловых точек.
7.
Дана матрица размером
nm
.
Переставляя ее строки и столб
цы,
добиться того, чтобы наибольши
й элемент или один из них ок
а
зался в верхнем левом углу.
8.
Определить, является ли заданная целая квадратная матрица
n
го
порядка симметричной относительно главной диагонали.
9.
Дана целочисленная квадратная матрица
порядка
n
. Найти в ка
ж
дой стро
ке наиболь
ший элемент и поменять его местами с элеме
н
том глав
ной диагон
а
ли.
10.
Задана матрица размером
nm
.
Найти максимальный по мо
дулю
элемент матрицы. Переставить строки и столбцы матрицы таким
образом, чтобы максимальный по модулю элемент
был расположен
на пересечении
k
й
строки и
k
го столбца.
11.
Дана квадратная матрица
A
порядка
n
.
Записать на м
е
сто отри
цательных элементов матрицы нули, а на место положительных
—
единицы.
1.
Дана действительная матрица размером
nm
,
все элементы кот
о
рой различны. В каждой строке выбирае
т
ся элемент с наи
меньшим
значением, затем среди этих чисел выбирается наиболь
шее. Ук
а
зать индексы элемента с найденным значением.
1.
Дана действительная квадратная матрица порядка
N
N
—
нече
т
ное, все э
лементы которой различны. На
й
ти наибольший элемент
среди стоящих на главной и побочной диагоналях и по
менять его
местами с эл
е
ментом, стоящим на пересечении этих диагоналей.
1.
Для заданной квадратной матрицы сформировать одномер
ный
ма
с
сив из ее диагональны
х элементов. На
й
ти след матрицы, су
м
мируя элементы одномерного ма
с
сива. Преобразовать исход
ную
матрицу по правилу: четные строки разделить на полученное зн
а
чение, н
е
четные оставить без изменения.
15.
Задана квадратная матрица. Получить транспонированную матр
и
цу.
1.
Заданы матрица порядка
п
и число
k
.
Разделить элементы
k
й
стр
о
ки на диагональный элемент, распол
о
женный в этой строке.
17.
Для целочисленной квадратной матрицы найти число эле
ментов,
кратных
k
,
и наибольший из них.
18.
Найти наибольший и наименьший элементы
прямоуголь
ной ма
т
рицы и поменять их местами.
19.
Дана прямоугольная матрица. Найти строку с наибольшей и
на
и
меньшей суммой элементов. Вывести найденные стро
ки и су
м
мы их элементов.
0.
В данной действительной квадратной матрице порядка
п
найти
сумму элементов ст
роки, в которой расп
о
ложен элемент с наи
меньшим значением. Предполагается, что такой элемент един
ствен
ен
.
1.
В данной действительной квадратной матрице порядка
п
найти
наибольший по модулю элемент. Получить квадратную матрицу
порядка
п
1
путем отбрасывани
я в исходной матрице строки и
столбца, на пересечении которых расположен элемент с найден
ным
значением.
.
Дана действительная квадратная матрица порядка
п.
Преоб
разовать матрицу по следующему правилу: строку с номером
п
сделать столбцом с номером
п,
а стол
бец с номером
п
строкой с
номером
п.
.
Пусть дана действительная матрица размером
nm
.
Требует
ся
преобразовать матрицу следующим образом: поэлементно вы
честь
после
д
нюю строку из всех строк, кроме последней.
.
Определить номера тех с
трок целочисленной матрицы
A
N
,
K
,
к
о
торые совпадают с массивом
D
K
.
Если таких строк нет, выдать
соответс
т
вующее сообщение.
5.
Определить наименьший элемент каждой четной строки матрицы
АМ,
N
.
1
.
Определить номера строк матрицы
R
M
,
N
,
хотя бы один эл
е
мент
которых равен
C
, и элементы этих строк умножить на
.
7.
Матрица
A
N
,
M
М
кратно разделена по вертикали на две п
о
ловины. Определить сумму элементов каждого столбца ле
вой п
о
ловины и сумму элементов каждого четного столбца пра
вой пол
о
пол
о
вины матрицы
А.
8.
Опр
еделить, является ли заданная матрица орт
о
нормированной, т.
е. равно ли скалярное произведение каждой пары раз
личных строк
стол
б
цов нулю.
9.
Определить среднее арифметическое элементов, лежащих на пер
е
сечении строк, номера которых кратны
R
,
и столбцов, ном
ера к
о
т
о
рых кратны
S
.
0.
Определить номера строк матрицы, в которых знаки эле
ментов ч
е
редуются.
Строки символов
Задача.
Выделить слова, содержащиеся в тексте, введенном пользоват
е
лем.
Текстом
будем называть последовательность
слов
, разделенных л
ю
бым
коли
чеством "
разделителей
". Слова
это последовательн
о
сти
букв языка
,
"
разделители
"
любые символы, не являющиеся буквами.
Т
екст в о
б
щем
случае имеет вид :
X
X
...
X
где
X
слово,
"
разделитель
".
Можно предложить следующий алгоритм расп
а
ковки:
1 уд
алим завершающие пробелы, после чего текст примет
регуля
р
ный
вид
X
X
...
X
;
удалим лидирующие пробелы;
текст примет вид
X
X
...
X
;
выделим первое слово и удалим его из текста.
После выполнения пунктов и мы получили одно слово и текст стал к
о
ро
че на одно слово, сохранив при этом свою структуру. Очевидно, что
пункты и следует выполнять до тех пор, пока текст
не пуст
.
В качестве букв языка будем рассматривать буквы русского и ан
г
лийского
алфавитов. Любой другой символ будет являться разделител
ем.
Форма будет иметь следующий вид рис. 7:
Рис
.
7
Фрагмент
кода
:
{
}
rocur Tfrm_Z8.BBtn_OKClickSnr: TObjct;
const Lttrs : st of Char
a..z,A..Z,А..Я,а..я
;
var s : string;
i : Byt;
bgin
s: tInut.Txt;
if s
thn
bgin
ShowMssag
текст
не
введен
;
Exit;
n;
whil notsLngths in Lttrs o
D
lt
s
,
Lngth
s
,1;
{ удалим завершающие пробелы }
mmRsult.Lins.A
Слова
текста
:;
whil s o
{цикл выделения отдельных слов}
bgin
whil nots1 in Lttrs o
Dlt
s
,1,1;
{
удалим
лидиру
ю
щие
п
робелы
}
{ найдем границу первого слова }
i
:1;
whil si in Lttrs an iLngths o
inc
i
;
{
i
номер
первого
разделителя }
Dci;
mmRsult.Lins.ACoys,1,i;
{
выведем
слово
}
Dlts,1,i;
{ удалим слово из текста }
n;
n;
{
}
Напомним
несколько стандартных функций и процедур, которые м
о
гут
пригодиться при работе со строками символов:
fun
ction
Lngth
S
:
String
:
Intgr
;
возвращает
длину
строки
.
function
Pos
Substr
:
String
;
S
:
String
:
Byt
;
возвращает номер
первого слева символа строки
S
, начиная с которого строка
Substr
вх
о
дит в
S
, если
Substr
не входит в
S
, то значение функции равно
0.
function
Coy
S
:
String
;
Inx
:
Intgr
;
Count
:
Intgr
:
String
;
воз
вращает подстроку строки
S
, которая начинается с символа с номером
Inx
и имеет длину
Count
.
rocur
Dlt
VAR
S
:
String
;
Inx
:
Intgr
;
Count
:
Intgr
;
удаляет из строки
S
подстроку, начинающуюся с символа с номером
Inx
и
име
ю
щую длину
Count
.
rocur
Insrt
Substr
:
String
;
VAR
S
:
String
;
Inx
:
Intgr
;
вставляет в строку
S
подстроку
Substr
начиная с символа с номером
Inx
.
rocur
Val
S
:
STRING
;
VAR
V
;
VAR
Co
:
In
tg
r
;
преобр
а
з
у
ет строку
S
в число
V
если это возможно;
V
любая переменная арифм
е
тического типа, переменная
Co
возвращает 0, если преобразование
прошло успешно, или номер первого неправильного символа строки.
Лабораторная работа №
9
Обработка по
следовательностей символов
1.
Дана строка, содержащая текст. Найти длину самого корот
кого и
самого длинного слова.
.
Дана строка символов, среди которых есть двоеточие :. Оп
ределить, сколько символов ему предшествует.
.
Дана строка. Преобразовать ее, удалив к
аждый символ и повт
о
рив каждый символ, отличный от .
.
Дана строка. Подсчитать количество букв
к в
последнем ее слове.
5.
Дана строка. Подсчитать, сколько различных символов встре
чается
в ней. Вывести их на экран.
.
Дана строка. Подсчитать самую длинную после
довательность по
д
ряд идущих букв
а.
7.
Дана строка символов, среди которых есть одна откр
ы
ваю
щаяся и
одна закрывающаяся скобка. Вывести на экран все сим
волы, ра
с
положенные внутри этих скобок.
8.
Имеется строка, содержащая буквы латинского алфавита и цифры.
Выв
ести на экран длину наибольшей последовательности цифр,
идущих подряд.
9.
Дан набор слов, разделенных точкой с запятой ;. Набор заканч
и
вается двоеточием :. Определить, сколько в нем слов, заканч
и
в
а
ющихся буквой
а.
10.
Дана строка. Найти в ней те слова, которы
е начинаются и оканч
и
ваются одной и той же буквой.
11.
Дана строка. Преобразовать ее, заменив точками все двоето
чия :,
встречающиеся среди первых
n
/
символов, и зам
е
нив точками все
восклицательные знаки, встречающиеся среди сим
волов, стоящих
после
n
/
сим
волов.
1.
Строка содержит одно слово. Проверить, будет ли оно чи
таться
одинаково справа налево и слева направо т.е. является ли оно п
а
линдромом.
1.
В записке слова зашифрованы
—
каждое из них записано наоб
о
рот. Расшифровать сообщение.
1.
Проверить, одинаковое ли
число открывающихся и з
а
кры
вающихся скобок в данной строке.
15.
Строка, содержащая произвольный русский текст, состоит не более
чем из 00 символов. Написать, какие буквы и сколько раз встр
е
чаются в этом тексте. Ответ должен прив
о
диться в грамма
тически
прав
ильной форме, например
а
—
5 раз,
к
—
раза и т.д.
1.
Даны две строки
А и В.
Составьте программу, проверяю
щую, мо
ж
но ли из букв, входящих в
А,
составить
В
буквы можно использ
о
вать не более одного раза и можно переставлять.
Например,
А
ИНТЕГРАЛ;
В
АГЕНТ
—
составить можно;
В
ГРАФ
—
составить нельзя.
17.
Двумерный
массив
пхт
содержит некоторые буквы рус
ского алф
а
вита, расположенные в произвольном порядке. На
писать програ
м
му, проверяющую, можно ли из этих букв со
ставить данное слово
S
.
Каждая буква массива
используе
т
ся не более одного раза.
18.
Результаты вступительных экзаменов представлены в виде списка
из
N
строк, в каждой строке которого записаны ф
а
милия студента и
отметки по каждому из
М
экзаменов
через пробел
. Определить к
о
ли
чество абитуриентов, сдавших в
ступительные экзамены только
на отли
ч
но».
5
19.
Составить программу преобразования натуральных чисел, за
писанных в римской нумерации, в десятичную систему счи
с
ления.
0.
Из заданной символьной строки выбрать те символы, кото
рые
встречаются в ней только один раз,
в том порядке, в котором они
встречаются в тексте.
1.
В символьном массиве хранятся фамилии и инициалы уче
ников
класса. Требуется напечатать список класса с указанием для ка
ж
д
о
го ученика количества его однофамильцев.
.
Для заданного текста определить длину сод
ержащейся в нем ма
к
симальной серии символов, отличных от букв.
.
Расстояние между двумя словами равной длины
—
это к
о
личе
ство
позиций, в которых различаются эти слова. В з
а
данном пред
ложении найти пару слов заданной длины с максимальным рас
стоянием.
.
Напеч
атать те слова, которые встречаются в каждом из двух зада
н
ных предложений.
5.
Отредактировать заданное предложение, удаляя из него все слова с
нечетными номерами и переворачивая слова с четными н
о
мерами.
.
Шифрация.
Один из методов шифрации называется наложе
ни
ем
гаммы. Делается это следующим образом: берется некоторое сл
у
чайное число в диапазоне от
17
до 55
—
гамма, и код каждо
го
символа строки заменяется кодом, получающимся в результате
операции:
новый кодстарый код
XOR
гамма
.
Написать программу, реализую
щую:
а данный метод шифрации;
б дешифрацию строки при заданной гамме.
Входные да
н
ные: шифруемая строка. Выходные данные:
• гамма;
• зашифрованная строка.
7.
Тэг курсива.
Дан текст, в котором встречаются структуры
i
и
/
i
. Заменить каждое вхождение
i
на курсив, а каждое вхо
ж
дение /
i
на конец курсива.
Замечание.
В про
грамме следует
учесть, что буква
i
может быть как строчной, так и пропи
с
ной.
8.
Форматирование текста.
Дан текст, состоящий из пред
ложений,
разделяемых точками. Напишите программу, п
роиз
водящую сл
е
дующее форматирование: после каждой точки в конце предлож
е
ния должен стоять хотя бы один пробел; первое слово в
предложении должно начинаться с прописной буквы.
9.
Частота появления букв в словах.
Дан текст, содержащий слова,
разделенные проб
елами. Определить, ка
кие буквы в словах совп
а
дают чаще: первые, последние или средние. Позиция средней бу
к
вы в слове определяется по фор
муле:
поз_средн_буквыдлина_слова
iv
1
0.
Лишние пробелы.
Дана строка, состоящая из слов, разделен
ных
пробелами. Н
апишите программу, удаляющую лишние про
белы.
Пробел считается лишним, если он:
• стоит в начале строки;
• стоит в конце строки;
• следует за пробелом.
Подпрограммы
Занимаясь разработкой учебных проектов в среде программипрв
а
ния
D
l
hi
, мы привыкли к авт
оматическому созданию средой подпр
о
грамм
обработчиков событий. Например, создание
процедуры
обработчика по
нажатию на кнопку
Button
, расположенн
ую
на форм
е
–
самая распростр
а
ненная ситуация для студенческих проектов
. Теперь вернемся к разр
а
ботке
так назы
ваемых пользовательских подпр
о
грамм.
Подпрограммы
процедуры и функции
можно определить как замкнутые
программные единицы, реализующие некоторый алгоритм. Ра
з
работка
функций и процедур необходима при многократном использовании в ра
з
ных местах программы
или в нескольких программах блока операт
о
ров,
выполняющих однотипные действия, например, расчет значений сложной
функции при различных знач
е
ниях аргумента.
Для иллюстрации возможностей работы с подпрограммами ра
с
смотрим
задачу, разобранную при рассмотр
ении темы
“
Строки символов
”
Выд
е
лить слова, содержащиеся в тексте, введенном пользоватлем.. Реал
и
зуем
решение, используя функции и процедуры:
{
}
rocur
Tfrm
_
Z
8.
BBtn
_
OKClick
Snr
:
TObj
ct
;
const Lttrs : st of Char
a..z,A..Z,А..Я,а..я
;
var s : string;
i : Byt;
{процедура удаления завершающих пробелов}
rocur
l
_
tail
var
s
:
string
;
bgin
7
8
whil notslngths in lttrsans o
lts,ln
gths,1;
n; {l_tail}
{процедура удаления лидирующих пробелов}
rocur l_havar s:string;
bgin
whil nots1 in lttrs o
lts,1,1;
n; {l_ha}
{
функция
выделения
отдельного
слова
}
function makwors:string; var boun:
byt:string;
bgin boun:1;
whil sboun in lttrsanbounlngths o
incboun;
cboun;
makwor:coys,1,i;
n; {makwor}
rocur Tfrm_Z8.BBtn_OKClickSnr: TObjct;
const Lttrs : st of Char
a..z,A..Z,А..Я,а..я
;
var s : string;
i : Byt;
bgin
s: tInut.Txt;
if s
thn
bgin
ShowMssag
текст
не
введен
;
Exit;
n;
l_tails;
whil
s
o
{ организуем цикл по словам }
bgin
l_has;
mmRsult.Lins.A
makwors,i;
lt
s
,1,
i
;{ удаление слова из текста }
n
;
Лабораторная работа №
10
Использование подпрограмм
1.
Даны де
йствительные числа
s
,
t
. Получить
,,1.17.,,
ftsftst
,
где
sin
,,,
5||
abc
fabc
c
.
.
Даны действительные числа
s
,
t
. Получить
1.,,1,
gsgtsgsst
,
где
,
ab
gab
aabb
.
Даны действительные числа
a
,
b
,
c
. Получить
max,max,
1max,1,15
aababc
abc
.
.
Даны действительные числа
a
,
b
. Получить
max,
uab
,
min,
vabab
,
min,.1
uv
.
5.
Даны действительные числа
s
,
t
. Получить
,max,,,1,1
hsthststhststh
,
где
,
11
ab
habab
ba
.
.
Даны действительные числа
0
,...,
aa
. Получить дл
я
зн
а
чения
1
xx
, где
5
50
...
yayaya
.
7.
Даны действительные числа
s
,
t
,
01
,...,
aa
. Получить
11
tst
, где
111
1110
...
yaxaxa
.
8.
Даны действительные числа
1
x
,
1
y
,
x
,
y
, …,
10
x
,
10
y
. Найти п
е
риметр десятиугольника, вершины которого соответственно коо
р
9
0
динаты
11
,
xy
,
,
xy
, …,
1010
,
xy
. Определить процедуру в
ы
числения расстояния между двумя точками, заданными своими к
о
ординатами.
9.
Дано натуральное число
n
, действительные числа
1
x
,
1
y
,
x
,
y
,
…,
n
x
,
n
y
. Найти площадь
n
угольника, вершины которого при
некотором посл
едовательном обходе имеют координаты
11
,
xy
,
,
xy
, …,
,
nn
xy
. Определить процедуру вычисления площади
треугольника по координатам его вершин.
10.
Дано четное число
n
; пр
оверить для этого числа гипотезу
Гольдбаха. Эта гипотеза по сегодняшний день не опровергнута и
полностью не доказана заключается в том, что каждое четное
n
,
большее двух, представляется в виде суммы двух простых чисел.
Определить пр
оцедуру, позволяющую распознавать простые числа.
11.
Дано натуральное число
n
. Выяснить, имеются ли среди чисел
n
,
1
n
, …,
n
близнецы, т.е. простые числа, разность ме
жду кот
о
рыми равна двум. Определить процедуру, позволяющую распозн
а
вать простые числа.
1.
Дано натуральное число
n
. Среди чисел 1, , …,
n
найти все те,
которые можно представить в виде суммы квадратов двух нат
у
раль
ных числе. Определить процедуру, позволяющую распознавать
полные квадраты.
1.
Даны натуральные числа
n
,
m
; найти
,
ÍÎÄnm
. Используя пр
о
грамму, включающую рекурсивную процедуру вычисления
ÍÎÄ
,
основанную на соотношении
,,
ÍÎÄnmÍÎÄmr
, где
r
–
о
с
таток от деления
n
на
m
. Чем эта программа хуже нерекурси
в
ной программы вычисления
,
ÍÎÄnm
?
1.
Даны натуральные числа
a
,
c
,
m
. Получить
fm
, где
,åëè 09,
1, â ïðîèâî ëóàå.
nn
fn
gnfngnn
Использовать программу, включающую рекурсивную процедуру
вычисления
fn
.
15.
Даны неотрицательные целые числа
n
,
m
; вычислить
,
Anm
, где
1,åëè 0,
,1,1åëè 0,0,
1,,1åëè 0, 0
mn
AnmAnnm
AnAnmnm
Э
то функция Аккермана.
Использовать программу, включающую
рекурсивную пр
о
цедуру.
1.
Два натуральных числа называются дружественными», если ка
ж
дое из них равно сумме всех делителей другого, за исключением
его самого таковы, например, числа 0 и 8. Напечатать все
п
а
ры
“
дружественных
”
чисел, не превосходящих зад
анного нат
у
рального числа.
17.
Даны координаты вершин двух треугольников. Определить, какой
из них имеет большую площадь.
18.
Даны координаты вершин треугольника и координаты некоторой
точки внутри него. Найти расстояние от данной точки до ближа
й
шей стороны треуго
льника. При определении расстояний учесть,
что площадь треугольника может вычисляться разными способами
через три его стороны или через основание и высоту.
19.
Три прямые на плоскости заданы уравнениями
kkk
axbyc
1,,
k
. Если эти прямые попарно пересекаются и образуют
треугольник, найти его площадь.
0.
Даны коэффициенты многочленов
Px
и
Qx
15
й степени и д
а
но вещественное число
a
. Вычислить величи
ну
1.
PaQaPa
Текстовые файлы
Текстовые файлы являются последовательными файлами доступ к их эл
е
ментам может быть получен лишь последовательно от начала до ко
н
ца
файла.
Для работы с текстовым файлом в программе следует описать
файл
о
в
ую
переменную
типа
txtfil
:
var
f
:
txtfil
;
которая называется
дескриптором
файла. В дескрипторе хранится
указ
а
тель файла
, который похож на курсор в текстовом редакторе. Как и курсор,
указатель файла обозначает текущую позицию в открытом текстовом фа
й
л
е. В режиме чтения информации из файла указатель файла определяет
следующий элемент данных, который будет считан из файла. В реж
и
ме
записи указатель файла определяет позицию, в которую будет записан сл
е
дующий элемент данных.
1
Описав дескриптор файла, необх
одимо связать или
инициализировать
файл, т.е. установить связь файловой переменной с файлом на диске проц
е
дурой
1.
AssignFil
var
f
:
txtfil
;
Nam
:
String
,
где
Nam
правильно п
о
строенное имя файла, существующего или вновь создаваемого. Если файл
находи
тся не в текущей папке
в той, где хранится ваша программа, в
Nam
должено быть указано полное имя файла, включая имя диска и всех
папок.
После этого для доступа к файлу выполняется
открытие файла
одной из
трех процедур:
.
Rst
var
f
:
txt
открывает
файл для чтения.
.
Rwrit
var
f
:
txt
открывает файл для записи.
.
An
var
f
:
txt
открывает файл для записи в конец файла.
Процедуры
r
st
и
a
n
выполняются только для существующих фа
й
лов,
процедура
r
writ
для любых файлов, но если файл су
ществует, он будет
уничтожен и создан заново. Чтение из файла и запись в файл выпо
л
няются
процедурами
raln
и
writln
, но перед списком ввода или вывода зад
а
ется файловая переменная:
5.
Ra
lnvar
f
:txt
;
список
ввода
.
.
Writ
lnvar
f
:txt
;
списо
к
вывода
.
Для те
к
стовых файлов определены четыре логические функции:
7.
Eoln
var
f
:
txt
:
b
oolan
возвращает
tru
, если при чтении дости
г
нут конец строки.
8.
E
of
var
f
:
txt
:
b
oolan
возвращает
tru
, если при чтении дости
г
нут конец файла.
9.
S
koln
va
r
f
:
txt
:
b
oolan
возвращает
tru
, если в строке бол
ь
ше нет ничего, кроме пробелов.
10.
S
kof
var
f
:
txt
:
b
oolan
возвращает
tru
, если в фа
й
ле нет
больше ничего, кроме пробелов.
Функция
oln
пригодится вам, если вы читаете из текстового файла
симв
о
л
ы
; функция
of
если вы ч
и
таете
символы
или
строки
, а функции
skoln
и
skof
необходимы при вводе
чисел
из текстового файла.
Задача.
Р
азработать приложение, имитирующее работу простейшего реда
к
тора. Предоставить возможность создавать, открывать, с
о
хр
анять файлы
через главное меню, а также выводить информацию о программе.
Форма будет иметь вид:
Рис.
8
Разместим на форме и изменим некоторые свойства следующих компоне
н
тов:
Компонент
Свойс
т
во
Значение
Form
Nam
Cation
frmSimlEitor
Простой редактор
OnDialog
комп
о
нент
закладки
Di
a
logs
Nam
lgOnFil
SavDialog
комп
о
нент
закладки
Di
a
logs
Nam
lg
Sav
Fil
Labl
Nam
Cation
lblCommnt
Введите текст и затем выбер
и
те
Fil
Sav
Mmo
Nam
Lins
Scro
l
l
Bars
mmOutut
Пустая строка
ssBoth
MainMnu
Nam
Itms
MMnuEitor
см ниже
При р
абот
е
с компонентом
MainMnu
MMnuEitor
н
еобходимо активиз
и
ровать свойство
Itms
; с
оздать пункт главного меню
Fil
, изменив для него
свойства
Nam
muiFil
и
Cation
Fil
, затем в расположенных ниже ко
н
турных окошках п
о
очередно ввести подпункты главного меню:
Nam
Cation
mu1Nw
Nw
mu1On
On
mu1Lin1
mu1Sav
Sav
mu1Lin
mu1Exit
Exit
Далее создать пункт главного меню
Hl
, изменив для него свойс
т
ва
Nam
muiHl
и
Cation
Hl
. У него будет лишь один подпункт
About...
Nam
muAbout
и
Cation
About...
С
озда
дим
обработчики событий по выбору определенного пункта меню.
rocur TfrmSimlEitor.mu1OnClickSnr: TObjct;
var
f: T
xtFil;
fNam, buf: String;
bgin
lblCommnt.Visibl:Fals;
MmOutPut.Clar;
MmOutPut.Visibl:Tru;
if not lgOnFil.Excut //
если выбор файла в диалоговом
//
окне не произведен
thn
xit
;//
завершает выполне
ние процедуры и передает
// управление в точку вызова
fNam
:
lgOnFil
.
FilNam
;
// имя файла
frmSimlEitor.Cation : fNam;
AssignFilf, fNam;
// инициализация файла
try
//
try
...
xct
служит для обработки исключений
Rstf;
xct
on EInOutError o
// в случае ошибки ввода
вывода
bgin
ShowMssag
Ошибка доступа к файлу
fNam;
xit;
n;
n;
whil not EOFf o
bg
in
ralnf, buf;
MmOutPut.Lins.Abuf;
n;
ClosFilf;
n;
rocur TfrmSimlEitor.mu1SavClickSnr: TObjct;
var
f: TxtFil;
fNam: String;
i: intgr;
bgin
lblCommnt.Visibl:Fals;
if not lg
SavFil.Excut
//
если
выбор
файла
в
диалоговом
// окне не произведен
thn
xit
;
fNam : lgSavFil.FilNam;
AssignFilf, fNam;
Rwritf;
for i:0 to mmOutut.Lins.Count o
writlnf, mmOutut.Lins
i;
ClosFilf;
MssagDlgДанные ЗАПИСАНЫ в файл ,mtInformation,mbOk,0;
n;
rocur TfrmSimlEitor.muAboutClickSnr: TObjct;
bgin
lblCommnt.Visibl:Fals;
Alication.MssagBoxЭто простой редактор, версия 0.01,
О программе...,
MB
_
OK
;
n;
rocur TfrmSimlEitor.mu1NwClickSnr: TObjct;
bgin
MmOutPut.Visibl:Tru;
lblCommnt.Visibl:Tru;
n;
rocur TfrmSimlEitor.mu1ExitClickSnr: TObjct;
bgin
Halt
;
// завершение работы приложения
5
n
;
Лабораторная работа №
1
1
Работа с текстовыми файлами
Разработать приложение, решающее поставленную задачу. Предоставить
в
зависимости от задания
возможность создавать, открывать, сохранять
фа
й
лы через главн
ое меню, а также выводить инфо
р
мацию о программе:
1.
Дан файл, содержащий текст, записанный строчными рус
скими
буквами. Получить в другом файле тот же текст, записан
ный з
а
главными буквами.
.
Дан файл, содержащий произвольный текст. Выяснить, чего в нем
больш
е: русских букв или цифр.
.
Дан файл, содержащий текст на русском языке. Выяснить, вхо
дит
ли данное слово в указанный текст, и если да, то сколько раз.
.
Дан файл, содержащий текст на русском языке. В предложе
ниях
некоторые из слов записаны подряд несколько
раз предло
жение
заканчивается точкой или восклицательным знаком. По
лучить в
новом файле отредактированный текст, в котором удале
ны повто
р
ные вхождения слов в предложение.
5.
Дан файл, содержащий текст, набранный заглавными рус
скими
буквами. Провести ча
стотный анализ текста, т. е. указать в пр
о
центах, сколько раз встречается та или иная буква.
.
Дан файл, содержащий текст на русском языке. Определить, скол
ь
ко раз встречается в нем самое длинное слово.
7.
Дан файл, содержащий произвольный текст. Проверить, п
ра
вильно
ли в нем расставлены круглые скобки т. е. находится ли правее
каждой открывающейся скобки закрывающаяся и левее закрыв
а
ю
щейся
—
открывающаяся.
8.
Дан файл, содержащий текст на русском языке. Составить в ал
фавитном порядке список всех слов, встреч
ающихся в этом те
к
сте.
9.
Дан файл, содержащий текст на русском языке. Определить, скол
ь
ко раз встречается в нем самое короткое слово.
10.
Дан файл, содержащий текст на русском языке и некоторые два
слова. Определить, сколько раз они встречаются в тексте и скольк
о
из них
—
непосредственно друг за другом.
11.
Дан файл, содержащий текст на русском языке. Выбрать из него те
символы, которые встречаются в нем только один раз, в том п
о
ря
д
ке, в котором они встречаются в тексте.
1.
Дан файл, содержащий текст и арифметические в
ыражения вида
ab
, где
один из знаков ,
, , /. Выписать все арифметич
е
ские выражения и вычислить их значения.
1.
Даны файл, содержащий текст на русском языке, и неко
торые бу
к
вы. Найти слово, содержащее
наибольшее количество указанных
букв.
1.
Даны файл, содержащий текст на русском языке, и неко
торая бу
к
ва. Подсчитать, сколько слов начинается с указанной буквы.
15.
Дан файл, содержащий текст на русском языке. Найти слово,
встречающееся в каждом предложении,
или сообщить, что такого
слова нет.
1.
Дан файл, содержащий текст, включающий русские и ан
глийские
слова. Подсчитать, каких букв в тексте больше
—
рус
ских или л
а
тинских.
17.
Дан файл, содержащий текст, включающий в себя рус
ские и а
н
г
лийские слова. Получить нов
ый файл, заменив в ис
ходном все з
а
главные буквы строчными и наоборот.
18.
Дан файл, содержащий зашифрованный русский текст. Каждая
б
у
ква заменяется на следующую за ней буква
я
заме
няется на
а
.
П
о
лучить в новом файле расшифровку данного текста.
19.
Даны два тек
стовых файла
1
f
и
f
. Файл
1
f
содержит произвол
ь
ный текст. Слова в тексте разделены пробелами и знаками преп
и
нания. Файл
f
содержит не более 0 слов, ко
то
рые разделены
запятыми. Эти слова образуют пары: каждое второе является син
о
нимом первого. Заменить в файле
1
f
те слова, которые можно, их
синоним
а
ми. Результат поместить в новый файл.
0.
Дан текстовый файл. Удалить из него все лишние
пробелы, о
с
т
а
вив между словами не более одного пробела. Результат поме
стить в
новый файл.
1.
Даны текстовый файл и некоторое слово. Напечатать те строки
файла, которые содержат данное слово.
.
Дан текстовый файл. Напечатать в алфавитном порядке все слова
из д
анного файла, имеющие заданную длину
n
.
.
Текстовый файл содержит запись многочлена некоторой сте
пени с
одной переменной
x
, коэффициенты многочлена
—
целые. Напр
и
мер,
5^^15^
xxx
. Указать ст
епень многочлена, его
коэффициенты. Дописать в указанный файл таблицу значений эт
о
го многочлена на данном отрезке
,
ab
.
7
8
.
Дан файл, содержащий текст на русском языке. Подсчи
тать кол
и
чество слов, начинающихся и заканчивающихся на одну
и ту же
букву.
Записи
Задача.
Разработать приложение, о
пределяющую дату за
в
трашнего дня.
Чтобы определить дату завтрашнего дня, надо знать не только дату сег
о
дняшнего дня, но и число дней данного месяца так как если это п
о
следний
день месяца, то завтра б
удет первый день следующего, кроме т
о
го, надо
знать, високосный
год или нет от этого зависит число дней фе
в
раля.
Заметим, что
если это не последний день месяца, то завтра будет тот же
год, тот же месяц, а число увеличится на 1
. Е
сли это последний день
мес
я
ца, то
если это не декабрь, то завтра будет тот же год, но первое число сл
е
дую
щего месяца;
если это декабрь, то завтра наступит следующий год,
первый месяц и первое число.
Форма будет иметь вид:
Рис.9
Фрагмент
кода
:
{
}
ty yar1500..000;
month1..1;
ay1..1;
ataRcor
y: yar;
m: month;
: ay;
En; {ata}
function
La
yy
:
yar
:
boolan
;
{функция, определяющая, високосный
год
или нет}
bgin
{год называется високосным, если его номер делится на , но если
это год столетия, то номер столетия не делится на , то есть не д
е
ли
т
ся на 00}
La:yy mo 0 an yy mo 00 0;
n;
{La}
function
Dmonth
mm
:
month
;
yy
:
ya
r
:
ay
;
{функция определения колич
е
с
т
ва дней данного месяца в данном году}
bgin
cas mm of
1,,5,7,8,10,1: Dmonth:1;
,,9,11: Dmonth:0;
: if Layy thn Dmonth:9 ls Dmonth:8;
n;
n;
{Dmonth}
rocur Tomorrowt: ata; var n:
ata;
{процедура определения
завтрашней даты}
bgin
{если это не последний день месяца}
if t.Dmontht.m, t.y
thn
with n o
bgin
:t.1;
m:t.m;
y:t.y;
n
ls
{если это п
оследний день месяца}
if t.m1
thn {если это декабрь}
with n o bgin :1; m:1; y:t.y1; n
ls {если это не декабрь}
with n o bgin :1; m:t.m1; y:t.y; n;
n;
{Tomorrow}
rocur T
Form1.BitBtn1ClickSnr: TObjct;
var
at, nxt: ata;
bgin
9
50
lblRsult.Cation:;
at.:StrToIntt_Day.Txt;
at.m:StrToIntt_Month.Txt;
at.y:StrToIntt_Yar.Txt;
Tomorrowat,nxt;
lblRsult.Catio
n:Завтра будет IntToStrnxt..
IntToStrnxt.m.IntToStrnxt.y;
n;
{
}
Лабораторная работа №
1
Записи
1.
Распечатать список
студентов
, фамилии которых начинаю
тся на
указанную пользователем
букву, с указанием даты их рождения.
.
Из данного списка спортсменов
предоставить
сведения о тех из
них, кто занимается плаванием. Указать возраст, сколько лет они
занимаю
т
ся спортом.
.
Вычислить средний балл
студентов группы
, е
сли известны оценки
каждого
студент
а по математи
ч
е
скому анализу
,
алгебре
и
ин
о
странному языку
.
Вывести
список
студентов
, имеющих средний
балл выше среднего в
групп
е.
.
Распечатать фамилии
сотрудников фирмы
, начинающиеся с букв
ы,
указанной пользователем. Пред
оставить сведения об
их месячной
зарплат
е
.
5.
Из ассортимента конфет, выпускаемых кондитерс
кой фабрикой,
выбрать те, стоимость которых
находится в диапазоне, указанном
пользователем например, от 50 до 100р за 1 кг
. Указать срок
хр
а
нения
.
.
Распечатать список
учеников музыкальной школы,
занимающихся
по классу скрипки
. Указать также, сколько лет они занима
ются м
у
зыкой и принимали ли участие в каких
либо конку
р
сах.
7.
Среди работников данного предприятия найти тех, чья заработ
ная
плата за месяц ниже средней по пр
едприятию, а также
вывести
сп
и
сок тех, кто проработал на предприятии более 10 лет, с ука
занием их фам
и
лии, зарплаты, стажа работы и должности.
8.
Распечатать фамилии
студентов группы
, которые не получили ни
одной тройки за последнюю
сессию
. Каков их средний
балл?
9.
Распечатать фамилии детей данного детского сада, которые род
и
лись в определенном месяце; указать их возраст и группу.
10.
Распечатать список тех учителей школы, которые препода
ют мат
е
матику и информатику, указать стаж их работы и недель
ную
н
а
грузку.
11.
Ра
спечатать анкетные данные
студентов
, участвовавших в оли
м
пиаде по
мате
матике и
набр
авших не менее
50%
.
1.
Распечатать фамилии тех
студентов
группы
, которые являют
ся х
о
рошистами и отличниками. Также указать, насколько их средний
балл отличается от среднего ба
лла
группы
.
1.
По данным сведениям об
студентах
группы
определить сред
нюю
массу
юношей
и средний рост дев
уш
ек. Кто из
студентов
группы
самый высокий?
1.
Дан
фрагмент
результат
ов
переписи населения. Напечатать фам
и
лии, имена и подсчитать общее число жителей, род
ившихся после
1990 г.
15.
До момента принема в ВУЗы по результатам ЕГЭ, при
поступл
е
нии в
институты
лица, получившие оценку неудовлетворительно»
на первом экзамене, ко второму экзамену не допуска
лись
. Считая
ф
а
милии абитуриентов и их оценки после первого экза
мена исхо
д
н
ы
ми данными, составить список абиту
риентов, допущенных ко
второму э
к
замену.
1.
Составить программу назначения стипендии студентам по резул
ь
татам сессии, используя следующие правила:
1 если все оценки 5, назначается повышенная стипендия;
если
все оценки и 5, назначается обычная стипендия;
если есть оценка , стипендия не назначается.
В результате работы программы должен быть напечатан список
группы с оценками и средним баллом каждого студента и два сп
и
с
ка фамилий назначенных на повышенн
ую и обычную стипе
н
дию.
17.
В таблице хранятся следующие данные об
студен
ах: фами
лия, имя,
отчество, рост. Вычислить средний рост
студентов
, рост самого в
ы
сокого и самого низкого
студент
а. Сколько
студентов
могут з
а
н
и
маться в баскетбольной секции, если рост
баскетболиста до
л
жен
быть больше 170 см?
18.
На аптечном складе хранятся лекарства. Сведения о лекар
ствах с
о
держатся в специальной ведомости: наименование лекар
ственного
препарата; количество; цена;
дата производства;
срок хранения в
меся
цах. Выяснить, ск
олько стоит самый дорогой и самый деш
е
вый препарат; сколько препаратов хранится на складе; какие пр
е
параты имеют срок хранения более месяцев; сколько стоят все
пре
параты, хранящиеся на складе.
51
5
19.
В столовой предлагается
N
комплексных обедов, состоящих из
Q
блюд. Известна стоимость и калорийность каждого блюда. Сколько
стоит самый дешевый и самый дорогой обед? Сколько к
а
лорий
включает в себя самое калорийное блюдо?
0.
Торговый склад производит уценку хранящейся продукции. Если
продукция хранится на складе дольш
е
n
месяцев, то она уце
нивается в раза, а если срок хранения превысил
m
m
n
меся
цев, но не достиг
n
, то
—
в 1,5 раза. Ведомость уценки товаров
должна содержать следующую информацию: наименование това
ра,
количество товара, цена товара до уценки, ср
ок хранения това
ра,
цена товара после уценки, общая стоимость товара до уценки, о
б
щая стоимость товаров после уценки. Выяснить максимальный и
мин
и
мальный сроки хранения товаров на складе; максимальную и
м
и
нимальную цену товаров до уценки и после уценки.
1.
N
спортсменов
многоборцев принимают участие в соревно
ваниях
по
М
видам спорта. По каждому виду спорта спортсмен набирает
определенное количество очков. Вычислить, сколько очков в су
м
ме
набрал каждый спортсмен после окончания сорев
нований. В
ы
чи
с
лить разниц
у в очках для спортсменов, занявших первое и после
д
нее места.
.
N
студентов
проходили тестирование, выполнив
М
тестов по как
о
му
либо предмету. Сколько очков набрал каждый
студент
по всем
темам? Вычислить средний балл, полученный
студент
ами, и ра
з
н
и
цу между л
учшим результатом и средним баллом.
.
Описать переменную
служащий
, состоящую из имени, фа
милии,
отчества служащего, даты рождения, образования, до
машнего а
д
реса, профессии. Определить имена людей с высшим образован
и
ем. Выдать данные о служащем, который име
ет ту или иную
профессию.
.
Описать переменную
круг
, в которой содержатся все дан
ные для
построения круга в декартовой системе координат.
а Определить координаты центра, радиус, площадь и длину
окружн
о
сти круга минимального радиуса, который будет содер
жа
ть внутри себя все заданные круги.
б Рассматривая окружности попарно, определить координа
ты
точек пересечения или точки касания для каждой пары, либо
вывести соо
б
щение об отсутствии общих точек.
5.
Описать переменную
экзаменационная ведомость
пред
мет, н
о
мер группы, номер зачетной книжки, фамилия, имя, от
чество ст
у
дента, его оценки по итогам текущей сессии. Опреде
лить отличн
и
ков, хорошистов, троечников и двоечников.
.
Создать записи, определяющие положение точки в декарто
вой и в
полярной системах координ
ат. Считая, что задан массив коорд
и
нат
точек в декартовой системе координат, получить соответс
т
вующий
массив координат заданных точек в полярной сис
теме координат.
7.
Задан массив квадратных трехчленов, где каждый трехчлен имеет
комплексные коэффициенты. Сфо
рмировать массив кор
ней тре
х
членов. Сформировать массив значений трехчленов в точке
õi
.
8.
Дан массив записей, содержащих дату число, месяц, год и время
час, минута, секунда. Упорядочить этот массив в поряд
ке во
з
растания», т.е.
от более ранних значений к более поздним.
9.
Описать переменную
расписание
, содержащую
день недели
,
кол
и
чество пар в этот день, время начала и конца пары,
название пре
д
мета,
фамилию преподавателя.
Вывести полную информацию о
занятиях, относящихся к пред
метн
ой области
Математический
анализ
».
0.
В библиотеке имеются книги, газеты, журналы. Для каждого п
е
чатного изда
ния указать название,
год выпуска для книги
или
д
а
ту выпуска для газет и журналов
,
автора для книги
или
состав
редколле
гии
для газет
и
журна
л
ов,
объем.
Вывести информацию
об изданиях, вышедших в заданном году.
5
5
Список литературы:
1.
Коробчинская О.Г., Файрузов М.Э. Программирование в
Dlhi
.
Разработка ко
н
сольных приложений учебное пособие.
РИО
БашГУ
, 00
8.
108с.
.
Коробчинская О.Г., Файруз
ов М.Э., Коробчи
н
ский А.В., Манапова
А.Р. Программирование в
Dlhi
. Разработка приложений
Wi
n
ows
учебное пособие.
РИО
БашГУ, 0
10.
98с.
.
Культин Н.Б.
Dlhi
в задачах и примерах.
СПб.: БХВ
Петербург, 00.
88с.:ил.
.
Митчелл К. Керман Программир
ование и отладка в
Dlhi
.
Уче
б
ный курс. : Пер. с англ.
–
М. : Издательский дом Вильямс», 00,
7с.
5.
Могилев
А.В.
, Пак
Н.И.
, Хеннер
Е.К.
Практикум по информат
и
ке:
Учеб.
пособие для студ. высш.
учеб.
заведений.
М.: Издательский
центр Академия», 005.
08с.
.
Семакин И.Г., Шестаков А.П. Основы программирования. Уче
б
ник.
М.: Мастерство, 00.
с.
Оглавление
Лабораторная работа №1. Программы линейной структуры
Лабораторная работа №. Ветвления
Лабораторная работа №. Простейшие циклы
9
Ла
бораторная работа №. Вычисление суммы ряда
1
Лабораторная работа №5. Целочисленная арифметика
15
Лабораторная работа №. Одномерные массивы
18
Лабораторная работа №7. Преобразование и построение массивов
Лабораторная работа №8. Операции с элемент
ами массивов
Лабораторная работа №9. Обработка последовательностей символов
9
Лабораторная работа №10. Использование подпрограмм
Лабораторная работа №11. Работа с текстовыми файлами
0
Лабораторная работа №1. Записи
Список литературы
8