Program go; var x,y,z,n:real; begin write('Введите сегодняшнее число: '); readln(x); write('Введите номер сегодняшнего месяца: '); readln(y); begin if y=1 then n:=365-x else; if y=2 then n:=365-31-x else; if y=3 then n:=365-31-28-x else; if y=4 then n:=365-31-28-31-x else; if y=5 then n:=365-31-28-31-30-x else; if y=6 then n:=365-31-28-31-30-31-x else; if y=7 then n:=365-31-28-31-30-31-30-x else; if y=8 then n:=365-31-28-31-30-31-30-31-x else; if y=9 then n:=365-31-28-31-30-31-30-31-31-x else; if y=10 then n:=365-31-28-31-30-31-30-31-31-30-x else; if y=11 then n:=365-31-28-31-30-31-30-31-31-30-31-x else; if y=12 then n:=365-31-28-31-30-31-30-31-31-30-31-30-x else; end; writeln ('До Нового года осталось: ',n); end.
Используем достаточно хорошо известный "индийский алгоритм" возведения в степень. Я не буду здесь его приводить из-за достаточно большого объема сопровождающих рассуждений; все легко находится в Интернет по фразе "индийский алгоритм возведения в степень".
function Power(x: double; n: integer): double; var p: double; flag: boolean; begin p := 1; flag := true; while flag do begin if odd(n) then p := p * x; n := n div 2; if n > 0 then x := x * x else flag := false end; power := p end;
var x: double; n: integer;
begin Writeln('Введите число и натуральную степень, в которую его надо возвести'); Readln(x, n); Writeln('Результат: ', Power(x, n)) end.
Тестовое решение: Введите число и натуральную степень, в которую его надо возвести 3.6 11 Результат: 1316217.03842267
var x,y,z,n:real;
begin
write('Введите сегодняшнее число: ');
readln(x);
write('Введите номер сегодняшнего месяца: ');
readln(y);
begin
if y=1
then n:=365-x
else;
if y=2
then n:=365-31-x
else;
if y=3
then n:=365-31-28-x
else;
if y=4
then n:=365-31-28-31-x
else;
if y=5
then n:=365-31-28-31-30-x
else;
if y=6
then n:=365-31-28-31-30-31-x
else;
if y=7
then n:=365-31-28-31-30-31-30-x
else;
if y=8
then n:=365-31-28-31-30-31-30-31-x
else;
if y=9
then n:=365-31-28-31-30-31-30-31-31-x
else;
if y=10
then n:=365-31-28-31-30-31-30-31-31-30-x
else;
if y=11
then n:=365-31-28-31-30-31-30-31-31-30-31-x
else;
if y=12
then n:=365-31-28-31-30-31-30-31-31-30-31-30-x
else;
end;
writeln ('До Нового года осталось: ',n);
end.