Условие задачи: Написать программу, которая будет выводить запись числа в обратном порядке. Число вводит пользователь.
Сложность: легкая.
Естественно сначала стоит сказать как мы будем решать эту задачу. Мы воспользуемся операциями mod и div.
Информация div — находит целую часть от деления
mod — находит остаток от деления
Сразу примерчик. Допустим у нас есть число 234. Занесем его в переменную например number. Теперь применим к нему операцию mod чтобы оторвать от него последнюю цифру и эту цифру тоже занесем в переменную.
Выглядеть это будет так :
Из этой переменной i мы и будем составлять наше число.
Создадим переменную для нашего перевернутого числа , пусть она называется conv , сокращенно от conversely что в переводе с англ. наоборот.
Смотрите что я сейчас сделаю :
conv := 0 ; number := 234 ; i := number mod 10 ; conv := conv* 10 + i ; |
Функция random в pascal, программа для генерации случайных чисел на языке Паскаль
И что у нас получиться, если мы подставим 3? Переменная conv у нас и будет равняться 3. Еще осталось два числа. Нам нужно из переменной number убрать лишнее число, т.е. последнее, т.к. нам уже нужна следующая цифра.
Тут нам поможет операция div. Пишем :
Вот код который у нас на данный момент :
number := 234 ; i := number mod 10 ; conv := conv* |
Теперь нужно добавить цикл, чтобы эти операции выполнялись несколько раз, но сколько ? Они у нас будет выполняться пока наше число number будет иметь какие-то цифры, т.е. будет больше нуля.
number := 234 ; while (number > 0 ) do begin i := number conv := conv* number := number end |
Вот как-то так , теперь если мы проделаем туже операцию несколько раз то у нас запишется число в обратном порядке.
Если не поняли, то возьмите бумажку напишите число и просто проделайте эту операцию, тогда точно всё поймёте.
Весь код программы :
uses crt; var number, conv, i : begin i := number conv := conv* number := number end |
Паскаль с нуля [ч6]. Циклы. While, repeat-until, for.
Предыдущая
Источник: sprint-olympic.ru
Перевернуть число (Pascal)
Задача: дано натуральное число. Записать его в обратном порядке. Например, 12345 должно превратиться в 54321. Решение заключается в преобразовании числа в строку и выводу ее символов в обратном порядке:
program One_1; uses CRT; var x: longint; i, err: integer; s, z: string; begin ClrScr; readln(x); str(x, s); z := »; for i := length(s) downto 1 do z := z + s[i]; val(z, x, err); writeln(x); readln; end.
Просмотр 0 веток ответов
- Для ответа в этой теме необходимо авторизоваться.
Наша группа ВКонтакте.
-
Поиск пути в лабиринте (C++) опубликовано Васильев Владимир Сергеевич
1 неделя, 5 дней назад
2 недели, 2 дня назад
1 месяц назад
1 месяц, 2 недели назад
1 месяц, 2 недели назад
Источник: pro-prof.com
Подскажите где ошибка в перевороте числа (Pascal ABC)
я только учусь. Хотел посмотреть как можно использовать функцию в программе. Как я понял из литературы при помощи функции можно провести подсчет, а потом вывести результат.
30 окт 2015 в 16:36
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вам надо просто вызывать функцию, а не выводить ее возвращаемое значение, которое как видим есть 0. То есть так PowerA (a,b); вместо write (PowerA (a,b)); . Если бы ваша функция набирала строку (или число), а потом возвращала результат, то вызов write (PowerA (a,b)); был бы правильным. Но у вас функция сама выводит результат по одной цифре и ничего не возвращает (точнее ничего осмысленного — в итоге возвращается ноль).
Отслеживать
3,610 2 2 золотых знака 18 18 серебряных знаков 32 32 бронзовых знака
ответ дан 30 окт 2015 в 16:49
3,471 2 2 золотых знака 20 20 серебряных знаков 42 42 бронзовых знака
Спасибо за помощь. сам бы тупил долго.
30 окт 2015 в 16:57
30 окт 2015 в 16:59
Функции обычно используются иначе.
В Pascal функция возвращает результат. Возвращает она его через специальную переменную, имя которой совпадает с именем функции (или переменная result, в fpc). Тип возвращаемого значения определяется после двоеточия в объявлении функции. У вас он integer. В функцию передаются значения, необходимые для подсчёта результата.
В вашем случае у функции должен быть один параметр — число, которое необходимо «перевернуть». И из функции необходимо вернуть перевёрнутое число. Внутри функции вывод возможен — но в практических целях это почти бессмысленно.
Если вы хотите перевернуть число таким способом — вам лучше использовать процедуру.
0 у вас в конце — это вывод write (PowerA (a,b)), функция вернула 0, а write его вывела.
write (PowerA (a,b))
и выведется верный результат.
Источник: ru.stackoverflow.com