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

Помогите решить задачку в паскале!!!

Дано вещественное число содержащее 2 цифры в целой части и 2 в дробной, найти разницу между суммами цифр целой и дробной чамтей числа. Можно использовать abs(x).
var a:real; b:integer;
begin
readln(a); b:=trunc(a*100);
writeln(abs(b div 1000+b div 100 mod 10-b div 10 mod 10-b mod 10));
end.
T.a.e.k.m. !
T.a.e.k.m. !
79 886
Лучший ответ
ненужные фичи:
- поддержка как точки так и запятой в качестве разделителя
- поддержка ввода только целой (48) или дробной части (.79)
- поддержка чисел неограниченной длинны

нужные фичи:
- защита от ввода некоректных чисел и не чисел вообще
- поддержка отрицательных и явных положительных чисел

отличия:
- не трахает CPU кучей делений и преобразований (изначально число вводится как строка а не число)
- не обваливается непонятными exception
- может быть запущена как независимое приложение без моментального завершения (раскоментить readln)
- работает не только в .Net
- не производит вычисления если была введена только одна часть числа
- используются только сложения и вычитания
- время выполнения увеличивается при росте длинны числа

P.S. меня немножко унесло xD

var
number: String;
floatPart, intPart, i, tmp: Integer;
begin
floatPart := 0; intPart := -1; i := 1;
write('Type number: '); readln(number);
if (number[1] = '+') or (number[1] = '-') then i := 2;
for i := i to length(number) do begin
if (number[i] = '.') or (number[i] = ',') then begin
if intPart = -1 then begin intPart := floatPart; floatPart := 0; continue; end
else begin writeln('Number is not valid'); {readln();} exit; end;
end;
tmp := Ord(number[i]) - 48;
if (tmp < 0) or (tmp > 9) then begin writeln('Not a number'); {readln();} exit; end;
floatPart := floatPart + tmp;
end;
if intPart < 1 then writeln('Difference: ', floatPart)
else writeln('Difference: ', abs(floatPart - intPart));
//readln();
end.
Иван ****************
Иван ****************
5 038