- •1. Введение
- •2. Простейшие операторы языка
- •3. Организация ветвлений
- •4. Логические функции
- •5. Организация циклов
- •Var X,I: integer;
- •Var X,y,I: integer;
- •Операторы итерационных циклов. Их несколько типов. Оператор цикла с предусловием имеет вид
- •С помощью этого оператора гораздо проще решить пример 5-2 (program p5_2n). Оператор цикла с постусловием:
- •6. Массивы
- •Var X,z: array [1..8] of real;
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,m,n: integer; X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer; a:array [1..10,1..10] of integer;
- •7. Символьные данные
- •Var X:string[1]; d:string; I:integer;
- •Var X,n1,n2,k:integer; st,pr:string;
- •8. Графика
- •9. Подпрограммы
- •10. Записи
- •Var X:vr; y:array [1..5] of vr;
- •11. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •X,y:real;
- •X,y:real; I:integer;
- •Im: string[4];
- •I: integer;
- •Im: string[4];
- •I: integer;
Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
begin
readln(n); {число вкладов (до 10)}
for i:=1 to n do; for j:=1 to 4 do begin {ввод вкладов}
write('введите остаток по вкладу N', 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.05*y;
if (y>5000) and (y<=10000) then y:=1.1*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.
Данные о вкладах хранятся в массиве X из N строк и пяти столбцов. Первые четыре элемента каждой i-ой строки (X[i,1], X[i,2], X[i,3], X[i,4]), хранят остатки вклада на конец каждого из четырех кварталов года. В последний, пятый элемент строки X[i,5] следует занести вычисленную величину вклада на конец года, который равен остатку вклада на конец последнего квартала X[i,4], плюс установленный процент от среднего значения вклада Y=(X[i,1]+X[i,2]+X[i,3]+ X[i,4])/4 за год. Положим, определено, что на вклад до 5000 предусмотрен процент роста – 5%, на вклад до 10000 – 10%, на вклад свыше 10000 – 20%. Иными словами установлены коэффициенты роста 1.05, 1.1 и 1.2 соответственно. Кроме перечисленного, следует найти сумму всех вкладов в банке S и среднее значение вклада, приходящееся на одного вкладчика (S/N).
Задания для самостоятельного решения
6.1. В векторе X найти элемент, максимально близкий к некоторому, произвольно заданному числу Y и его номер.
6.2. В отсортированный по возрастанию вектор X включить число А. Лишнее число удалить.
6.3. В векторе X сдвинуть по кольцу его содержимое на 1 клетку, на 2, на K клеток. Подсказка. Здесь понадобится вспомогательный массив Y, куда и будем заносить уже сдвинутые данные, а затем возвращать их в X.
6.4. Имеется прямоугольная матрица X[N,M]. Заполнить элементы матрицы числами натурального ряда в последовательности, указанной на рис. 6.1.
6.5. Заполнить матрицу X[N,M] числами натурального ряда в последовательности, указанной на рис. 6.2. Первая строка слева-направо, последняя – справа-налево, вторая строка – слева-направо, предпоследняя– справа-налево и т.д.
6.6. Пусть имеется два вектора X[N] и Y[N] координат некоторых населенных пунктов. Найти координаты такого пункта, расстояния от которого до всех остальных будет минимальным (например, чтобы построить там АТС).
6.7. Запрограммировать процесс выбора в детской считалке. Пусть нужно выбрать случайным образом дежурного по кухне из группы в M человек. Дети становятся в круг и “считаются” от номера 1 по следующему правилу. Из круга по часовой стрелке удаляется с определенным шагом N каждый участник. В конце останется только один – дежурный. Для (рис. 6.3) примера M=8, N=3. Тогда последовательно из круга выйдут номера 1,4,7,3,8,6. Наконец останутся только номера 2 и 5 и счет продолжается уже между ними 2→5→2. Таким образом, “повезло” номеру 5. В программе вывести номера всех выбывающих элементов и номер дежурного.
Сортировки в массиве. Сортировка данных является очень распространенной задачей и для нее имеется несколько методов.
Пример 6-3. В векторе X длиной N расположить элементы в порядке убывания их значений. Алгоритм реализуется при помощи двух вложенных циклов. В наружном цикле последовательно перебираются числа x[i] массива и во внутреннем сравниваются со всеми оставшимися числами x[j] справа от данного. Если выясняется, что какое-то из x[i] меньше сравниваемого, они меняются местами – большее число становится на место меньшего. В программе для наглядности в качестве элементов массива взяты их номера i. Здесь будет выполнена следующая последовательность перестановок чисел: 1,2,3,4: при 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] мы получим неверный результат. Хотя x[i] и примет значение x[j], оператор x[j]:=x[i] ничего не изменит, ведь х[i] теперь равен х[j]. С тем, чтобы не потерять исходное значение x[i], оно запоминается в M.
program P6_3;