Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль (прогр) 2008июль.doc
Скачиваний:
1
Добавлен:
17.11.2018
Размер:
900.61 Кб
Скачать

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;