While n > 0 do begin
S := S + n mod 10;
n := n div 10;
<span>end;а</span>
<u><em>PascalABC.Net:</em></u>
procedure GetData(var a,b:longint; var k:char);
{ ввод исходных данных }
begin
Write('Введите через пробел натуральные границы диапазона: ');
Readln(a,b);
Write('Введите искомую цифру: ');
Readln(k)
end;
procedure Summa(a,b:longint;k:char;var s:longint);
{ подсчет суммы чисел из интервала [a,b],
содержащих цифру k }
var
i:integer;
ci:string;
begin
s:=0;
for i:=a to b do begin
Str(i,ci);
if Pos(k,ci)>0 then s:=s+i
end
end;
var
a,b,sum:longint;
k:char;
begin
GetData(a,b,k);
Summa(a,b,k,sum);
Writeln('Сумма чисел, содержащих цифру ',k,' равна ',sum)
end.
<em><u>Тестовое решение:</u></em>
Введите через пробел натуральные границы диапазона: 50 150
Введите искомую цифру: 6
Сумма чисел, содержащих цифру 6 равна 1589
1. В приведенном коде ошибка. Не хватает ";" в третьей строке снизу.
2. Немного изменим ваш код и получим искомое значение x
Искомое число х = 16293
var
x, y, a, b, k: integer;
begin
k:=10000;
repeat
x:=k;
a := 0; b := 0; y := 1;
while x > 0 do
begin
if (x mod 10) mod 2 = 0
then
a := a * 10 + x mod 10
else begin
y := y * 10;
b := b * 10 + x mod 10
end;
x := x div 10
end;
a := a * y + b;
k := k + 1;
until a = 26391;
writeln(a:8, k-1:8);
end.
В видеопамяти (20 символов)