![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
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. |
Sergio Ramos |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 86 Регистрация: 16.11.2010 Город: Saratov ![]() |
Что если исходное число представить как массив цифр. Затем пройтись по этому массиву , заменив 1, к примеру, на -1. И по все тому же массиву восстановить новое число.
например, 2314 a0 a1 a2 a3 2 3 1 4 ------------- a0 a1 a2 a3 2 3 -1 4 Ответ 234 Если число отрицательное, то достаточно ввести какую-нибудь переменную sign и в конце домножить результат на sign. |
Nutka_Chayka |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 2 Регистрация: 3.10.2012 Город: Харьков, Украина Вы: студент ![]() |
Проблема была в том, что массивы нельзя было использовать( иначе я бы и сама решила ее, а так запуталась
|
Sergio Ramos |
![]()
Сообщение
#4
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 86 Регистрация: 16.11.2010 Город: Saratov ![]() |
Ну ок. Паскаль не помню и не хочу вспоминать.
// ввели число n ............... public static int parseNum(int n) { int result = 0; // результирующее число int sign = (n > 0) ? 1 : -1; // переменная, кот. отвечает за знак. если число положит.,то 1, иначе -1 int des = 1;// переменная, отвечающая за степень 10 при восстановлении результирующего числа n = Math.abs(n); // возьмем исходное число по модулю, тк его знак мы уже учитываем while (n > 0) { int ch = n % 10; // отщепляем с конца очередную цифру if (ch != 1) { // если она не 1, то спокойно приписываем к результату, домножив на соотв. степень 10 result += ch * des; //result = result+ ch*des; des *= 10; } n /= 10; } return sign * result;// получаем новое число с учетом знака } *** a+=b <-> a=a+b a*=b <-> a=a*b и т.д. ....................... / - это div % - это mod |
Julia |
![]()
Сообщение
#5
|
Ассистент ![]() ![]() ![]() ![]() Группа: 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 и умножайте на очередную цифру. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 13:37 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru