Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача с mod и div

Автор: Strip 14.12.2003 20:24

???Помогите решить задачу! Пожалуйста!!!
Вводится натуральное число N. Определить номер минимальной цифры этого числа

Автор: oleg309 14.12.2003 20:59

Получи остаток используя mod 10

Автор: fms 14.12.2003 21:07

2oleg309
оригинально объяснил..  ;D как будто после этой строчки ему стало намного понятней..  :-/

PS^поковыряйся по форуму.. тут много задач на выделение цифр из числа было.. ну а определить минимальное и потом его номер наверно будет не оч. сложно..

Автор: oleg309 14.12.2003 21:21

Вот пример программы которая отсекает последнюю цифру числа и выводи на экран (в твоём случае это не надо но для примера пойдёт):

Код
While A>0 do
begin
B:=a mod 10;
Dec(A,B);
A:=A div 10;
Writeln('B');
End.

Теперь просто необходимо сравнить эти числа и определить его номер (или разряд?)

Автор: fms 14.12.2003 21:24

я так понимаю номер цифры в числе..)) просто в эту штуку еще счетчик вставить..

Автор: oleg309 14.12.2003 21:28

А может использовать FOR...? И с какой стороны считаь с лева на прово или наоборот, поэтому наверно лучше выводить не номер , а разряд?

Автор: fms 14.12.2003 21:45

как ты фор использовать хочешь?! ты ведь не знаешь сколько цифр в числе..
если делить то естественно получится справа налево. потом счетч. подсч. кол-во цифр и запомнит номер с минимальн. и потом из общ. кол-ва вычесть номер с минимальной цифрой и прибавить 1..) вот и будет настоящий номер мин. цифры.

Автор: oleg309 14.12.2003 21:58

Lim = High(LongInt);      For i:=1 to Lim do.....!!!!!   >:(

Автор: trminator 14.12.2003 22:04

Код

var n: integer;
   i, min, minn, ost : shortint;
begin
   readLn(n); min:=10; i:=0;
   while n > 0 do
   begin inc(i);
       ost:=n mod 10; n:=n div 10;
       if ost < min then begin
                             min:=ost; minn:=i
                         end;
   end;

   writeLn(minn,'-тый разряд минимальный. Он равен ', min);
end.

Цитата
ты ведь не знаешь сколько цифр в числе

при желании можно взять десятичный логарифм - это и будет кол-во цифр - 1. Но это уже извращение.

Цитата
While A>0 do
begin
B:=a mod 10;
Dec(A,B);
A:=A div 10;
Writeln(B);
End.

dec(a, B) здесь явно лишнее. Зачем это делать если все равно потом отбрасываешь последнюю цифру

Автор: fms 15.12.2003 1:05

;D

в общем Стрип если захочет, то допишет что ему надо.. поковыряется по форуму и сделает.. smile.gif

Автор: trminator 15.12.2003 13:38

Что тут дописывать - вроде у меня прога рабочая... или на худой конец почти рабочая

Цитата
Lim = High(LongInt); For i:=1 to Lim do.....!!!!!

Зачем делать цикл на два миллиарда итераций? (все-все, молчу, последний наезд smile.gif )

Автор: oleg309 15.12.2003 18:57

Цитата
;D

в общем Стрип если захочет, то допишет что ему надо.. поковыряется по форуму и сделает.. smile.gif


А оно ему надо? Чё-то у него никаких вопросов не возникает, или мы тут зря рамсим?! ;)

Автор: trminator 15.12.2003 21:07

Все, уже флуд пошел!