Массивы. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (→Ссылки) |
Mikst (обсуждение | вклад) (→Ссылки) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
__NOTOC__ | |||
===Попытка вывести массив не поэлементно, а целиком=== | |||
<source lang="Pascal">const Sz = 100; | |||
var | |||
a: array [1..Sz] of integer; | |||
i: integer; | |||
begin | |||
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. | |||
</source> | |||
== Ссылки == | == Ссылки == | ||
[[Программы для начинающих]] | *[[Программы для начинающих]] | ||
*[http://pascalabc.net/ru/programmyi-i-algoritmyi-dlya-nachinayuschih.html Сайт PascalABC.NET: Программы и алгоритмы для начинающих] |
Текущая версия от 15:50, 19 января 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.