Массивы. Возможные ошибки: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
===Попытка вывести массив не поэлементно, а целиком===
<source lang="Pascal">const Sz = 100;  
<source lang="Pascal">const Sz = 100;  


Строка 7: Строка 8:
begin
begin
   read(a); // неверно: массив необходимо вводить поэлементно
   read(a); // неверно: массив необходимо вводить поэлементно
end. 
</source>
===Использование записи a[i] вне цикла===
<source lang="Pascal">const Sz = 10;
var
  a: array [1..Sz] of integer;
  i: integer;
begin
  var N := Sz;
  for i:=1 to N do
    a[i] := Random(100);
  a[i] := 666; // Ошибка: переменной i нельзя пользоваться вне цикла for 
end.</source> 
===Выход за границы диапазона изменения индекса===
<source lang="Pascal">const Sz = 10;
var a: array [1..Sz] of integer;
begin
  var N := Sz;
  for var i:=1 to N+1 do
    a[i] := Random(100); // При i=N+1 происходит ошибка: индекс вне границ массива
end. 
</source>
===Затирание элементов при сдвиге===
<source lang="Pascal">const Sz = 100;
var a: array [1..Sz] of integer;
begin
  var N := 10;
  for var i:=1 to N do
    a[i] := Random(100);
  for var i:=1 to N do
    write(a[i],' ');
  writeln;
  for var i:=1 to N-1 do // ошибка: алгоритм сдвига вправо надо начинать с конца
    a[i+1] := a[i];
  for var i:=1 to N do
    write(a[i],' ');
end.   
end.   
</source>
</source>

Версия от 00:20, 8 января 2010

Попытка вывести массив не поэлементно, а целиком

const Sz = 100; 

var 
  a: array [1..Sz] of integer;
  i: integer;

begin
  read(a); // неверно: массив необходимо вводить поэлементно
end.

Использование записи a[i] вне цикла

const Sz = 10; 

var 
  a: array [1..Sz] of integer;
  i: integer;

begin
  var N := Sz;
  for i:=1 to N do 
    a[i] := Random(100);
  a[i] := 666; // Ошибка: переменной i нельзя пользоваться вне цикла for  
end.

Выход за границы диапазона изменения индекса

const Sz = 10; 

var a: array [1..Sz] of integer;

begin
  var N := Sz;
  for var i:=1 to N+1 do 
    a[i] := Random(100); // При i=N+1 происходит ошибка: индекс вне границ массива
end.

Затирание элементов при сдвиге

const Sz = 100; 

var a: array [1..Sz] of integer;

begin
  var N := 10;
  for var i:=1 to N do 
    a[i] := Random(100); 
  for var i:=1 to N do 
    write(a[i],' ');
  writeln;
  for var i:=1 to N-1 do // ошибка: алгоритм сдвига вправо надо начинать с конца
    a[i+1] := a[i];
  for var i:=1 to N do 
    write(a[i],' ');
end.

Ссылки

Программы для начинающих