Консультация № 175735
30.12.2009, 04:16
0.00 руб.
0 4 2
Помогите пожалуйста с задачками:
1)Добавить к целому положительному числу слева заданную цифру
2)Найти к-ую цифру целого положительного числа (при нумерации цифр в числе справа налево).Если количество цифр в числе меньше к, выдать об этом сообщение

очень жду ответа

Обсуждение

давно
Профессор
401888
1232
30.12.2009, 06:50
общий
это ответ
Здравствуйте, angel.nero!
Решение задач в приложении.

Приложение:
1)Добавить к целому положительному числу слева заданную цифру
uses crt;
var a,b,k:longint;
begin
clrscr;
repeat
write('Введите целое положительное число не более 99 999 999 a=');{чтобы при вводе цифры не получить число,
выходящее за предел типа longint}
readln(a);
until (a>0)and(a<100000000);
repeat
write('Введите цифру, которую добавить слева от 1 до 9 k=');
readln(k);
until k in [1..9];
b:=a;{запомним число}
while a>0 do{пока число не ноль}
begin
a:=a div 10;{делим его на 10, считаем разряды}
k:=k*10;{цифру умножаем на 10, повышаем разряд}
end;
b:=k+b;{прибавляем к числу}
write(b);
readln
end.
2)Найти к-ую цифру целого положительного числа (при нумерации цифр в числе справа налево).Если количество цифр в числе меньше к, выдать об этом сообщение
uses crt;
var a:longint;
k,i,c:byte;
begin
clrscr;
repeat
write('Введите целое положительное число a=');
readln(a);
until a>0;
repeat
write('Введите нoмер цифры справа от 1 до 9 k=');
readln(k);
until k in [1..9];
c:=0;
while (a>0)and(c<k) do{пока число не ноль и номер цифры справа меньше заданного}
begin
i:=a mod 10;{отделяем справа цифры}
c:=c+1;{считаем}
a:=a div 10;{берем число без последней цифры и все повторяем}
end;
if (a=0) and (c<k) then write('В числе нет ',k,' цифр!'){если "разобрали" число
и в нем нет столько цифр}
else write('Цифра № ',k,'=',i);
readln
end.
2)Найти к-ую цифру целого положительного числа (при нумерации цифр в числе справа налево).Если количество цифр в числе меньше к, выдать об этом сообщение
uses crt;
var a:longint;
k,i,c:byte;
begin
clrscr;
repeat
write('Введите целое положительное число a=');
readln(a);
until a>0;
repeat
write('Введите нoмер цифры справа от 1 до 9 k=');
readln(k);
until k in [1..9];
c:=0;
while (a>0)and(c<k) do{пока число не ноль и номер цифры справа меньше заданного}
begin
i:=a mod 10;{отделяем справа цифры}
c:=c+1;{считаем}
a:=a div 10;{берем число без последней цифры и все повторяем}
end;
if (a=0) and (c<k) then write('В числе нет ',k,' цифр!'){если "разобрали" число
и в нем нет столько цифр}
else write('Цифра № ',k,'=',i);
readln
end.
Неизвестный
30.12.2009, 14:12
общий
30.12.2009, 15:17
это ответ
Здравствуйте, angel.nero!
Ответы в приложении

Приложение:
1) k := k * 10 + d
k - число
d - цифра
2)
for i := 1 to k do
n := n div 10;
n := n mod 10;
i - целочисленная переменная
k - номер цифры (нумерация от 0)
n - на входе число, на выходе k-ая цифры.
давно
Старший Модератор
31795
6196
30.12.2009, 14:56
общий
Колесников Иван Владимирович:
Цитата: 309917
Добавить к целому положительному числу слева заданную цифру

Цитата: 230753
k := k * 10 + d
k - число
d - цифра

Ваш ответ реализует вариант справа
k := k * 10 + d
k - 12345
d - 6
=123456
а нужно вариант слева
=612345
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.12.2009, 15:15
общий
Код:
var
a,b,c:longint;
function F(d,e:longint):longint;
begin
if d>0 then F:=F(d div 10,e)*10+(d mod 10)
else F:=e;
end;
begin
{вводим число}
repeat
write('Enter A:');
readln(a);
until (a>0)and(a<100000);
{вводим цифру}
repeat
write('Enter B:');
readln(b);
until (b<10)and(0<=b);
{получаем число}
c:=F(a,b);
write('Result:',c);
readln;
end.

Первый вариант с рекурсией.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа