Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 35
1

Ошибка Return value of function 'rec' might be undefined

08.04.2019, 17:45. Показов 2414. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа работает, выполняет все правильно, но пишет ошибки:
Value assigned to 'sr' never used
Return value of function 'rec' might be undefined

А также потом, если запустить с другого компьютера стирается файл .exe и программа вообще не работает.
Помогите найти причину
Программа "Найти сумму цифр натурального числа рекурсией и без рекурсии"
В функции с рекурсией возникают какие-то проблемы и ошибки, описанные выше.
Текст программы:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  
implementation
 
{$R *.dfm}
 
function rec(k:integer):integer;
var sr:integer;
begin
if k<=0 then sr:=0
else sr:=(k mod 10)+rec(k div 10);
 
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var k,s:integer;
begin
k:=StrToInt(Edit1.Text);
s:=0;
while k>0 do begin
s:=s+ (k mod 10);
k:=k div 10;
end;
Label1.Caption:=IntToStr(s);
Label3.Caption:=IntToStr(rec(k));
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2019, 17:45
Ответы с готовыми решениями:

Ошибка: Return value of function 'nez' might be undefined
помогите исправить. procedure TForm1.btn1Click(Sender: TObject); function nez(n:real) :real ;...

Функция выдает ошибку: "Return value of function might be undefined"
Привет Всем! Вот написана функция : function SearchAndReplace( RE1: TRichEdit; SearchText,...

Функция выдает ошибку: "Return value of function 'Through' might be undefined"
Привет Всем! Вот написана функция : FUNCTION Through( k, m :INTEGER; N_f :WORD) :WORD; ...

Предупреждение "Return value of function might be undefined"
Подскажите, пожалуйста, из-за чего у меня при компиляции выходит сообщение &quot; Unit1.pas(74): Return...

5
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.04.2019, 18:22 2
Лучший ответ Сообщение было отмечено Karina_11 как решение

Решение

Delphi
1
2
3
4
5
function rec(k:integer):integer;
begin
if k<=0 then rec:=0
else rec:=(k mod 10)+rec(k div 10);
end;
Добавлено через 13 минут
А вообще у отрицательных чисел тоже есть сумма цифр.
Delphi
1
2
3
4
5
6
7
function rec(k:integer):integer;
begin
if k=0 then rec:=0
else rec:=(k mod 10)+rec(k div 10);
end;
.................
k:=abs(StrToInt(Edit1.Text));
1
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 35
08.04.2019, 18:54  [ТС] 3
Да, у отрицательных тоже есть сумма цифр. Но я подумала, что раз дано натуральное число, то отрицательные не входят.
Я попробовала сделать так, как вы написали - у меня почему-то теперь вообще не считается рекурсия и выводится 0.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.04.2019, 19:04 4
Если число натуральное то abs не нужно но и в k<=0 знак < не нужно. А функция у меня работает
Delphi
1
2
3
4
5
6
7
8
9
10
11
function rec(k:integer):integer;
begin
if k=0 then rec:=0
else rec:=(k mod 10)+rec(k div 10);
end;
procedure TForm1.Button1Click(Sender: TObject);
var k:integer;
begin
k:=strtoint(Edit1.Text);
Label1.Caption:=inttostr(rec(k))
end;
Миниатюры
Ошибка Return value of function 'rec' might be undefined  
0
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 35
08.04.2019, 19:14  [ТС] 5
Спасибо, я разобралась.
Дело скорее всего в программе, потому что вместе с рекурсией и без нее у меня почему-то не работает и вылетают ошибки.
Отдельно программа только с рекурсией работает правильно.
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.04.2019, 19:16 6
Лучший ответ Сообщение было отмечено Karina_11 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var k,n,s:integer;
begin
k:=StrToInt(Edit1.Text);
n:=k;
s:=0;
while k>0 do begin
s:=s+ (k mod 10);
k:=k div 10;
end;
Label1.Caption:=IntToStr(s);
Label3.Caption:=IntToStr(rec(n));
end;
1
08.04.2019, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2019, 19:16
Помогаю со студенческими работами здесь

Ошибка: 'sleep': no function return type, using 'int'
Пользуюсь DosBox 0.74-QC(поменять не могу,нужно на нем) ,так вот,столкнулся с такой проблемой,что...

Странная ошибка: Not allowed to return a result set from a function
CREATE FUNCTION cena1243() RETURNS INTEGER BEGIN DECLARE a,b,sum1 INTEGER; SELECT * ...

Банальная ошибка undefined is not a function
Подскажите, пожалуйста, голову ломаю не могу определить, почему пишет undefined is not a function....

Ошибка Undefined function or variable
Здравствуйте, есть программа которая решает методом Адамса-Бешфорса-Мултона дифференциальные...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru