Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
1

Объединить цифры в одно число

22.09.2018, 00:15. Просмотров 827. Ответов 10
Метки нет (Все метки)

Уважаемые форумчане,

решая одну прикладную задачку, столкнулся с необходимостью объединения нескольких чисел в одно. В сети нашел аналогичную проблему и ее решение:

ЗАДАЧА:
Как объединить цифры в одно число?
Например:
a: = 45; / / тип longint
b: = 84; / / тип longint
Образовать число c, которое равно объединению цифр a и b, то есть с: = 4584
Реально такая простая вещь, но очень нужно. Только чтобы не переводить цифры в строку (string) и так объединять, потому что это занимает много времени ...
РЕШЕНИЕ:
i:=1;
while (b div 10)>0 do begin
inc(i);
b:=b div 10;
end;
for j:=1 to i do
a:=a*10;
c:=a+b;


загнал указаный код в паскаль и результат оказался не 4584, а 4508.
Помогите разобраться, плес, почему ошибка?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2018, 00:15
Ответы с готовыми решениями:

Число-перевертыш, три одинаковые цифры, все цифры различны
Дано натуральное четырехзначное число n. Определить: 1. является ли это число палиндромом...

Программа должна вывести одно число – максимальное число, кратное 5.
Напишите программу, которая в последовательности натуральных чисел определяет максимальное число,...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У пети имеется игровое поле размером 3х3, заполненное числами от 1 до 9. В начале игры он может...

Все четные цифры, которые входят в более чем одно число
Дана последовательность из n натуральных чисел. Написать программу, которая выводит в возростающем...

Дано натуральное число N . Вывести на экран цифры, не превышающие заданной цифры а и вычислить их произведение.
Дано натуральное число N . Вывести на экран цифры, не превышающие заданной цифры а и вычислить их...

10
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4149 / 2743 / 2173
Регистрация: 22.11.2013
Сообщений: 7,666
22.09.2018, 00:27 2
Лучший ответ Сообщение было отмечено DR_GE как решение

Решение

Pascal
1
2
3
4
5
t:=b;
repeat
  a:=a*10; t:=t div 10;
until t=0;
WriteLn(a+b);
1
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
22.09.2018, 00:44  [ТС] 3
Спасибо, bormant!

Можете пояснить, что это за действия t:=t div 10; a:=a*10?
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4149 / 2743 / 2173
Регистрация: 22.11.2013
Сообщений: 7,666
22.09.2018, 00:55 4
t присвоить t деленное нацело на 10; a присвоить a умноженное на 10.
1
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
22.09.2018, 01:13  [ТС] 5
Нет, по отдельным действиям понятно.
Я имел в виду в целом - что это за преобразование?
0
Puporev
Модератор
55479 / 42580 / 29429
Регистрация: 18.05.2008
Сообщений: 100,735
22.09.2018, 10:52 6
Цитата Сообщение от DR_GE Посмотреть сообщение
что это за преобразование?
Пока в числе t есть цифры умножаем а на 10 и сокращаем t в 10 раз, потом суммируем а и b.
Ваш пример
45*10=450
84/10=8
450*10=4500
8/10=0
4500+84=4584
1
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
22.09.2018, 11:14  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
Пока в числе t есть цифры умножаем а на 10 и сокращаем t в 10 раз, потом суммируем а и b.
Спасибо за ответ. Я вероятно не могу правильно изложить свой вопрос...
Я все вычисления понимаю, проделал вручную, как вы и показали, но я хочу понять суть. Ну т.е. почему мы делаем именно так? Это какой-то хитрый математический прием? В целом, по совокупности действий, а не по каждому отдельному действию?
0
Puporev
Модератор
55479 / 42580 / 29429
Регистрация: 18.05.2008
Сообщений: 100,735
22.09.2018, 11:16 8
Цитата Сообщение от DR_GE Посмотреть сообщение
Это какой-то хитрый математический прием?
Да простой прием
45
84
4500+84=4584
1
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
22.09.2018, 11:18  [ТС] 9
АААААААААА!
Ну я тупой....
Спасибо, Puporev, огромное!!!
0
Puporev
Модератор
55479 / 42580 / 29429
Регистрация: 18.05.2008
Сообщений: 100,735
22.09.2018, 11:26 10
Добавляем к первому числу столько нолей сколько цифр во втором числе, умножая его на 10. Чтобы не испортить второе число запоминаем его в переменной t.
1
DR_GE
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 6
22.09.2018, 11:28  [ТС] 11
Спасибо за разъяснение
0
22.09.2018, 11:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2018, 11:28

Программа должна вывести одно натуральное число — N-e в порядке возрастания число-палиндром
Рассмотрим все натуральные числа, запись которых в десятичной системе счисления является...

Вывести на экран наибольшее четное число, если хотя бы одно такое число есть
Даны три целых числа. Вывести на экран наибольшее четное число, если хотя бы одно такое число есть,...

Даны три целых числа. Вывести наибольшее четное число, если хотя бы одно такое число есть
Даны три целых числа. Вывести наибольшее четное число, если хотя бы одно такое число есть, в...


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

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

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