- •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;
Задача 6-3. В
вектореXрасположить
элементы в порядке убывания их значений.Алгоритм реализуется
при помощи д
program
P6_3; begin write('n=');
readln(n); for
i:=1 to n do x[i]:=i; for
i:=1 to n-1 do for
j:=i+1 to n do if x[i]<x[j] then begin
m:=x[i]; x[i]:=x[j]; x[j]:=m end; for
i:=1 to n do write(x[i],’ ‘); end.Var I,j,n,m: integer;
X:array [1..10] of integer;
при i=1 – 2,1,3,4; 3,1,2,4; 4,1,2,3; приi=2 – 4,2,1,3; 4,3,1,2; приi=3 – 4,3,2,1.
Здесь для обмена значений элементов x[i]↔x[j]вводится специальная “транзитная” переменная М для временного хранения данных. Действительно, если использовать только операторыx[i]:=x[j]; x[j]:=x[i]мы получим неверный результат. Хотя х[i] и примет значение х[j], операторx[j]:=x[i] ничего не изменит, ведь х[i] теперь равен х[j]. С тем, чтобы не потерять исходное значение х[i], оно запоминается в переменной М.
Задание. Сортировка выбором. Рассмотренный алгоритм очень прост для программирования, но содержит лишние действия. Очевидно, нет необходимости делать обмен элементов всякий раз, когда встретился больший элемент. На самом деле это нужно выполнить только единожды для максимального элемента. Напишите такую программу.
Задание. Сортировка обменом. Метод заключается в анализе соседних элементов массива. Если х[i]<х[i+1] элементы меняются местами. По достижении конца массива в нижней клетке окажется самое маленькое значение. Затем процесс повторяется, но уже без последнего элемента и т.д. Такой просмотр вектора нужно выполнитьNраз. Однако его можно сократить, если зафиксировать факт прекращения обменов.
Задание. Пусть имеется таблица работников цеха со столбцами: Имя, Бригада, Отработано дней, Зарплата. Отсортировать любым методом таблицу по возрастанию значений столбца “Отработано дней”.
Задание. Отсортировать ту же таблицу так, чтобы сначала люди в ней располагались по размеру зарплаты, а затем по числу отработанных дней. Иными словами работники, имеющие одинаковую зарплату должны идти в порядке количества отработанных ими дней.
Задание. Отсортировать таблицу по номерам бригад. Подвести итоги для каждой бригады (число работников, число дней, суммарная зарплата) и для всего цеха целиком.
Задача 6-4. Заполнить двумерный массивA(N,N) элементами натурального ряда (т.е. числами 1,2,3, и т.д.), начиная с нижнего правого угла в направлении, показанном пунктиром на рис. 6-4а. Чтобы выявить необходимые законы перемещения по матрице, в ее клетках показаны индексы элементов. Способов решения таких такого рода задач может быть несколько. Заметим, что в зависимости от того, с какой стороны матрицы мы находимся, нам необходимо совершать следующие движения:
если вы находитесь у правой стороны матрицы, типовое движение это вверх на одну клетку и вниз-влево по диагонали до нижней границы;
если у нижней границы, то влево на одну клетку и вверх-вправо по диагонали до правой границы;
у верхней границы – влево на одну клетку и вниз-влево до левой границы;
у левой границы – вверх на одну клетку и вверх-вправо до правой границы.
В
любом случае движение прекращается при
достижении клеткиA(1,1).
Результат заполнения массива А показан
на рис. 6-4б. Программа приведена ниже.
Здесь ST – номер текущей строки
(первоначально N, поскольку движение
начинается с последней ячейки массива
A(N,N)), KL – номер текущей колонки
(первоначально N), K – растущее значение
натурального ряда (первоначально
1). Самый внешний цикл (while
k<n*n)
ограничивает все действия достижением
растущим значением натурального ряда
K значения N*N, поскольку именно столько
клеток имеется в квадратной матрице
размерности N. Внутри цикла организованы
четыре разные группы операций в
зависимости от того, какое из четырех
типовых элементарных действий (см. выше)
выполняется. Определяет тип действия
оператор if/else
if, в котором
выясняется, где именно вы находитесь.
Внутри каждого IF
организован цикл while,
в котором осуществляются необходимые
перемещения в матрице в соответствии
с одним из четырех алгоритмов. По
завершении всех действий, т.е. после
достижения последней клетки (в нашем
случае A(1,1)),
выполняется последовательная печать
строк матрицы A
с заполненными клетками.
program P6-4;
uses crt;
