Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Шаблоны:
- case d of
- 'vklad_startsum': openchooserstr:=' Вклад - сумма вклада ';
- 'vklad_endsum': openchooserstr:=' Вклад - итоговая сумма ';
- 'vklad_periods': openchooserstr:=' Вклад - кол-во платёжных периодов ';
- 'vklad_stavka': openchooserstr:=' Вклад - процентная ставка ';
- 'vklad_plus': openchooserstr:=' Вклад - прибыль ';
- 'kredit_dif_startsum': openchooserstr:=' Кредит - дифференцированные платежи - сумма кредита ';
- 'kredit_dif_endsum': openchooserstr:=' Кредит - дифференцированные платежи - сумма выплат ';
- 'kredit_dif_stavka': openchooserstr:=' Кредит - дифференцированные платежи - процентная ставка ';
- 'kredit_dif_periods': openchooserstr:=' Кредит - дифференцированные платежи - кол-во платёжных периодов ';
- 'kredit_dif_pay': openchooserstr:=' Кредит - дифференцированные платежи - выплата за один период ';
- 'kredit_ann_startsum': openchooserstr:=' Кредит - аннуитетные платежи - сумма кредита ';
- 'kredit_ann_endsum': openchooserstr:=' Кредит - аннуитетные платежи - сумма вклада ';
- 'kredit_ann_stavka': openchooserstr:=' Кредит - аннуитетные платежи - процентная ставка ';
- 'kredit_ann_periods': openchooserstr:=' Кредит - аннуитетные платежи - кол-во платёжных периодов ';
- 'kredit_ann_pay': openchooserstr:=' Кредит - аннуитетные платежи - выплата за один период ';
- end;
- //Вычисления и раздел "подробнее":
- procedure vklad_startsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('endsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var sn:=strtofloat(getinput('endsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Сумма вклада: '+floattostr(round2(sn/power(1+k/100,n)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- textcolor(textc); textbackground(backc);
- //more
- gotoxy(4,6); write('Вклад');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - начальная сумма');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество начислений');
- gotoxy(4,12); write('Сумма за первый период:');
- gotoxy(4,13); write('S1=S0+S0*k/100=S0*(1+k/100)');
- gotoxy(4,14); write('Сумма за второй период:');
- gotoxy(4,15); write('S2=S1+S1*k/100=S1*(1+k/100)=S0*(1+k/100)^2');
- gotoxy(4,16); write('Следовательно, сумма за n-ый период:');
- gotoxy(4,17); write('Sn:=S0*(1+k/100)^n');
- gotoxy(4,19); write('Чтобы получить сумму вклада, нужно из полученной формулы');
- gotoxy(4,20); write('выразить S0:');
- gotoxy(4,21); write('S0=Sn/(1+k/100)^n=');
- gotoxy(4,22); write('='+getinput('endsuminput')+'/(1+'+getinput('procentsinput')+'/100)^'+getinput('paycountinput')+'='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure vklad_endsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Итоговая сумма: '+floattostr(round2(s0*power(1+k/100,n)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- textcolor(textc); textbackground(backc);
- //more
- gotoxy(4,6); write('Вклад');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - начальная сумма');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество начислений');
- gotoxy(4,12); write('Сумма за первый период:');
- gotoxy(4,13); write('S1=S0+S0*k/100=S0*(1+k/100)');
- gotoxy(4,14); write('Сумма за второй период:');
- gotoxy(4,15); write('S2=S1+S1*k/100=S1*(1+k/100)=S0*(1+k/100)^2');
- gotoxy(4,16); write('Следовательно, сумма за n-ый период:');
- gotoxy(4,17); write('Sn:=S0*(1+k/100)^n=');
- gotoxy(4,18); write('='+getinput('startsuminput')+'*(1+'+getinput('procentsinput')+'/100)^'+getinput('paycountinput')+'='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure vklad_periods;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('endsuminput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var sn:=strtofloat(getinput('endsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=0;
- while (s0*power(1+k/100,n))<sn do n:=n+1;
- r:='Количество начислений: '+inttostr(n);
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- textcolor(textc); textbackground(backc);
- //more
- gotoxy(4,6); write('Вклад');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - начальная сумма');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество начислений');
- gotoxy(4,12); write('Сумма за первый период:');
- gotoxy(4,13); write('S1=S0+S0*k/100=S0*(1+k/100)');
- gotoxy(4,14); write('Сумма за второй период:');
- gotoxy(4,15); write('S2=S1+S1*k/100=S1*(1+k/100)=S0*(1+k/100)^2');
- gotoxy(4,16); write('Следовательно, сумма за n-ый период:');
- gotoxy(4,17); write('Sn=S0*(1+k/100)^n');
- gotoxy(4,19); write('Чтобы получить количество платёжных периодов, подбирается такое');
- gotoxy(4,20); write('целое число n, что S0*(1+k/100)^n<=Sn, а S0*(1+k/100)^(n+1)>Sn');
- gotoxy(4,21); write(getinput('startsuminput')+'*(1+'+getinput('procentsinput')+'/100)^'+inttostr(strtoint(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))-1)+'<'+getinput('endsuminput'));
- gotoxy(4,22); write(getinput('startsuminput')+'*(1+'+getinput('procentsinput')+'/100)^'+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)+'>='+getinput('endsuminput'));
- gotoxy(4,23); write('Значит n='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure vklad_stavka;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('paycountinput')='')or(getinput('startsuminput')='')or(getinput('endsuminput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var sn:=strtofloat(getinput('endsuminput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Процентная ставка: '+floattostr(round2(100*power(sn/s0,1/n)-100));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- textcolor(textc); textbackground(backc);
- //more
- gotoxy(4,6); write('Вклад');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - начальная сумма');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество начислений');
- gotoxy(4,12); write('Сумма за первый период:');
- gotoxy(4,13); write('S1=S0+S0*k/100=S0*(1+k/100)');
- gotoxy(4,14); write('Сумма за второй период:');
- gotoxy(4,15); write('S2=S1+S1*k/100=S1*(1+k/100)=S0*(1+k/100)^2');
- gotoxy(4,16); write('Следовательно, сумма за n-ый период:');
- gotoxy(4,17); write('Sn:=S0*(1+k/100)^n');
- gotoxy(4,19); write('Чтобы получить процентную ставку, нужно из полученной формулы');
- gotoxy(4,20); write('выразить k:');
- gotoxy(4,21); write('k=100*(Sn/S0)^(1/n)-100=');
- gotoxy(4,22); write('=100*('+getinput('endsuminput')+'/'+getinput('startsuminput')+')^(1/'+getinput('paycountinput')+')-100='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure vklad_plus;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Прибыль: '+floattostr(round2(s0*power(1+k/100,n)-s0));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- textcolor(textc); textbackground(backc);
- //more
- gotoxy(4,6); write('Вклад');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - начальная сумма');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество начислений');
- gotoxy(4,12); write('Сумма за первый период:');
- gotoxy(4,13); write('S1=S0+S0*k/100=S0*(1+k/100)');
- gotoxy(4,14); write('Сумма за второй период:');
- gotoxy(4,15); write('S2=S1+S1*k/100=S1*(1+k/100)=S0*(1+k/100)^2');
- gotoxy(4,16); write('Следовательно, сумма за n-ый период:');
- gotoxy(4,17); write('Sn:=S0*(1+k/100)^n');
- gotoxy(4,19); write('Чтобы получить количество начислений, нужно вычесть из итоговой суммы');
- gotoxy(4,20); write('начальную:');
- gotoxy(4,21); write('Sn-S0=S0*(1+k/100)^n-S0=');
- gotoxy(4,22); write('='+getinput('startsuminput')+'*(1+'+getinput('procentsinput')+'/100)^'+getinput('paycountinput')+'-'+getinput('startsuminput')+'='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_dif_startsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('endsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s:=strtofloat(getinput('endsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Сумма кредита: '+floattostr(round2(s/(1+k*(n+1)/200)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (дифференцированные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('q1, q2,... qn - начисленный процент за i-ый период');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=S0+q - сумма выплат');
- gotoxy(4,15); write('q1=S0*k/100');
- gotoxy(4,16); write('q2=(S0-S0/n)*(k/100)=(S0*(n-1)*k)/(100*n)');
- gotoxy(4,17); write('q3=(S0-2*S0/n)*(k/100)=(S0*(n-2)*k)/(100*n)');
- gotoxy(4,18); write('...');
- gotoxy(4,19); write('qn=(S0-(n-1)*S0/n)*(k/100)=S0*k/(100*n)');
- gotoxy(4,20); write('q=q1+q2+q3+...+qn=(S0*k/100)+(S0*(n-1)*k)/(100*n)+(S0*(n-2)*k)/');
- gotoxy(4,21); write('/(100*n)+...+S0*k/(100*n)=((S0*k)/100*n)*(n+(n-1)+(n-2)+...+1)=');
- gotoxy(4,22); write('=((S0*k)/(100*n))*((n+1)/2)*n=(S0*k*(n+1))/200');
- gotoxy(4,23); write('S=S0+q=S0+(S0*k*(n+1))/200');
- gotoxy(4,25); write('Чтобы получить сумму вклада, нужно из полученной формулы');
- gotoxy(4,26); write('выразить S0:');
- gotoxy(4,27); write('S0=S/(1+k*(n+1)/200)=');
- gotoxy(4,28); write('='+getinput('endsuminput')+'/(1+'+getinput('procentsinput')+'*('+getinput('paycountinput')+'+1)/200)='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_dif_endsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtofloat(getinput('paycountinput'));
- r:='Сумма выплат: '+floattostr(round2(s0*(1+k*(n+1)/200)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (дифференцированные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('q1, q2,... qn - начисленный процент за i-ый период');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=S0+q - сумма выплат');
- gotoxy(4,15); write('q1=S0*k/100');
- gotoxy(4,16); write('q2=(S0-S0/n)*(k/100)=(S0*(n-1)*k)/(100*n)');
- gotoxy(4,17); write('q3=(S0-2*S0/n)*(k/100)=(S0*(n-2)*k)/(100*n)');
- gotoxy(4,18); write('...');
- gotoxy(4,19); write('qn=(S0-(n-1)*S0/n)*(k/100)=S0*k/(100*n)');
- gotoxy(4,20); write('q=q1+q2+q3+...+qn=(S0*k/100)+(S0*(n-1)*k)/(100*n)+(S0*(n-2)*k)/');
- gotoxy(4,21); write('/(100*n)+...+S0*k/(100*n)=((S0*k)/100*n)*(n+(n-1)+(n-2)+...+1)=');
- gotoxy(4,22); write('=((S0*k)/(100*n))*((n+1)/2)*n=(S0*k*(n+1))/200');
- gotoxy(4,23); write('S=S0+q=S0+(S0*k*(n+1))/200=');
- gotoxy(4,24); write('='+getinput('startsuminput')+'+('+getinput('startsuminput')+'*'+getinput('procentsinput')+'*('+getinput('paycountinput')+'+1))/200='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_dif_stavka;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('endsuminput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var s:=strtofloat(getinput('endsuminput'));
- var n:=strtoint(getinput('paycountinput'));
- r:='Процентная ставка: '+floattostr(round2(200*(s/s0-1)/(n+1)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (дифференцированные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('q1, q2,... qn - начисленный процент за i-ый период');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=S0+q - сумма выплат');
- gotoxy(4,15); write('q1=S0*k/100');
- gotoxy(4,16); write('q2=(S0-S0/n)*(k/100)=(S0*(n-1)*k)/(100*n)');
- gotoxy(4,17); write('q3=(S0-2*S0/n)*(k/100)=(S0*(n-2)*k)/(100*n)');
- gotoxy(4,18); write('...');
- gotoxy(4,19); write('qn=(S0-(n-1)*S0/n)*(k/100)=S0*k/(100*n)');
- gotoxy(4,20); write('q=q1+q2+q3+...+qn=(S0*k/100)+(S0*(n-1)*k)/(100*n)+(S0*(n-2)*k)/');
- gotoxy(4,21); write('/(100*n)+...+S0*k/(100*n)=((S0*k)/100*n)*(n+(n-1)+(n-2)+...+1)=');
- gotoxy(4,22); write('=((S0*k)/(100*n))*((n+1)/2)*n=(S0*k*(n+1))/200');
- gotoxy(4,23); write('S=S0+q=S0+(S0*k*(n+1))/200');
- gotoxy(4,24); write('Чтобы получить процентную ставку, нужно из полученной формулы');
- gotoxy(4,25); write('выразить k:');
- gotoxy(4,26); write('k=200*(S/S0-1)/(n+1)=');
- gotoxy(4,27); write('=200*('+getinput('startsuminput')+'/'+getinput('endsuminput')+'-1)/('+getinput('paycountinput')+'+1)='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_dif_periods;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('endsuminput')='')or(getinput('startsuminput')='')or(getinput('procentsinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var s:=strtofloat(getinput('endsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=200*(s/s0-1)/k-1;
- r:='Кол-во платёжных периодов: '+inttostr(trunc(n)+ord(frac(n)<>0));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (дифференцированные платежи)');
- gotoxy(4,7); write('Пусть');
- gotoxy(4,8); write('S0 - сумма кредита');
- gotoxy(4,9); write('k - процентная ставка');
- gotoxy(4,10); write('n - количество платёжных периодов');
- gotoxy(4,11); write('q1, q2,... qn - начисленный процент за i-ый период');
- gotoxy(4,12); write('q - сумма начисленных процентов');
- gotoxy(4,13); write('S=S0+q - сумма выплат');
- gotoxy(4,14); write('q1=S0*k/100');
- gotoxy(4,15); write('q2=(S0-S0/n)*(k/100)=(S0*(n-1)*k)/(100*n)');
- gotoxy(4,16); write('q3=(S0-2*S0/n)*(k/100)=(S0*(n-2)*k)/(100*n)');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('qn=(S0-(n-1)*S0/n)*(k/100)=S0*k/(100*n)');
- gotoxy(4,19); write('q=q1+q2+q3+...+qn=(S0*k/100)+(S0*(n-1)*k)/(100*n)+(S0*(n-2)*k)/');
- gotoxy(4,20); write('/(100*n)+...+S0*k/(100*n)=((S0*k)/100*n)*(n+(n-1)+(n-2)+...+1)=');
- gotoxy(4,21); write('=((S0*k)/(100*n))*((n+1)/2)*n=(S0*k*(n+1))/200');
- gotoxy(4,22); write('S=S0+q=S0+(S0*k*(n+1))/200');
- gotoxy(4,23); write('Чтобы получить количество платёжных периодов, подбирается такое');
- gotoxy(4,24); write('целое число n, что S0+(S0*k*(n+1))/200<=S,');
- gotoxy(4,25); write('а S0+(S0*k*(n+1+1))/200>S');
- gotoxy(4,26); write(getinput('startsuminput')+'+('+getinput('startsuminput')+'*'+getinput('procentsinput')+'*('+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)+'+1))/200<='+getinput('endsuminput'));
- gotoxy(4,27); write(getinput('startsuminput')+'+('+getinput('startsuminput')+'*'+getinput('procentsinput')+'*('+inttostr(strtoint(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))+1)+'+1))/200>'+getinput('endsuminput'));
- gotoxy(4,28); write('Значит n='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_dif_pay;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')or(getinput('numberofperiodinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtoint(getinput('numberofperiodinput'))>strtoint(getinput('paycountinput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var k:=strtofloat(getinput('procentsinput'));
- var n:=strtoint(getinput('paycountinput'));
- var nn:=strtoint(getinput('numberofperiodinput'));
- r:='Выплата: '+floattostr(round2(s0/n+s0*(n-nn+1)*k/(100*n)));
- newbutton('more',' Подробнее ',4,28,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,26,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (дифференцированные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка');
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('q1, q2,... qn - начисленный процент за i-ый период');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=S0+q - сумма выплат');
- gotoxy(4,15); write('q1=S0*k/100');
- gotoxy(4,16); write('q2=(S0-S0/n)*(k/100)=(S0*(n-1)*k)/(100*n)');
- gotoxy(4,17); write('q3=(S0-2*S0/n)*(k/100)=(S0*(n-2)*k)/(100*n)');
- gotoxy(4,18); write('...');
- gotoxy(4,19); write('qn=(S0-(n-1)*S0/n)*(k/100)=S0*k/(100*n)');
- gotoxy(4,20); write('Чтобы найти выплату за i-ый период, нужно прибавить к');
- gotoxy(4,21); write('начисленным процентам долговую разницу:');
- gotoxy(4,22); write('S0/n+S0*k/(100*n)=');
- gotoxy(4,23); write('='+getinput('startsuminput')+'/'+getinput('paycountinput')+'+'+getinput('startsuminput')+'*'+getinput('procentsinput')+
- '/(100*'+getinput('paycountinput')+')='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_ann_startsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('endsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s:=strtofloat(getinput('endsuminput'));
- var n:=strtoint(getinput('paycountinput'));
- var m:=1+strtofloat(getinput('procentsinput'))/100;
- r:='Сумма кредита: '+floattostr(round2(s*(power(m,n)-1)/(n*power(m,n)*(m-1))));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (аннуитетные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка, m - коэффициент, m=1+k/100=1+'+getinput('procentsinput')+'/100='+floattostr(1+strtofloat(getinput('procentsinput'))/100));
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('x - периодическая выплата');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=x*n - общая выплата');
- gotoxy(4,15); write('S1=m*S0-x - долг после первой выплаты');
- gotoxy(4,16); write('S2=m*S1-x=m^2*S0-mx-x - долг после второй выплаты');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('Sn=m*S(n-1)-x=m^n*So-m^(n-1)*x-m^(n-2)*x-...-x=0');
- gotoxy(4,19); write('m^n*S0=x*(m^(n-1)+m^(n-2)+m^(n-3)+...+1)=x*(m^n-1)/(m-1)');
- gotoxy(4,20); write('x=m^n*S0*(m-1)/(m^n-1)');
- gotoxy(4,21); write('S=x*n=m^n*S0*n*(m-1)/(m^n-1)');
- gotoxy(4,23); write('Чтобы получить сумму кредита, нужно из полученной формулы');
- gotoxy(4,24); write('выразить S0:');
- gotoxy(4,25); write('S0=S*(m^n-1)/(m^n*n*(m-1))=');
- gotoxy(4,26); write('='+getinput('endsuminput')+'*('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+getinput('paycountinput')+'-1)/('+
- floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+getinput('paycountinput')+'*'+getinput('paycountinput')+'*('+
- floattostr(1+strtofloat(getinput('procentsinput'))/100)+'-1))='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_ann_endsum;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var m:=1+strtofloat(getinput('procentsinput'))/100;
- var n:=strtoint(getinput('paycountinput'));
- r:='Сумма выплат: '+floattostr(round2(n*power(m,n)*s0*(m-1)/(power(m,n)-1)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (аннуитетные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка, m - коэффициент, m=1+k/100=1+'+getinput('procentsinput')+'/100='+floattostr(1+strtofloat(getinput('procentsinput'))/100));
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('x - периодическая выплата');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=x*n - общая выплата');
- gotoxy(4,15); write('S1=m*S0-x - долг после первой выплаты');
- gotoxy(4,16); write('S2=m*S1-x=m^2*S0-mx-x - долг после второй выплаты');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('Sn=m*S(n-1)-x=m^n*So-m^(n-1)*x-m^(n-2)*x-...-x=0');
- gotoxy(4,19); write('m^n*S0=x*(m^(n-1)+m^(n-2)+m^(n-3)+...+1)=x*(m^n-1)/(m-1)');
- gotoxy(4,20); write('x=m^n*S0*(m-1)/(m^n-1)');
- gotoxy(4,21); write('S=x*n=m^n*S0*n*(m-1)/(m^n-1)=');
- gotoxy(4,22); write('='+floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+getinput('paycountinput')+'*'+getinput('startsuminput')+'*'+
- getinput('paycountinput')+'*('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+'-1)/('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+
- '^'+getinput('paycountinput')+'-1)='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_ann_stavka;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('endsuminput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var s:=strtofloat(getinput('endsuminput'));
- var n:=strtofloat(getinput('paycountinput'));
- var k: real = 0; var rovno: boolean;
- var rr: real;
- repeat k:=k+1; rr:=n*power(1+k/100,n)*s0*(k/100)/(power(1+k/100,n)-1) until rr>=s;
- if rr=s then rovno:=true;
- if not rovno then repeat k:=k-0.1; rr:=n*power(1+k/100,n)*s0*(k/100)/(power(1+k/100,n)-1) until rr<=s;
- if rr=s then rovno:=true;
- if not rovno then repeat k:=k+0.01; rr:=n*power(1+k/100,n)*s0*(k/100)/(power(1+k/100,n)-1) until rr>=s;
- if rr=s then rovno:=true;
- if not rovno then repeat k:=k-0.001; rr:=n*power(1+k/100,n)*s0*(k/100)/(power(1+k/100,n)-1) until rr<=s;
- r:='Процентная ставка: '+floattostr(round2(k));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (аннуитетные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка, m - коэффициент, m=1+k/100');
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('x - периодическая выплата');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=x*n - общая выплата');
- gotoxy(4,15); write('S1=m*S0-x - долг после первой выплаты');
- gotoxy(4,16); write('S2=m*S1-x=m^2*S0-mx-x - долг после второй выплаты');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('Sn=m*S(n-1)-x=m^n*So-m^(n-1)*x-m^(n-2)*x-...-x=0');
- gotoxy(4,19); write('m^n*S0=x*(m^(n-1)+m^(n-2)+m^(n-3)+...+1)=x*(m^n-1)/(m-1)');
- gotoxy(4,20); write('x=m^n*S0*(m-1)/(m^n-1)');
- gotoxy(4,21); write('S=x*n=m^n*S0*n*(m-1)/(m^n-1)');
- gotoxy(4,23); write('Чтобы получить процентную ставку, подбирается такое число');
- gotoxy(4,24); write('m=1+k/100, которое соответствует полученной формуле:');
- gotoxy(4,25); write(floattostr(1+strtofloat(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))/100)+'^'+getinput('paycountinput')+'*'
- +getinput('startsuminput')+'*'+getinput('paycountinput')+'*('+floattostr(1+strtofloat(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))/100)+'-1)/('+
- floattostr(1+strtofloat(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))/100)+
- '^'+getinput('paycountinput')+'-1)='+getinput('endsuminput'));
- gotoxy(4,26); write('m='+floattostr(1+strtofloat(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))/100));
- gotoxy(4,27); write('k=(m-1)*100=('+floattostr(1+strtofloat(copy(r,pos(':',r)+2,length(r)-pos(':',r)-1))/100)+'-1)*100='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_ann_periods;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('endsuminput')='')or(getinput('startsuminput')='')or(getinput('procentsinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else if strtofloat(getinput('startsuminput'))>strtofloat(getinput('endsuminput')) then begin
- r:='Недопустимые значения!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var s:=strtofloat(getinput('endsuminput'));
- var m:=1+strtofloat(getinput('procentsinput'))/100;
- var n:=1;
- while n*power(m,n)*s0*(m-1)/(power(m,n)-1)<s do n:=n+1;
- r:='Кол-во платёжных периодов: '+inttostr(n);
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (аннуитетные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка, m - коэффициент, m=1+k/100=1+'+getinput('procentsinput')+'/100='+floattostr(1+strtofloat(getinput('procentsinput'))/100));
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('x - периодическая выплата');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=x*n - общая выплата');
- gotoxy(4,15); write('S1=m*S0-x - долг после первой выплаты');
- gotoxy(4,16); write('S2=m*S1-x=m^2*S0-mx-x - долг после второй выплаты');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('Sn=m*S(n-1)-x=m^n*So-m^(n-1)*x-m^(n-2)*x-...-x=0');
- gotoxy(4,19); write('m^n*S0=x*(m^(n-1)+m^(n-2)+m^(n-3)+...+1)=x*(m^n-1)/(m-1)');
- gotoxy(4,20); write('x=m^n*S0*(m-1)/(m^n-1)');
- gotoxy(4,21); write('S=x*n=m^n*S0*n*(m-1)/(m^n-1)');
- gotoxy(4,23); write('Чтобы получить количество платёжных периодов, подбирается такое');
- gotoxy(4,24); write('целое число n, что m^n*S0*n*(m-1)/(m^n-1)<=S,');
- gotoxy(4,25); write('а m^(n+1)*S0*(n+1)*(m-1)/(m^(n+1)-1)>S:');
- gotoxy(4,26); write(floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)+'*'
- +getinput('startsuminput')+'*'+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)+'*('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+
- '-1)/('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+
- '^'+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)+'-1)<='+getinput('endsuminput'));
- gotoxy(4,27); write(floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+inttostr(strtoint((copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)))+1)+'*'
- +getinput('startsuminput')+'*'+inttostr(strtoint((copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)))+1)+
- '*('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+'-1)/('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+
- '^'+inttostr(strtoint((copy(r,pos(':',r)+2,length(r)-pos(':',r)-1)))+1)+'-1)>'+getinput('endsuminput'));
- gotoxy(4,28); write('Значит n='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- procedure kredit_ann_pay;
- 'start:enter': begin
- //calculating
- calculated:=true;
- if (getinput('procentsinput')='')or(getinput('startsuminput')='')or(getinput('paycountinput')='')
- then begin
- r:='Вы ввели не все данные!';
- hidebutton('more'); deletebutton('more');
- end
- else begin
- var s0:=strtofloat(getinput('startsuminput'));
- var m:=1+strtofloat(getinput('procentsinput'))/100;
- var n:=strtoint(getinput('paycountinput'));
- r:='Выплата: '+floattostr(round2(power(m,n)*s0*(m-1)/(power(m,n)-1)));
- newbutton('more',' Подробнее ',4,24,11,textc,buttonbackc,chc,chbackc);
- writebutton('more'); switchright('more','start');
- end;
- hidetexting('result');
- newtexting('result',r,4,22,60);
- writetexting('result');
- end;
- 'more:enter': begin
- textbackground(backc);
- clrscr;
- textbackground(barbackc);
- gotoxy(1,1); write(' '*70);
- gotoxy(1,2); write(' '*70);
- gotoxy(1,3); write(' '*70);
- gotoxy(3,2); textbackground(setchbackc); textcolor(setchc); write(' '+#27+' '); textbackground(barbackc); textcolor(bartextc); write(' Подробнее');
- //more
- textbackground(backc); textcolor(textc);
- gotoxy(4,6); write('Кредит (аннуитетные платежи)');
- gotoxy(4,8); write('Пусть');
- gotoxy(4,9); write('S0 - сумма кредита');
- gotoxy(4,10); write('k - процентная ставка, m - коэффициент, m=1+k/100=1+'+getinput('procentsinput')+'/100='+floattostr(1+strtofloat(getinput('procentsinput'))/100));
- gotoxy(4,11); write('n - количество платёжных периодов');
- gotoxy(4,12); write('x - периодическая выплата');
- gotoxy(4,13); write('q - сумма начисленных процентов');
- gotoxy(4,14); write('S=x*n - общая выплата');
- gotoxy(4,15); write('S1=m*S0-x - долг после первой выплаты');
- gotoxy(4,16); write('S2=m*S1-x=m^2*S0-mx-x - долг после второй выплаты');
- gotoxy(4,17); write('...');
- gotoxy(4,18); write('Sn=m*S(n-1)-x=m^n*So-m^(n-1)*x-m^(n-2)*x-...-x=0');
- gotoxy(4,19); write('m^n*S0=x*(m^(n-1)+m^(n-2)+m^(n-3)+...+1)=x*(m^n-1)/(m-1)');
- gotoxy(4,20); write('x=m^n*S0*(m-1)/(m^n-1)=');
- gotoxy(4,21); write('='+floattostr(1+strtofloat(getinput('procentsinput'))/100)+'^'+getinput('paycountinput')+'*'+getinput('startsuminput')+'*('+
- floattostr(1+strtofloat(getinput('procentsinput'))/100)+'-1)/('+floattostr(1+strtofloat(getinput('procentsinput'))/100)+
- '^'+getinput('paycountinput')+'-1)='+copy(r,pos(':',r)+2,length(r)-pos(':',r)-1));
- //more
- var k: char;
- repeat k:=readkey until (k=#27)or(k=#13);
- writelayout; choose('more');
- end;
- //Ядро управления шаблонами:
- while true do begin
- if (lastlaysave)and(calculated) then updatesettings;
- calculated:=false;
- lastlayout:=currentlayout;
- currentlayout:=nextlayout;
- nextlayout:=''; deletelayout(lastlayout);
- case currentlayout of
- 'vklad_startsum': vklad_startsum;
- 'vklad_endsum': vklad_endsum;
- 'vklad_periods': vklad_periods;
- 'vklad_stavka': vklad_stavka;
- 'vklad_plus': vklad_plus;
- 'kredit_dif_startsum': kredit_dif_startsum;
- 'kredit_dif_endsum': kredit_dif_endsum;
- 'kredit_dif_stavka': kredit_dif_stavka;
- 'kredit_dif_periods': kredit_dif_periods;
- 'kredit_dif_pay': kredit_dif_pay;
- 'kredit_ann_startsum': kredit_ann_startsum;
- 'kredit_ann_endsum': kredit_ann_endsum;
- 'kredit_ann_stavka': kredit_ann_stavka;
- 'kredit_ann_periods': kredit_ann_periods;
- 'kredit_ann_pay': kredit_ann_pay;
- 'exit': break;
- else begin currentlayout:='kredit_ann_endsum'; kredit_ann_endsum; end;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement