Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2017, 17:40   #1
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию Не получается сделать программу с помощью функции

Здравствуйте, пытаюсь разобраться с функциями, но пока плохо выходит. Задача была такая: Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке (например, дано число 156, нужно получить 651).

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

Код:
program p4;

var

s: integer;

function per(i:integer) :integer;
var s:string;
begin
 for i:=length(s) downto 1 do
 write(s[i]);
 end;
 
 begin 
writeln('Введите число: ');
read(s); 

writeln(per(s));
 
 end.
kris14 вне форума Ответить с цитированием
Старый 25.10.2017, 17:49   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var
   s: integer;

function per(i:integer) :integer;
var s,s1:string;
begin
   s:=IntToStr(i);
   s1:='';
   for i:=length(s) downto 1 do
      s1:=s1+s[i];
   Result:=StrToInt(s1);
end;

begin
   write('Введите число: ');
   readln(s);
   writeln(per(s));
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 25.10.2017, 17:49   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы не возвращаете ничего в функции.

Надо внутри функции
Код:
per := 42;
или в FPC/Delphi/... можно
Код:
Result := 42;
ЗЫ название функций обычно стараются делать глаголом.

Sleep, WakeUp, Write, Read, Multiply, Sum, Replace, ..., DoSomething, GetSomething, SetSomething, FindSomething, CalculateSomething, ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.10.2017, 18:03   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
function per(x: inreger): integer; //функция имеет аргумент(-ы)(параметры)   исходное число X и РЕЗУЛЬТАТ
var r: integer; 
begin 
  result:=0; //первоначально результат равен 0
  while x<>0 do begin // будем "отщипывать" от числа пока не отщипим всё (т.е. до =0)
    r:=x mod 10;//отщипнутая МЛАДШАЯ часть(цифра)
    x:=x div 10;//и что осталось от числа
    result:=result*10; // сдвинули на разряд ВЛЕВО
    result:=result +r; //и дописали ещё одну "отщипнутую" цифру
  end;
end;
Код:
Код:
writeln(per(1234)); // пример использования
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.10.2017, 18:04   #5
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Спасибо большое, но можете, пожалуйста, объяснить пару моментов?

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Код:
var
   s: integer;

function per(i:integer) :integer;
var s,s1:string;
begin
   s:=IntToStr(i);
   s1:='';    //вот этот
   for i:=length(s) downto 1 do
      s1:=s1+s[i];     //вот этот
   Result:=StrToInt(s1);
end;

begin
   write('Введите число: ');
   readln(s);
   writeln(per(s));
   Readln;
end.
И еще такой вопрос: получается когда используешь lenght, обязательно использовать тип string, я правильно поняла?)
kris14 вне форума Ответить с цитированием
Старый 25.10.2017, 18:06   #6
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Ого, спасибо огромное! Когда-нибудь и я так смогу, надеюсь))
kris14 вне форума Ответить с цитированием
Старый 25.10.2017, 18:08   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Сообщение от kris14 Посмотреть сообщение
получается когда используешь lenght, обязательно использовать тип string, я правильно поняла?)
Да, правильно!

Цитата:
Сообщение от kris14 Посмотреть сообщение
спасибо огромное!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу для приближенного вычисления значения функции в точке х с помощью разложения в ряд Тейлора. Найти приближенное значение функции с погрешностью менее 0,0001. marysluva Помощь студентам 1 18.12.2016 18:13
Написать программу с помощью подпрограммы-функции nooccar Помощь студентам 4 05.12.2016 02:09
Как сделать функции добавления, удаления и фильтрации с помощью javascript? Abatur Помощь студентам 0 18.09.2014 15:40
Не получается сделать почтовую программу Черешня Работа с сетью в Delphi 2 31.10.2010 18:31
как сделать программу с помощью массива??? aiktz Помощь студентам 1 22.10.2009 19:01