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

совершенно безграмотна в программировании. Нужно было написать программу, которая (+ описание)

При вводе натурального числа икс и количества младших цифр k найдет сумму этих самых младших цифр. У меня получилась какая-то ерунда. Посмотрите, пожалуйста, и напишите где мои ошибки? Или прога совсем неправильная? (язык "Паскаль")
***** Алекс*****
***** Алекс*****
3 470
readln(x,k); s:=0;
while x>0 do begin
if k>0 then begin k:=k-1; s:=s+x mod 10; end;
x:=x div 10;
end;
writeln(s);

короче, не так ли?
можно бы и твою прогу поглядеть, на первый взгляд ничего вопиюще неверного, но во-первых, как выше сказали, без кода в виде копируемого в среду текста сделать что-то проблематично, а во-вторых, отлаживать чужими руками - плохо и ай-яй-яй
Александр Яцын
Александр Яцын
50 628
Лучший ответ
***** Алекс***** Намного короче. осталось понять) сейчас буду разбирать. спасибо Вам большое!
***** Алекс***** конечно, плохо. но не могли бы Вы указать, где ошибки. а я исправить сама попытаюсь.
program ideone;
var x,k,s,c : Integer;
begin
Write('x='); Readln(x);
Write('k='); Readln(k);

while x <> 0 do
begin
c := x mod 10;
if c < k then s := s + c;
x := x div 10;
end;

WriteLn('s=', s);
end.

http://ideone.com/lHewGA
Ввел
1935
5
получил 4, так как 0,1,2,3,4 цифры должны попасть в сумму
если конечно правильно понята задача по кол. цифр (не сказано в числе ли они)

УТОЧНЕНО
задача в том, что если, допустим, введены числа 1235 и 2, то программа должна выдать ответ 8, поскольку две последние/младшие/ цифры 3 и 5, а их сумма =8

http://ideone.com/UlxVjd

program ideone;
var x,k,s,n : Integer;
begin
Write('x='); Readln(x);
Write('k='); Readln(k);

while (x <> 0) and (n < k) do
begin
if n < k then s := s + x mod 10;
x := x div 10;
Inc(n);
end;

WriteLn('s=', s);
end.
***** Алекс***** спасибо Вам
пришли не фото а текст
Гриша Кудря
Гриша Кудря
95 951
***** Алекс***** program al;

var
sum, l, a, k, i, n, X, j: integer;

begin
writeln('введите натуральное число Х и количество младших цифр k');
readln(X, k);
n := X;
a := 0;
while n <> 0 do
begin
n := n div 10;
a := a + 1;
end;
sum := 0;
for i := a downto k do
begin
l := X;
while i > k do
begin
j := l mod 10;
sum := sum + j;
l := l div 10;
end;
end;
writeln(sum);
end.

Похожие вопросы