Написать программу которая переворачивает число паскаль

Условие задачи: Написать программу, которая будет выводить запись числа в обратном порядке. Число вводит пользователь.

Сложность: легкая.

Естественно сначала стоит сказать как мы будем решать эту задачу. Мы воспользуемся операциями 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*
10
+ i ;
number := number
div
10
;

Теперь нужно добавить цикл, чтобы эти операции выполнялись несколько раз, но сколько ? Они у нас будет выполняться пока наше число number будет иметь какие-то цифры, т.е. будет больше нуля.

number :=
234
;
while
(number >
0
)
do

begin

i := number
mod
10
;

conv := conv*
10
+ i ;

number := number
div
10
;

end
;

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

Весь код программы :

uses
crt;
var

number, conv, i :
integer
;
begin
write
(
‘Введите число : ‘
); readln(number);
conv :=
0
;
while
(number >
0
)
do

begin

i := number
mod
10
;

conv := conv*
10
+ i ;

number := number
div
10
;

end
;
writeln
(
‘Обратная запись числа: ‘
, conv);
readln;
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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru