Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 30
1

Нельзя преобразовать тип function:integer к integer

22.01.2015, 23:51. Показов 4715. Ответов 8
Метки нет (Все метки)

Есть такой кусок кода, не могу сделать вот эту операцию...

Pascal
1
work:=work+a[i,j];
Pascal
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
function work (a:mas;k:byte) : integer;
const max=50;
var
n,i,j,tmp: byte;
begin
work:=0;
randomize;
writeln;
for i:=1 to k do
begin
for j:=1 to k do
begin
masyv[i,j]:=random (301);
end;
writeln();
end;
writeln();
j:=1;
while j<=(n div 2) do
begin
for i:=1 to n do
begin
tmp:=masyv[i,j];
masyv[i,j]:=masyv[i,n-j+1];
masyv[i,n-j+1]:=tmp
end;
inc(j);
end;
work:=work+a[i,j];
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2015, 23:51
Ответы с готовыми решениями:

Program1.pas(20) : Нельзя преобразовать тип IEnumerable<integer> к integer
выдает ошибку Program1.pas(20) : Нельзя преобразовать тип IEnumerable&lt;integer&gt; к integer пробовал...

Нельзя преобразовать тип array [1..10] of integer к array [1..10] of integer
Ошибка в 23 строке (23) : Нельзя преобразовать тип array of integer к array of integer ...

Нельзя преобразовать тип real к integer
Выдает ошибку, нельзя преобразовать тип real к integer, только я не пойму где ошибка function...

Нельзя преобразовать тип real к integer
type tfile = file of real; procedure vvod(var n: integer; ch: char); begin ...

8
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
23.01.2015, 00:02 2
Лучший ответ Сообщение было отмечено Александр005 как решение

Решение

потому что использование имени функции в теле функции в операциях присвоения есть либо точка возврата оной функции (если с левой стороны), либо вызов оной функции внутри самой себя, то бишь рекурсия (с правой; но тогда и параметры должны задаваться в скобках, чего как бы нет).
C++
1
2
3
4
int func()
{
    return 1 + 2; //work:=1+2;
}
имя функции не есть переменная. для этих целей нужно свою переменную объявлять
Pascal
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
function work (a:mas;k:byte) : integer;
const max=50;
var
n,i,j,tmp: byte;
Result: integer;
begin
Result:=0;
randomize;
writeln;
for i:=1 to k do
begin
for j:=1 to k do
begin
masyv[i,j]:=random (301);
end;
writeln();
end;
writeln();
j:=1;
while j<=(n div 2) do
begin
for i:=1 to n do
begin
tmp:=masyv[i,j];
masyv[i,j]:=masyv[i,n-j+1];
masyv[i,n-j+1]:=tmp
end;
inc(j);
end;
work:=Result+a[i,j];
end;
1
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 30
23.01.2015, 00:19  [ТС] 3
JokeR.BY,
Спасибо большое,разобрался)
только столкнулся с ещё одним праблом...
Мне нужно потом этот массив показать на екране,это происходит в другой процедуре
Pascal
1
write(work);
матерится:
Нет перегруженной подпрограммы с такими типами параметров
что-то все переропробовал-ничего(
0
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 30
23.01.2015, 00:29  [ТС] 4
Есть код,помогите.
в этом куске нужно вывести на экран массив из функции,а пишет ошибку Неверное число параметров функции или Нет перегруженной подпрограммы с такими типами параметров
Pascal
1
writeln(work(a));
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function work (a:mas;k:byte) : integer;
const max=50;
var
n,i,j,tmp: byte;
b: integer;
begin
b:=0;
\\\\\\\\\\\\\\\\
end;
work:=b+a[i,j];
end;
 
procedure screen(a:mas;k:byte);
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5);
writeln;
end;
writeln(work(a));
writeln;
end;
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
23.01.2015, 01:05 5
Александр005, вы вызываете функцию work только с одним параметром. а она у вас описана только в одном варианте, то бишь с двумя.

Pascal
1
2
function work (a:mas;k:byte) : integer;
writeln(work(a));
0
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 30
23.01.2015, 01:10  [ТС] 6
JokeR.BY,
Именно в этом варианте выдает ошибку: Неверное число параметров функции.
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
23.01.2015, 01:52 7
Александр005, а сколько у вашей функции параметров?
0
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 30
23.01.2015, 02:24  [ТС] 8
JokeR.BY, параметра 2,но выводит только К и то 0. Тоесть массив не выводит.
я думаю ошибка раньше. Дело в том что К(размерность матрици) вводиться в отдельной процедуре,и сохраняется в файл. Потом в следущей процедуре она оттуда считывается, а уже дальше идет функция. Следовательно у меня вопрос: как правильно перенести К из процедуры в функцию?
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
23.01.2015, 02:57 9
Александр005, вы нигде оный параметр не используете. просто удалите.
0
23.01.2015, 02:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2015, 02:57

Типы данных Program1.pas(11) : Нельзя преобразовать тип real к integer
var a,b:real; begin readln(a,b); while (a&gt;b) do begin

Программа не работает. Ошибка - Нельзя преобразовать тип IntegerField к integer. Как исправить?
uses FormsABC; var a,b,sum,prod: IntegerField; d: Button; procedure MyClick; begin ...

Выдает ошибку " Нельзя преобразовать тип real к integer"
Столкнулся с такой проблемой, что когда начинаю выводить процедуры в конце там где Vvod_mas(m)...

Калькулятор, ошибка "Нельзя преобразовать тип char к integer"
По заданию, я должен написать калькулятор на паскале с использованием if. При выполнении выдается...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru