Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.05.2020
Сообщений: 30

Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла

17.05.2020, 12:00. Показов 598. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
var i, j, kolvo: byte;
x, temp: integer;
a: array [1..10] of byte;
begin
assign (input, 'input.txt');
assign (output, 'output.txt');
reset (input);
rewrite (output);
readln (input, x);
for i:=1 to 10 do
read (input, a[i]);
for i:=1 to 10 do
for j:=1 to 10 do
if a[i] < a[j] then
begin
temp:=a[i];
a[i]:=a[j];
a[j]:=temp;
end;
temp:=0;
i:=1;
while temp + a[i] <= x do
begin
inc (i);
inc(kolvo);
temp:=temp+a[i-1];
end;
writeln (kolvo);
close (output);
close (input);
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2020, 12:00
Ответы с готовыми решениями:

Zc.pas(16) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
program Zc; uses crt; const c=100; var a:array of integer; n,i,k,s:integer; begin clrscr; randomize; repeat ...

Program1.pas(7): Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла. Как исправить?
Program1.pas(7) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла. Как исправить ? var i, n, chislo: integer; ...

Почему выбивает ошибку: Program1.pas(15) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла?
program zadacha1; const n=10; var x:array of integer; y:array of integer; i,a,b,c: integer; Begin for i:=1 to n do ...

4
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
17.05.2020, 12:02
Это предупреждение, а не ошибка.
0
0 / 0 / 0
Регистрация: 17.05.2020
Сообщений: 30
17.05.2020, 12:05  [ТС]
я знаю, а как исправить? помогите пожалуйста
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
17.05.2020, 12:47
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
var
  kolvo: byte;
  x, temp: integer;
  a: array [1..10] of byte;
 
begin
  assign(input, 'input.txt');
  assign(output, 'output.txt');
  reset(input);
  rewrite(output);
  readln(input, x);
  for var i := 1 to 10 do
    read(input, a[i]);
  for var i := 1 to 10 do
    for var j := 1 to 10 do
      if a[i] < a[j] then
      begin
        temp := a[i];
        a[i] := a[j];
        a[j] := temp;
      end;
  temp := 0;
  var i := 1;
  while temp + a[i] <= x do
  begin
    inc(i);
    inc(kolvo);
    temp := temp + a[i - 1];
  end;
  writeln(kolvo);
  close(output);
  close(input);
end.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
17.05.2020, 14:16
Хоть это предупреждение показывает только для for - var до begin это в целом не правильно.
Все обращения к таким переменным будут в несколько раз медленнее, чем к переменным объявленным с var после begin.

Кроме того, глобальные переменные провоцируют некоторые баги. Обычно основанные на случайном использовании переменных.
Если вы объявляете переменную цикла в заголовке этого цикла (for var) - переменная будет невидимой вне тела цикла, а значит компилятор не даст вам неправильно её использовать.
Так же и остальные переменные - их надо объявлять там, где они первый раз используются.

Правильно так:
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
begin
  Reset(input, 'input.txt');
  Rewrite(output, 'output.txt');
  var x := ReadlnInteger;
  var a: array [1..10] of byte;
  for var i := 1 to 10 do
    read(a[i]);
  for var i := 1 to 10 do
    for var j := 1 to 10 do
      if a[i] < a[j] then
      begin
        var temp := a[i];
        a[i] := a[j];
        a[j] := temp;
      end;
  var temp := 0;
  var i := 1;
  var kolvo := 0;
  while temp + a[i] <= x do
  begin
    i += 1;
    kolvo += 1;
    temp += a[i - 1];
  end;
  kolvo.Println;
  input.Close;
  output.Close;
end.
Ещё по замечаниям к коду:

1. Убрал лишние input в read. input это стандартный файл ввода, если вы его открыли - все read идут через него.

2. kolvo: byte - это глупо. Вы этим ничего не экономите, память на стеке выделяется только 1 раз при запуске. И потратить её всю нереально, если не злоупотреблять рекурсией.
Зато, в наше время ни 1 процессор не поддерживает операции над числами в 1 байт. Вместо этого выполняется преобразование в integer, сложение, а потом преобразование назад в byte. Ну и, конечно, это на много медленнее, чем если изначально иметь integer.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2020, 14:16
Помогаю со студенческими работами здесь

Исправить ошибку: "Параметр цикла for в pascalABC.net должен описываться в заголовке цикла"
Люди! Пожалуйста помогите исправить ошибку: &quot;Параметр цикла for в pascalABC.net должен описываться в заголовке цикла&quot;. ...

"Параметр цикла for должен описываться в заголовке цикла", как исправить?
Люди! Пожалуйста помогите исправить ошибку: &quot;Параметр цикла for в pascalABC.net должен описываться в заголовке цикла&quot;. program...

Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
program Khamkov8; const Z=5; M=6; var f,f1:text; c:array of integer; n:array of integer; j,i,jm,max:integer; begin ...

Program1.pas(39) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
Program1.pas(39) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла. () : Внутренняя ошибка компилятора в модуле ...

Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
1.program Laba4C (input, output); 2.var 3. A, B, DX: real; 4. X, Y: real; 5. K, I:integer; 6.begin 7.writeln ('please enter...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru