- •1. Введение
- •2. Операторы языка
- •Var Описание переменных;
- •3. Организация ветвлений
- •4. Логические функции
- •5. Организация циклов
- •Оператор цикла с предусловием имеет вид
- •Var I,j:integer; X,y,r:real;
- •Program p5_8;
- •Var y,X,z: integer;
- •6. Массивы
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,n,m: integer;
- •X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer;
- •7. Символьные данные
- •Var n:integer;y:string;
- •Var X:string[1]; d:string; I:integer;
- •8. Записи
- •Var X:vr; y:array [1..5] of vr;
- •9. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Initgraph(d,m,''); {переход в графику}
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
З
program
P6-2; begin readln(n);
{число вкладов (до 10)} for
i:=1 to n do; for j:=1 to 4 do begin {ввод
сведений
о
вкладах} write('введите
остаток по вкладу номер', i,'за', j
,'квартал'); readln(x[i,j]); end; s:=0; writeln('
Счет № Остатки по кварталам'); writeln('
I II III IV ВСЕГО'); for
i:=1
to
n
do
begin
{вычисление
годового остатка}
y:=(x[i,1]+x[i,2]+x[i,3]+x[i,4])/4;
{средний
остаток} if
y<=5000 then y:=1.1*y; if
(y>5000) and (y<=10000) then y:=1.15*y; if
y>10000 then y:=1.2*y;
x[i,5]:=x[i,4]+y;
{остаток
вклада с начислениями}
writeln(i,x[i,1],x[i,2],x[i,3],x[i,4],x[i,5]); s:=s+x[i,5]; end; sr:=s/n; writeln('Сумма
всех вкладов в банке = ',s); writeln('Средний
вклад = ',sr); end.Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
Задание. В векторе Х сдвинуть по кольцу его содержимое на 1 клетку. На 2 клетки. На К клеток. Подсказка. Здесь понадобится вспомогательный массивY, куда и будем заносить уже сдвинутые данные.
З
адание.
Пусть имеется таблица, содержащая
сведения о работниках бригады: Имя,
Отработано дней, Зарплата. Известна
также сумма, которую заработала бригадаS. Рассчитать зарплату
для каждого работника. Усложним задачу.
Пусть зарплата увеличивается на 10% тем,
кто отработал больше 20-ти дней (при
прежнемS). Во всех случаях
сумма всех зарплат работников должна
быть в точности равнаS.
Задание. Запрограммировать процесс выбора в детской считалке. Пусть нужно выбрать случайным образом дежурного из группы вMчеловек. Дети становятся в круг и “считаются” по следующему правилу. Из круга по часовой стрелке удаляется каждый третий (шаг выбораN) участник, начиная с номера 1. В конце останется только один – дежурный. Для (см. рисунок) примераM=8,N=3. Тогда последовательно из круга выйдут номера 1,4,7,3,8,6. Наконец останутся только номера 2 и 5 и счет продолжается уже между ними 2→5→2. Таким образом, “повезло” номеру 5. Задания решить двумя способами, указанными ниже. В программе вывести номера всех выбывающих элементов и номер дежурного.
Алгоритм 1.Создается массив Х длиной в несколько раз больше чемM. Обозначим его размерностьMM(в программе задайте ММ=30). Первые егоMэлементов заполняются последовательными числами от 1 доM. Остальные элементы отM+1 доMMостаются пока пустыми (=0). СтроитсяFOR-цикл перебора всех элементовX. В нем, если номер элементаIминус 1 кратенN, этот номер (он подчеркнут) печатается и человек выбывает. Если нет, элемент переносится в правый конец занятой части массива Х (в первую свободную клетку). Если встретился элемент =0, значит произошла обработка всех чисел и процесс прекращается. На рисунке показана динамика изменения массива Х. Первоначально в нем заняты только клетки с 1 по 8. Цифры 1,4,7 печатаются, а остальное (2,3,5,6,8) последовательно переносится в свободную область Х, из которой печатаются цифры 3 и 8 и т.д. пока не будут выведены все цифры. После 22-ой ячейки остаются ещеMM-22 пустых клеток. Их просматривать не нужно и для этого в цикле должен быть предусмотрен выход приX[i]=0.

-
Х
1
2
3
4
5
6
7
8
2
3
5
6
8
2
5
6
2
5
2
5
5
5
дальше нули
1
4
7
3
8
6
2
5
выбывание
i:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Алгоритм 2.Возможен и другой алгоритм, заключающийся в том, что, как и в жизни, мы будем ходить по кругу из элементов массива Х размерностиM. Каждый раз, когда человек выбывает, мы печатаем его номер и (чтобы не забыть, что он выбыл) заменяем содержимое соответствующей ячейки на 0. Здесь введем переменные:I=1 – номер каждого элемента в круге,J=1 – номер только не удаленного элемента (клетки, содержащие 0 игнорируются),L=0 число уже отобранных клеток.
1). Организуем хождение по кругу. Строим WHILE-цикл в котором переменнаяIменяется от 1 доM(т.е 1..M, 1..M, и т.д.). В циклеI=I+1 всегда иJ=J+1 – только для непустых клеток.
2). Внутри цикла, каждый раз, когда Jстановится кратнымK, ячейка Х(J) печатается и очищается Х[I]=0,L=L+1.
3). Вычисления прекращаются при L=M.
Сортировки в массиве. Сортировка данных является очень распространенной задачей и для нее имеется несколько методов.
