Запишите в переменную S сумму первых после десятичной точки трех цифр вещественного числа Y - PascalABC.NET
Формулировка задачи:
Уважаемые господа! Помогите советом:
В вещественной переменной Y записано некоторое неотрицательное число, не превосходящее 30000. Запишите в переменную S сумму первых после десятичной точки трех цифр числа Y. Можно использовать дополнительные переменные любых типов.
Решение задачи: «Запишите в переменную S сумму первых после десятичной точки трех цифр вещественного числа Y»
textual
Листинг программы
var y:real;
s:string;
i,p,sum:byte;
begin
repeat
write('Введите вещественное число с дробной частью y=');
readln(y);
until frac(y)<>0;
s:=floattostr(y);
p:=pos('.',s);
while length(s)-p<3 do s:=s+'0';
sum:=0;
for i:=p+1 to p+3 do
sum:=sum+strtoint(s[i]);
write(sum)
end.
Объяснение кода листинга программы
- В первой строке объявляются три переменные:
yтипа real (вещественное число),sтипа string (строка) и две булевые переменныеiиpтипа byte (для цикла и обработки строки). Значения переменных не присваиваются. - Затем используется цикл repeat-until для ввода числа от пользователя до тех пор, пока его дробная часть не станет равной нулю.
- Во время каждой итерации цикла переменная
sприсваивается строковое представление числаy, а переменнаяpполучает позицию десятичной точки в этой строке. - Если длина строки
sменьше трех символов после десятичной точки, то к строке добавляются нули до тех пор, пока длина не достигнет требуемого значения. - Затем в цикле for перебираются символы с позиции
p+1доp+3в строкеsи к переменнойsumприбавляется их числовое значение, полученное с помощью функции strtoint. - Наконец, значение переменной
sumвыводится на экран.