Pascal ABC (while(a / 10) error)
в вашем вопросе два разных по сути. Надо задавать два разных вопроса. Еще посмотрите как вы привели код. Откуда выдернут второй кусок? что значит ++ между кусками кода? Текст в начале перегружен смайликами, фрагменты кода не выделены «
10 ноя 2016 в 22:13
@4per 2 блок кода я имел ввиду то как сделал на с++ )) В программу (1 TextBox ) я ввожу число без разделения (987654) после я это число записываю в массив для сортировки но т.к (987654) является единым числом поэтому чтоб разделить его. я произвожу следующее действие — это число делю на 10 и записываю по очереди в массив. Но размер массива я указываю вручную и следовательно могу ввести только определенное количество данных в него. я прошу вас помочь с тем чтоб когда я ввожу в TextBox число например (4321) программа видела что у нас в TextBox 4 значения и следовательно массив будет для 4 🙂
«Переворот» числа
Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.
- n , m — исходное число и «перевернутое»;
- a — временное хранение очередной цифры, которая «переносится» из одного числа в другое.
Алгоритм решения задачи сводится к следующему циклу: 1) взять последнюю цифру в первом числе; 2) записать ее в конец второго; 3) убрать последнюю цифру из первого числа. Таким образом последняя цифра первого числа окажется первой цифрой во втором; предпоследняя цифра первого числа — второй во втором числе и так далее
- Находим остаток ( mod ) от деления числа n на 10. Результат сохраняем в переменной a .
- На каждом шаге разрядность m надо увеличивать на единицу, то есть умножать на 10. Например, если было число 56, то, умножив его на 10, получим 560. Далее следует прибавить остаток из переменной a , например, 3. В итоге получим 563. Получаем формулу: m = m * 10 + a .
- Делим n нацело на 10, тем самым избавляемся от младшего разряда.
Программа на языке Паскаль:
var n, m: longint; a: byte; begin readln(n); m := 0; while n > 0 do begin a := n mod 10; m := m * 10 + a; n := n div 10; end; writeln(m); end.
Пример выполнения программы:
40013 31004
Как разбить число на цифры в паскале
Новое в библиотеке
- Проблемы изучения математики в 3 кла.
- Проверить будет ли число простым — P.
- Сумма цифр числа в Python
- Пузырьковая сортировка в Python
- Алгоритм Эвклида для НОД в Python
- Все материалы библиотеки
Лучшее на сайте
- Онлайн-решебник задач
- MathPad -математический блокнот
- LaTeX+MarkDown редактор формул
- Универсальный калькулятор
- Числовой калькулятор
- Сфоткай и добавь свою задачу
- Решения задач из Сканави
- Характеристика студента онлайн
- Диаграммы и графики онлайн
- Конструктор программ на Паскале
- Самые популярные материалы
- Доска почета: лучшие пользователи
Анекдоты и фразы
«Завтра у меня высшая математика. Или я у высшей математики? «
Как разбить число на цифры в паскале
Всем привет. Я интересуюсь как например разложить число 153 -> на 1 5 3 по отдельности программным спопособм. Тоесть получить цифры из которых состоит число.
Меня интересует только сам математический алгоритм, но можно и пример на C or Pascal.
Вариант типо записать в строку, а потом выделить числа не принимается я ищу математический метод, который пока не могу придумать.
Регистрация: 09.01.2008
Сообщений: 26,238
x mod 10 — вернёт последнюю цифру числа x
потом сдвигаем число, разделив его целочисленно на 10:
x := x div 10
повторяем, пока x > 0
| Serge_Bliznykov |
| Посмотреть профиль |
| Найти ещё сообщения от Serge_Bliznykov |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
Два способа получения отдельной цифры:
1. (не помню на паскале это актуально или нет =\) Нуу в общем переведи в строку число и дергай по символу =))), т.е. это так как наш мозг работает =)))
2. для получения i-ой цифры (m) в числе n:
m=(n mod (10 ^(i))) div (10 ^ (i-1))
Помог? Ну так нажми на весы!
