Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Tanatholog
0 / 0 / 1
Регистрация: 10.07.2017
Сообщений: 13
#1

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

10.07.2017, 10:54. Просмотров 379. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выбросить из натурального числа цифры 0 и 5 (Pascal ABC):

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

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

выбросить из записи числа n цифры... - Pascal
всем приветик... помогите кто может... с помощью while написать программу .. дано натуральное число п, выбросить из записи числа n...

Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр - Pascal
Всем доброго времени суток. Нужна помощь в написании кода (как сам ни старался, но осознал лишь, что реальный "чайник" в этом). Дано...

Текстовый файл содержит несколько целых чисел, выбросить из записи числа цифры 0 и 2 - Pascal
Помогите сделать задание! первая часть уже сделана, исходя из нее, надо сделать дальше! ЗАДАНИЕ Текстовый файл содержит несколько...

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

13
Constantin Cat
2368 / 902 / 288
Регистрация: 28.02.2015
Сообщений: 2,150
Завершенные тесты: 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
2368 / 902 / 288
Регистрация: 28.02.2015
Сообщений: 2,150
Завершенные тесты: 1
10.07.2017, 12:33 #4
Цитата Сообщение от Tanatholog Посмотреть сообщение
Определить функцию f(n), значением которой является натуральное число, получаемое выбрасыванием из записи натурального числа n первой справа цифры 0 или 5.
Такое условие: найти первую цифру справа 0 или 5, выбросить её, остальное оставить без изменений.
Или я что-то не так понял?
0
Puporev
Модератор
54030 / 41663 / 14738
Регистрация: 18.05.2008
Сообщений: 97,954
10.07.2017, 12:49 #5
Ему видимо нужно последовательно выкинуть все цифры 0 и 5.
0
Hitoku
Модератор
1687 / 1286 / 671
Регистрация: 28.10.2016
Сообщений: 4,197
Завершенные тесты: 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
Модератор
54030 / 41663 / 14738
Регистрация: 18.05.2008
Сообщений: 97,954
10.07.2017, 13:07 #7
Цитата Сообщение от Hitoku Посмотреть сообщение
Вариант со строками
Тогда задача звучала так
Удалить из строки все символы 0 и 5.
И не нужно химичить.
0
Hitoku
Модератор
1687 / 1286 / 671
Регистрация: 28.10.2016
Сообщений: 4,197
Завершенные тесты: 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
2368 / 902 / 288
Регистрация: 28.02.2015
Сообщений: 2,150
Завершенные тесты: 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
Модератор
54030 / 41663 / 14738
Регистрация: 18.05.2008
Сообщений: 97,954
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
Привет! Вот еще темы с ответами:

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

Проверить являются ли цифры числа степенями двойки, если да, то возвести такие цифры в квадрат и сложить - Pascal
Необходимо написать программу с циклом или циклами, которая проверяет являются ли цифры числа степенями двойки, если да, то возвести такие...

Вывести на экран все трехзначные числа, сумма первой и третьей цифры которых больше второй цифры. - Pascal
Хорошая тема,поэтому ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ!!!! Условие: Вывести на экран все трехзначные числа, сумма первой и третьей цифры которых...

Вывести на экран все трехзначные числа, сумма первой и третьей цифры которых больше второй цифры. - Pascal
Вывести на экран все трехзначные числа, сумма первой и третьей цифры которых больше второй цифры.(решить используя цикл с предусловием и с...


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

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

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