Согласно правилам банка, кредит на покупку старого автомобиля выдаётся на `5` лет с годовой процентной ставкой `8,99%`, а кредит на покупку нового автомобиля выдается на `7` лет с процентной ставкой, зависящей от кредитной истории клиента. Так, для клиентов с отличной, хорошей и плохой кредитными историями процентная ставка равна соответственно `6,17%`, `8,43%` и `12,08%` годовых. Кредит выдается тому, чей заработок как минимум в `2` раза выше ежемесячного платежа по кредиту, при этом величина платежа `Q` вычисляется по формуле: `Q=r/(1-(1+r)^(-N))P`, где `P` – стоимость автомобиля, `N` – срок кредитования в месяцах, а `r` – величина месячной процентной ставки такая, что для ставки в `k%` годовых `r=k/(12*100)`. 1) Постройте электронную таблицу, определяющую возможность выдачи кредита на новый и подержанный автомобили для клиентов с различной заработной платой.
2) Для клиента банка с заработной платой в `75000` рублей и хорошей кредитной историей определите, на каких условиях и на какой из следующих двух автомобилей он сможет получить кредит: на старый автомобиль за `559000` рублей или новый автомобиль за `2440000` рублей?
1.
const num_1 = 10/52;
const num_2 = sqrt(54.7);
var
result:real;
function sum(a,b:real):real;
begin
sum:=a+b;
end;
begin
result:=sum(num_1, num_2);
writeln(result);
end.
2.
const x = 41.3;
const basis = 10;
var
result:real;
begin
result:=ln(x)/ln(basis);
writeln(result);
end.
3.
const x = 7.5;
const y = 9.6;
var
result : real;
function root(x, y:real):real;
begin
root := exp(ln(x)/3) * exp(ln(y)/4);
end;
begin
result:=root(x,y);
writeln(result);
end.
4.
const x = 1.6;
const y = 1.3;
var
result:real;
function gen(x,y:real):real;
var
res:real;
begin
res:=cos(y);
gen:=sin(x)*power(res, 3);
end;
begin
result:=gen(x,y);
writeln(result);
end.
begin
var a:=ReadLines('m17.txt').JoinIntoString.ToIntegers;
a.Println;
var b:=a.Select((x,i)->Rec(x,i)).Where(x->x.Item1<0)
.Select(x->x.Item2).ToArray;
if b.Count<>2 then
Writeln('Количество отрицательных элементов не равно двум')
else begin
a:=SeqFill(b[0],0).Concat(a.Skip(b[0]).Take(b[1]-b[0]+1))
.Concat(SeqFill(a.Length-b[1]-1,0)).ToArray;
a.Println
end
end.
Тестовое решение:
23 14 7 15 0 13 -6 41 18 13 8 42 27 -11 3 19 10
0 0 0 0 0 0 -6 41 18 13 8 42 27 -11 0 0 0
Файл с исходными данными имеет имя m17.txt. Тестовый файл находится во вложении. Разбивка на строки сделана по 5 значений, но может быть совершенно произвольной. Также нет привязки именно к 17 числам, главное - чтобы отрицательных чисел было ровно два, иначе будет выдано сообщение о их неверном количестве.