Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Хурма
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 40
#1

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

26.12.2013, 20:04. Просмотров 320. Ответов 5
Метки нет (Все метки)

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const n=12;
type mas=array [1..n,1..n] of integer;
var a,b:mas;i,j,jmin,jmax,j1,j2,k: integer;
 
 
procedure vvod (var a:mas);
var i,j,k:integer;
begin
writeln('Исходный массив:');
  for i:=1 to n do
  begin
    jmin:=1; jmax:=1; k:=0;
    for j:=1 to n do
    begin
 
a[i,j]:=random(100);
while (a[i,j] mod 4 = 0)=false do begin
a[i,j]:=random(99)+1;
end;
end;
end;
end;
 
procedure vyvod (a:mas);
var i,j:integer;
begin
for i:=1 to 12 do
begin
for j:=1 to 12 do
write(a[i,j]:4);
writeln;
end;
end;
 
procedure min_and_max (var a:mas; jmax, jmin:integer);
var   i,j,j1,j2, k : integer;
begin
for i:=1 to 12 do begin
for j:=1 to 12 do begin
if a[i,j]<a[i,jmin] then jmin:=j;
      if a[i,j]>a[i,jmax] then jmax:=j;
    end;
    if jmin<jmax then begin
      j1:=jmin; j2:=jmax;
    end else begin
      j1:=jmax; j2:=jmin;
    end;
    for j:=j1+1 to j2-1 do
    begin
      inc(k);
      b[i,k]:=a[i,j];
    end;
    if k<n then for j:=k+1 to n do b[i,j]:=0;
    writeln;
  end;
  end;
 
 
procedure vyvod2  (b,a:mas);
var  i,j: integer;
begin
writeln('Полученный массив:');
 
  for i:=1 to n do
  begin
    for j:=1 to n do
      write(b[i,j]:4);
    writeln;
  end;
  writeln;
end;
 
 
begin
vvod(a);
vyvod(a);
min_and_max(a, jmax, jmin);
vyvod2(b,a);
end.
ошибка: 61- выход за границы диапазона изменения индекса 1..12 (строка 51)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 20:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выход за границы диапазона изменения индекса (Pascal ABC):

Выход за границы диапазона изменения индекса. - Pascal ABC
Помогите пожалуйста разобраться с ошибкой, выдаётся в 43 строке, причём не всегда. А задача такова: рандомом задать массив из 10 чисел от...

Выход за границы диапазона изменения индекса - Pascal ABC
выход за границы диапазона изменения индекса,строка 53 Program 6; uses crt; const z=20; type mas=array of real; var a:mas; ...

Выход за границы диапазона изменения индекса - Pascal ABC
Доброго времени суток! При компиляции ошибка: »*Ошибка: 100001 - выход за границы диапазона изменения индекса 0..100000...

Шифрование текста - Выход за границы диапазона изменения индекса - Pascal ABC
это часть программы, при запуске программы после ввода текста и при нажатии на зашифровать , пишет &quot;»*Ошибка: 145287183 - выход за...

Пишет "Выход за границы диапазона изменения индекса 0.100" - Pascal ABC
for y:=0 to a-1 do for x:=0 to b-1 do x22:=x2;Я то сам понял-почему так происходит, но я не могу понять как это исправить, если кто...

Ошибка: Выход за границы диапазона 1..12 - Pascal ABC
ываыва Добавлено через 28 минут Добрый вечер!! В чём причина данной ошибки ? &quot;Выход за границы диапазона 1..12&quot; type...

5
El41
For i:=0 to 150 do
197 / 88 / 38
Регистрация: 05.01.2012
Сообщений: 252
26.12.2013, 20:23 #2
У тебя переменная k выходила за границу массива, тебе надо было ее обнулять где то.Сейчас запускается, но я хз верно ли работает
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const n=12;
type mas=array [1..n,1..n] of integer;
var a,b:mas;i,j,jmin,jmax,j1,j2,k: integer;
 
 
procedure vvod (var a:mas);
var i,j,k:integer;
begin
writeln('Исходный массив:');
  for i:=1 to n do
  begin
    jmin:=1; jmax:=1; k:=0;
    for j:=1 to n do
    begin
 
a[i,j]:=random(100);
while (a[i,j] mod 4 = 0)=false do begin
a[i,j]:=random(99)+1;
end;
end;
end;
end;
 
procedure vyvod (a:mas);
var i,j:integer;
begin
for i:=1 to 12 do
begin
for j:=1 to 12 do
write(a[i,j]:4);
writeln;
end;
end;
 
procedure min_and_max (var a:mas; jmax, jmin:integer);
var   i,j,j1,j2, k : integer;
begin
for i:=1 to 12 do begin
for j:=1 to 12 do begin
if a[i,j]<a[i,jmin] then jmin:=j;
      if a[i,j]>a[i,jmax] then jmax:=j;
    end;
    if jmin<jmax then begin
      j1:=jmin; j2:=jmax;
    end else begin
      j1:=jmax; j2:=jmin;
    end;
    for j:=j1+1 to j2-1 do
    begin
      inc(k);
      b[i,k]:=a[i,j];
    end;
    
    if k<n then for j:=k+1 to n do b[i,j]:=0;
    writeln;
    k:=0;
  end;
 
  end;
 
 
procedure vyvod2  (b,a:mas);
var  i,j: integer;
begin
writeln('Полученный массив:');
 
  for i:=1 to n do
  begin
    for j:=1 to n do
      write(b[i,j]:4);
    writeln;
  end;
  writeln;
end;
 
 
begin
vvod(a);
vyvod(a);
min_and_max(a, jmax, jmin);
vyvod2(b,a);
end.
1
Хурма
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 40
26.12.2013, 20:25  [ТС] #3
та же ошибка :с
0
El41
For i:=0 to 150 do
197 / 88 / 38
Регистрация: 05.01.2012
Сообщений: 252
26.12.2013, 20:27 #4
Мой код у меня работает.
1
Хурма
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 40
26.12.2013, 20:32  [ТС] #5
понятно, спасибо

Добавлено через 1 минуту
да, всё работает
0
El41
For i:=0 to 150 do
197 / 88 / 38
Регистрация: 05.01.2012
Сообщений: 252
26.12.2013, 20:32 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure min_and_max (var a:mas; jmax, jmin:integer);
var   i,j,j1,j2, k : integer;
begin
for i:=1 to 12 do begin
for j:=1 to 12 do begin
if a[i,j]<a[i,jmin] then jmin:=j;
      if a[i,j]>a[i,jmax] then jmax:=j;
    end;
    if jmin<jmax then begin
      j1:=jmin; j2:=jmax;
    end else begin
      j1:=jmax; j2:=jmin;
    end;
    for j:=j1+1 to j2-1 do
    begin
      inc(k);
      b[i,k]:=a[i,j];
    end;
    
    if k<n then for j:=k+1 to n do b[i,j]:=0;
    writeln;
    [B]k:=0;[/B]
  end;
Вот где я добавил обнуление k , так что смотри верно или нет.
1
26.12.2013, 20:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 20:32
Привет! Вот еще темы с ответами:

Ошибка 0 - выход за границы диапазона изменения индекса - Pascal
program masiv; var i, j, n, sum: integer; mas: array of integer; begin writeln('введите масив: '); ...

Ошибка работы с матрицей: Выход за границы диапазона изменения индекса - Pascal
program laba; type mas=array of integer; var i,j:integer; procedure input(var t,r:byte; var m:mas; c:string); begin ...

Шифрование файла перемешанным алфавитом, выход индекса за границы массива - Pascal
Добрый день, форумчане! Столкнулся с проблемой выхода за границы массива, прошу помощи. Дано задание: Текстовый файл зашифровать с...

Выход за границы диапазона byte - Pascal
выводиться ошибка: выход за границы диапазона byte при вводе (строка 16) Uses Crt; Var dsnf:array of byte; sup:array of byte; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru