Задание №1 Автоматизация экономических задач средствами MS Excel
Задача 1. Выдача и погашение кредита
1. Постановка задачи.
Фирма решила взять кредит размером 200 000$ сроком на 5 лет, погашать который (основной долг и проценты) намерена равномерными платежами в конце каждого года. За на финансирование фирма направила в три банка, из которых пришли ответы с соответствующими условиями.
Рассчитайте на листе КРЕДИТ согласно условиям реальные суммы, которые может получить фирма по кредиту и размер ежегодных выплат.
На листе ПОГАШЕНИЕ составьте план погашения кредита по годам.
2. Пояснения.
На листе КРЕДИТ создайте таблицу, состоящую из граф: «№ п/п» (1), «Наименование банка» (2), «Сумма кредита» (3), «Плата за риск и обработку данных» (4), «Плата за издержки» (5), «Процентная ставка» (6), «Срок выплаты кредита» (7), «Сумма дополнительных выплат банку» (8), «Сумма годового платежа по кредиту» (9).
Данные для граф 1, 2, 3, 6 и 7 задайте самостоятельно.
Значение графы 4 составляет фиксированный процент от суммы кредита, задаваемый банком.
Значение графы 5 — фиксированная сумма, определенная банком за издержки при оформлении кредита.
Значение графы 8 определяется как сумма граф 4 и 5.
Значение графы 9 рассчитывается с финансовой функции ПЛТ.
Определите, в каком банке выгоднее взять кредит фирме.
На листе ПОГАШЕНИЕ составьте план погашения кредита, предусмотрев следующие графы: «Номер периода» (1), «Сумма основного долга» (2), «Сумма процентов по кредиту» (3), «Накопленный долг» (4), «Накопленный процент» (5), «Баланс на конец периода» (6).
Значение граф 2-5 рассчитайте с финансовых функций ОСПЛТ, ПРПЛТ, ОБЩДОХОД, ОБЩПЛАТ соответственно.
Значение графы 6 определяется как разность между суммой кредита и суммой накопленного долга.
const n=100;
var ar:array of array of integer;
ars:array of array of string;
i:integer;
procedure complection(var ar:array of array of integer;var ars:array of array of string);
var
i,j:integer;
begin;
for i:=1 to n do
begin;
for j:=1 to n do
begin;
ar[i,j]:=random(9);
str(ar[i,j],ars[i,j]);
end;
end;
end;
procedure burning(ars:array of array of string);
var
i,j:integer;
t:text;
begin;
assign(t,'text.txt');
rewrite(t);
for i:=1 to n do
begin;
writeln(t,' ');
for j:=1 to n do
write(t,ars[i,j],' ');
end;
end;
begin;
randomize;
setlength(ar,n+1);
setlength(ars,n+1);
for i:=1 to n do
begin;
setlength(ar[i],n+1);
setlength(ars[i],n+1);
end;
complection(ar,ars);
burning(ars);
end.
const
MAX_SIZE = 100;
var
size, n: integer;
stack: array[1..MAX_SIZE] of integer;
procedure push(a: integer);
begin
inc(size);
stack[size] := a;
end;
procedure view;
var
i: integer;
begin
for i := 1 to size do
write(stack[i], ' ');
writeln;
end;
Для очереди:
const
MAX_SIZE = 100;
var
head, tail: integer;
queue: array[1..MAX_SIZE] of integer;
procedure push(a: integer);
begin
queue[tail] := a;
inc(tail);
end;
procedure view;
var
i: integer;
begin
for i := head to tail - 1 do
write(queue[i], ' ');
writeln;
end;
И стек и очередь реализованы с массива. Нужно следить, чтобы размер структуры не был больше размера массива