Цитата(Nutka_Chayka @ 4.10.2012, 1:00) *

Добрый вечер!=)
Помогите, пожалуйста, решить вот такую задачу:
Дано целое число. Получить новое число, удалив из исходного все единицы. Порядок цифр оставить прежним.
У меня вот что получилось, но это срабатывает только в том случае, если число например 1234. Если взять 4321 (то есть в конце стоит 1), то просто выдает исходное=(((

Как мне исправить это? Что нужно дописать, чтобы даже если к в конце стоит 1, срабатывало?

Очень-очень нужно...((
program lab5;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
n,b,a: Integer;
begin
Writeln ('vvedite chislo' );
If n<0 then n:=-n; //n еще не введено, что вы проверяете?
Readln (n);
a:=n mod 10;
b:=a; //последнюю цифру не проверив переносите в новое число
n:=n div 10;
b:=0; //правильная инициализация переменной b
repeat
a:= (n mod 10) ;

if (a<>1) then begin b:=b*10+a;
end;
n:= n div 10;
while a=1 do a:= (n mod 10) //ерунда какая-то
until n=0 ;

a:=b mod 10;
n:=a;
b:=b div 10;
repeat
a:= (b mod 10) ;
n:=n*10+a;

b:= b div 10;
until b=0 ;
write (n);
Readln;

end.


Можно вполне одним циклом обойтись и собирать число в "прямом" порядке. Считайте в цикле степень числа 10 и умножайте на очередную цифру.