Здравствуйте, гость ( Вход | Регистрация )
| Nutka_Chayka |
3.10.2012, 17:00
Сообщение
#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 |
6.10.2012, 4:28
Сообщение
#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 и умножайте на очередную цифру. |
Nutka_Chayka Задача на паскале 3.10.2012, 17:00
Sergio Ramos Что если исходное число представить как массив циф... 5.10.2012, 5:14
Nutka_Chayka Проблема была в том, что массивы нельзя было испол... 5.10.2012, 13:58
Sergio Ramos Ну ок. Паскаль не помню и не хочу вспоминать.
//... 5.10.2012, 19:13![]() ![]() |
|
Текстовая версия | Сейчас: 19.4.2026, 17:34 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru