![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Nutka_Chayka |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 3.10.2012 Город: Харьков, Украина Вы: студент ![]() |
Добрый вечер!=)
Помогите, пожалуйста, решить вот такую задачу: Дано целое число. Получить новое число, удалив из исходного все единицы. Порядок цифр оставить прежним. У меня вот что получилось, но это срабатывает только в том случае, если число например 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; Readln (n); a:=n mod 10; b:=a; n:=n div 10; 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. |
![]() ![]() |
Julia |
![]()
Сообщение
#2
|
Ассистент ![]() ![]() ![]() ![]() Группа: Julia Сообщений: 593 Регистрация: 23.2.2007 Город: Улан-Удэ Учебное заведение: БГУ Вы: преподаватель ![]() |
Добрый вечер!=) Помогите, пожалуйста, решить вот такую задачу: Дано целое число. Получить новое число, удалив из исходного все единицы. Порядок цифр оставить прежним. У меня вот что получилось, но это срабатывает только в том случае, если число например 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 и умножайте на очередную цифру. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 28.5.2025, 3:37 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru