IPB

Здравствуйте, гость ( Вход | Регистрация )

> Задача на паскале, Не получается решить задачу на паскале. Половина сделана, а дальше сту
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
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



Цитата(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 и умножайте на очередную цифру.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 28.5.2025, 3:37

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru