Помощь - Поиск - Пользователи - Календарь
Полная версия: Цикл с условием
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Анна
Дано целое число N (>0). Используя операции деления нацело и взятия остатка от деления, вывести все его цифры, начиная с самой правой (разряда едениц) на экран.


Пробелемы ..

uses crt;
var n: byte;

begin
clrscr;

writeln ('Введите число: '); readln (n);
N mod 10;

{ :( }

end.



Как с право на лево вывести цифры? Не знаю.
Дож

base:=1;
While 10*base <= n do begin
base:=base*10;
end;
k:=n;
While base<>1 do begin
write(k div base)
k:=k mod base;
base:=base div 10;
end;
write(k);
volvo
Дож,
var
x: integer;

begin
x := 1265;
while x <> 0 do begin
write(x mod 10);
x := x div 10;
end;
end.

Не проще?
Анна
Мне одни нули выводит, если к примеру было число 547 - результат: 000

Это по программе Дож
Дож
volvo,
твой алгоритм вроде бы печатает цифры в обратном порядке blink.gif
volvo
Цитата
вывести все его цифры, начиная с самой правой (разряда едениц) на экран

Дож, а он что должен делать, как ты думаешь?
Дож
Volvo Да, точно, не заметил...
Анна, все чесно...
Анна
To: Дож
ага, разобралась yes2.gif сорри за ложную тревогу.
Можешь прокомментировать?

To: volvo
А твою программу я понимаю как:

var

x: integer;


begin

x := 1265;

while x <> 0 do begin {пока число не 0 выполняется цикл ...}

write(x mod 10); {выводим остаток от делимого числа}

x := x div 10; {это число делим без остатка и начинаеим цикл снова, до тех пор пока оно не обратится в 0}

end; {заверш. цикл}

end. {заверш. программу}
Дож
Анна, нечто типа этого:

base:=1;
While 10*base <= n do begin
base:=base*10; {Делает в base столько нулей, сколько разрядов в n}
end;
k:=n;{Дабы не испортить значение в n юзаем др. переменную}
While base<>1 do begin
write(k div base){печатаем разряд номер КОЛ_НУЛЕЙ_BASE}
k:=k mod base;{Убираем уже ненужный разряд}
base:=base div 10;{делим base на 10}
end;
write(k);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.