Другие языки программирования и технологии
Помогите решить задачку в паскале!!!
Дано вещественное число содержащее 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.
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.
ненужные фичи:
- поддержка как точки так и запятой в качестве разделителя
- поддержка ввода только целой (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.
- поддержка как точки так и запятой в качестве разделителя
- поддержка ввода только целой (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.
Похожие вопросы
- Люди помогите решить задачку!!!на паскале
- Помогите решить задачку в паскале на циклы. Вычисоить: y=cos(1+cos(2+...+cos(39+cos40)...))
- Помогите, пожалуйста, решить задачку на паскале. Заранее благодарна.
- Помогите простенькие задачки по паскалю решить??)
- Знатоки Турбо Паскаля, помогите решить задачки для 7-го класса. Дочке очень нужно.
- помогите решить задачку по информатике на паскале. найти минимальный и максимальный элемент двухмерного массива
- помогите решить задачку, как её писать в паскале?
- Помогите пожалуйста решить задачку на паскале! (циклы с параметром)!!за ранее спасибо!
- Помогите решить задачку по программированию в Паскале!
- Помогите решить задачку простенькую.