Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
1

Выбросить из натурального числа цифры 0 и 5

10.07.2017, 10:54. Просмотров 426. Ответов 13
Метки нет (Все метки)

Доброго времени суток!
Только начал разбираться в Паскале. Есть задача:

Определить функцию f(n), значением которой является натуральное число, получаемое выбрасыванием из записи натурального числа n первой справа цифры 0 или 5. Например, f(13510) = 1351, f(1351) = 131.

Ничего не получается. Смог нарисовать только чтобы это число просчитывалось через mod 10 и dev 10 и записывалось целым числом, а не отдельными цифрами и в нужной последовательности.
А как выкинуть цифры?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  N, X, M: integer;
 
begin
  write('Введите натуральное число N:');
  readln(N);
  M :=0; 
  X :=1;
  while N > 0 do 
  begin
    M := M + (N mod 10)*X; 
    N := N div 10 
    X :=X*10
  end;
  writeln(' Результат: ', M);
 
 end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2017, 10:54
Ответы с готовыми решениями:

Дано четырехзначное число n. Выбросить из записи числа цифры 0 и 5, оставив прежним порядок остальных цифр.
Дано четырехзначное число n. Выбросить из записи числа цифры 0 и 5, оставив...

Первая и вторая цифры натурального числа
Помогите решить c repeat Дано натуральное число M. Написать программу для...

Найти сумму первой и последней цифры натурального числа N
Найти сумму первой и последней цифры натурального числа N

Вычеркнуть все вхождения заданной цифры из записи натурального числа
Есть решение , нужно переделать с помощью рекурсивной функции или процедуры. ...

Найти наибольшую и наименьшую цифры в записи данного натурального числа
Составить программу для решения следующей задачи :Найти наибольшую и наименьшую...

13
Constantin Cat
1943 / 1031 / 364
Регистрация: 28.02.2015
Сообщений: 2,316
Завершенные тесты: 1
10.07.2017, 12:11 2
можно так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  fx:boolean;
  n:integer;
function f(a:integer):integer;
  begin
    if(a>0)and fx then
      begin
        if(a mod 10 =0)or(a mod 10 =5)then
          begin
            fx:=false;
            f:=f(a div 10);
          end
          else f:=f(a div 10)*10+a mod 10;
      end else f:=a;
  end;
begin
  write('enter n:');
  readln(n);
  fx:=true;
  writeln('result :=',f(n));
end.
0
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
10.07.2017, 12:17  [ТС] 3
И программа останавливается после первого же найденного нуля или 5.
0
Constantin Cat
1943 / 1031 / 364
Регистрация: 28.02.2015
Сообщений: 2,316
Завершенные тесты: 1
10.07.2017, 12:33 4
Цитата Сообщение от Tanatholog Посмотреть сообщение
Определить функцию f(n), значением которой является натуральное число, получаемое выбрасыванием из записи натурального числа n первой справа цифры 0 или 5.
Такое условие: найти первую цифру справа 0 или 5, выбросить её, остальное оставить без изменений.
Или я что-то не так понял?
0
Puporev
Модератор
54582 / 42088 / 29061
Регистрация: 18.05.2008
Сообщений: 99,260
10.07.2017, 12:49 5
Ему видимо нужно последовательно выкинуть все цифры 0 и 5.
0
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
10.07.2017, 13:04 6
Вариант со строками
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var a,i:integer;
    s:string;
begin
  readln(a);
  s:=IntToStr(a);
  i:=1;
  while i<=length(s) do begin
    if (s[i]='0') or (s[i]='5') then begin
      delete(s,i,1);
      i:=i-1;
    end else inc(i);
  end;
  a:=StrToInt(s);
  writeln(a);
end.
0
Puporev
Модератор
54582 / 42088 / 29061
Регистрация: 18.05.2008
Сообщений: 99,260
10.07.2017, 13:07 7
Цитата Сообщение от Hitoku Посмотреть сообщение
Вариант со строками
Тогда задача звучала так
Удалить из строки все символы 0 и 5.
И не нужно химичить.
0
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
10.07.2017, 13:23 8
Puporev, ну и итоге-то возвращается integer

Добавлено через 22 секунды
Вводится и возвращается
0
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
10.07.2017, 13:41  [ТС] 9
Puporev, Да, да. Нужно из числа, например: 1050358049, выбросить все 0 и 5 чтобы получилось 13849.

Hitoku, надо обойтись без строк.

Добавлено через 10 минут
Вот концовка задачи: для данного натурального
числа m, примените функцию f последовательно необходи-
мое число раз, так чтобы в записи m не осталось цифр 0 и 5.
0
Constantin Cat
1943 / 1031 / 364
Регистрация: 28.02.2015
Сообщений: 2,316
Завершенные тесты: 1
10.07.2017, 14:33 10
Цитата Сообщение от Tanatholog Посмотреть сообщение
Вот концовка задачи: для данного натурального числа m, примените функцию f последовательно необходимое число раз, так чтобы в записи m не осталось цифр 0 и 5.
Сразу написать было трудно.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
  fx:boolean;
  n:integer;
function f(a:integer):integer;
  begin
    if(a>0)and fx then
      begin
        if(a mod 10 =0)or(a mod 10 =5)then
          begin
            fx:=false;
            f:=f(a div 10);
          end
          else f:=f(a div 10)*10+a mod 10;
      end else f:=a;
  end;
begin
  write('enter n:');
  readln(n);
  repeat
    fx:=true;
    writeln(n);
    n:=f(n);
  until fx;
  writeln('result :=',n);
end.
1
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
10.07.2017, 16:01  [ТС] 11
Вот почему у самого ума не хватает написать, а как в готовое решение носом ткнут, так по коду все понятно становится?
Спасибо за такое элегантное решение!
0
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
23.10.2017, 08:26  [ТС] 12
Запутался в блок-схеме.
Отдельно рисовать схему функции и потом вставлять ее в основную схему?
В общем, помогите начинающему нарисовать!!!
0
Puporev
Модератор
54582 / 42088 / 29061
Регистрация: 18.05.2008
Сообщений: 99,260
23.10.2017, 09:06 13
Цитата Сообщение от Tanatholog Посмотреть сообщение
Отдельно рисовать схему функции и потом вставлять ее в основную схему?
Да, схема функции рисуется отдельно, а на схеме основной программы просто в блоке
Название: Запись.jpg
Просмотров: 10

Размер: 2.0 Кб
Но это можно написать и без функции
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var n,m,k:integer;
begin
write('Введите натуральное число, содержащие цифры 0 и 5 n=');
readln(n);
m:=0;
k:=1;
while n>0 do
 begin
  if not(n mod 10 in [0,5]) then
   begin
    m:=m+(n mod 10)*k;
    k:=k*10;
   end;
  n:=n div 10;
 end;
write(m)
end.
0
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
23.10.2017, 09:20  [ТС] 14
Спасибо, но мне именно функция нужна...
0
23.10.2017, 09:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2017, 09:20

Определить, содержатся ли в записи натурального числа N только нечетные цифры
Определить, содержатся ли в записи натурального числа N, представленного в...

Из данного натурального числа удалить все цифры А (А вводится с клавиатуры)
Из данного натурального числа удалить все цифры А (А вводится с клавиатуры). ...

Напечатать все цифры не входящее в запись данного натурального числа 22
напечатать все цифры не входящее в запись данного натурального числа 22


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru