Другие языки программирования и технологии

Turbo Pascal. 2 задачи на процедуры и функции

ничего не получается, помогите пожалуйста!!! :( Задача1. Тема: процедура с числовыми параметрами Описать процедуру AddLeftTwoDigit(D,K),добавляющую к целому положительному числу K слева цифры D, D^2 (D-входной параметр целого типа, лежащий в диапазоне 1-9, К - параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры последовательно добавить к данному числу К слева данные цифры D1 и D2, выводя результат каждого добавления Задача2. Тема: функции с числовыми параметрами Используя функцию IsLeapYear (IsLeapYear(Y) - функция логического типа, которая возвращает True, если Y (целое положительное число) является високосным, и False в противном случае), описать функцию целого типа MonthDays(M,Y), которая возвращает количество дней для M-го месяца года Y (1<=M<=12 , Y>0 - целые числа). Вывести значение функции Month Days для данного года Y и месяцев M1,M2,M3. Заранее спасибо!!!
Доброго времени суток.

1. Типо не так, korol ariya. Во-первых, процедура не имеет типа, а во-вторых, нигде не сказано, что К однозначное число, поэтому нужно сначала определить разрядность К.

procedUre AddLeftTwoDigit(D:integer; var K:integer);
var n, i, D2 : Integer;
begin
D2 := D * D; {квадрат числа D}
n := 0; {разрядность числа К}
i := k; {копия числа К}
while i > 0 do begin
n := n + 1;
i := i div 10;
end;

{начинаем добавлять}
for i:=1 to n do D := D * 10;
K := D + K;
n := n + 1; {разрядность увеличилась}
WriteLn(K);

for i:=1 to n do D2:= D2 * 10;
K := D2 + K;
WriteLn(K);
end;

Проще было бы сделать через строки: преобразовать числа в строки, объединить получившиеся строки и преобразовать результат обратно в число. Или хотя .s разрядность определить как длину строки.

Str(K, S);
n := Length(S);

2. Понимаю так, что с IsLeapYear(Y) проблем нет и надо только разобраться с MonthDays(M,Y). Это вообще просто.

function MonthDays(M,Y: Integer): Integer;
const
DayInMonth : array[1..12] of Byte = (31,28,31,30,31,30,31,31,30,31,30,31);
begin
if M = 2 then MonthDays := DayInMonth[M] + Integer(IsLeapYear(Y))
else MonthDays := DayInMonth[M];
end;

Остальное сами.

Удачи!
СК
Сергей Кужелев
59 613
Лучший ответ
в google... что то подобное видел
procedUre AddLeftTwoDigit(D,K:integer):integer;
begin
k:=k+d*10;
k:=k+d^2*100;
result k;
end;
Типо так?