Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 02.11.2019
Сообщений: 49
1

Выдает ошибку «Операция< не применима к типам function”

02.11.2019, 18:16. Показов 3011. Ответов 7

Author24 — интернет-сервис помощи студентам
В общем, пишу программу по задаче:
Дана Последовательность из 100 различных целых чисел. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным числом этой последовательности, оба этих числа включить в сумму.
Она обязательно должна быть с применением модуля.

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
32
33
34
35
36
37
program Summa; 
var X: array[1..100] of integer; 
sum, i: integer; 
 
procedure H; 
var X: array[1..100] of integer; 
max,min,i: integer; 
begin
 max:=1; 
 min:=1; 
 for i:=1 to 100 do
 begin
 if X[i]>X[max] then
 max:=i; 
 if X[i]<X[min] then
 min:=i;
 end;
 end; 
 
begin
 sum:=0; 
 randomize; 
 for i:=1 to 100 do
 begin
 X[i]:=random(100);
 end; 
 begin
 H
 end; 
 if (min< max) then        Вот в этой строчке
 for i:=min to max do
 sum := sum+X[i] 
 else
 for i:=max to min do
 sum:=sum+X[i]; 
 writeln('сумма=',sum);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2019, 18:16
Ответы с готовыми решениями:

Операция '*' не применима к типам real и function(x: real): real
function Arccos1(x: integer): real; begin arccos1 := sqr(Arccos(x)) + arccos(x-(1/2)); end; ...

Операция '+' не применима к типам integer и string
Привет,помогите пожалуйста ,проблема в 46 строке Что изменить? Код паскаль: program orginizer;...

Как исправить Операция '=' не применима к типам boolean и integer при работе с if
if a=0 and a=0 then inc(nl) if nl = 0 then writeln (' Пары чисел равные нулю отсутствуют')

Ошибка "операция '<' не применима к типам boolean и integer"
операция '&lt;' не применима к типам boolean и integer program prim; var a,b,c:integer; begin...

7
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
02.11.2019, 18:28 2
Лучший ответ Сообщение было отмечено Sasha5467755 как решение

Решение

У вас переменные min и max объявлены только в процедуре H. Их не существует в контексте основного begin-end., поэтому у вас сравнивает функции min и max из стандартного модуля. А раз сравнивать в них нечего - выдаёт соответствующую ошибку.
2
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2019, 18:48 3
Лучший ответ Сообщение было отмечено Sasha5467755 как решение

Решение

В Паскаль АВС.net есть встроенные функции max, min
function Max(a: число, b: число): число;
Возвращает максимальное из чисел a,b
function Min(a: число, b: число): число;
Возвращает минимальное из чисел a,b
поэтому нельзя эти имена присваивать переменным.
Код даже для обычного Паскаля написан криво, не говоря уж о ABC.net, поправил.

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
32
33
34
35
36
program Summa; 
var X: array[1..100] of integer; 
    mn,mx,sum: integer; 
procedure H; 
begin
mx:=1; 
mn:=1; 
for var i:=1 to 100 do
 begin
  if X[i]>X[mx] then mx:=i
  else if X[i]<X[mn] then mn:=i;
 end;
 end; 
 
begin
sum:=0; 
randomize; 
for var i:=1 to 100 do
 begin
  X[i]:=random(100);
  write(X[i]:4)
 end; 
 H;
 if mn<mx then  
  begin      // Вот в этой строчке
   for var i:=mn to mx do
   sum := sum+X[i];
  end 
 else
  begin 
   for var i:=mx to mn do
   sum:=sum+X[i]; 
  end;
 writeln; 
 writeln('сумма=',sum);
end.
1
142 / 108 / 57
Регистрация: 15.09.2017
Сообщений: 425
02.11.2019, 19:30 4
Цитата Сообщение от Puporev Посмотреть сообщение
поэтому нельзя эти имена присваивать переменным.

Не по теме:


Можно)

Pascal
1
2
3
begin
  var f: (integer, integer) -> integer := Max;
end.

0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2019, 19:34 5
Так как у ТС, нельзя. Выдает ошибку которую он написал.
0
0 / 0 / 0
Регистрация: 02.11.2019
Сообщений: 49
02.11.2019, 19:47  [ТС] 6
Да я знаю, что написано криво. Подскажите, что делает строчка у вас в программе write(X[i]:4) ?

Добавлено через 7 минут
И вообще, СПАСИБО БОЛЬШОЕ!
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2019, 19:51 7
[quote="Sasha5467755;13956903"]write(X[i]:4[)/quote]
Это вывод чисел с выделение 4 позиций под каждое число.
0
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
02.11.2019, 20:19 8
Цитата Сообщение от Puporev Посмотреть сообщение
поэтому нельзя эти имена присваивать переменным.
Можно. Только если объявить эти переменные - потом те функции нельзя будет вызвать там, где доступны переменные.
А у ТС ошибка вообще от другого.
0
02.11.2019, 20:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2019, 20:19
Помогаю со студенческими работами здесь

Операция '=' не применима к типам char и real
Как мне записать код нормально чтобы выполнялось всё по порядку? Мне надо, чтобы при вводе...

Операция '=' не применима к типам boolean и integer
Помогите с ошибкой &quot;Операция '=' не применима к типам boolean и integer&quot; ошибка к строке 16....

Операция '<=' не применима к типам boolean и integer
Подскажите, как исправить var r, m, l, C: integer; begin begin if (1&lt;=l&lt;=r&lt;=200000) and...

Ошибка: Операция '<>' не применима к типам integer и boolean
Уважаемые форумнечане, подскажите как решить данную проблему, программа выдает ошибку &quot;pas1.pas(5)...

Program5.pas(7) : Операция '<' не применима к типам boolean и integer
program jhbg; var a,b,c,d:longint; begin Writeln ('Введите скорости'); Readln (a,b); Readln...

Ошибка в программе: Операция '=' не применима к типам real и boolean
Помогите исправить ошибку в 9 строке программы: program storinka40zadacha7; uses crt; var...


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

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