|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2017, 11:19 | #1 |
Пользователь
Регистрация: 08.01.2017
Сообщений: 26
|
ошибка времени выполнения. индекс выходит за границы массива
CONST
N = 3; inf = 1 shl 30; TYPE myArray = array[1..N, 1..N] of char; myArray2 = array[1..N - 1, 1..N] of char; var m1, m2, m3: myArray; m11, m22, m33: myArray2; i, j, code, dig, str, k: integer; temp: char; procedure ReadM(var m: myArray); Var i,j:integer; begin for i := 1 to N do for j := 1 to N do readln(m[i, j]); end; function vowel(m: myArray): boolean; Var i,j:integer; begin result := false; for i := 1 to N do for j := 1 to N do if(m[i, j] in ['a', 'e', 'u', 'i', 'o', 'E', 'U', 'I', 'O', 'A']) then begin result := true; break; end; end; procedure transp(var m: myArray); Var i,j:integer; begin for i:= 1 to N do for j := i + 1 to N do begin temp := m[i, j]; m[i, j] := m[j, i]; m[j, i] := temp; end; end; function digits(m: myArray; var ind: integer): boolean; Var i,j:integer; begin dig := inf; result := false; for i := 1 to N do begin code := ord(m[i, j]) - 48; if((code >= 0) and (code < 10)) then begin result := true; if(dig > code) then begin dig := code; ind := i; end; end; end; end; procedure moveMatr(m1: myArray; var m2: myArray2; ind: integer); Var i,j:integer; begin k := 0; for i := 1 to N do if(i <> ind) then begin inc(k); for j := 1 to N do m2[k, j] := m1[i, j]; end; end; begin ReadM(m1); ReadM(m2); ReadM(m3); if(vowel(m1)) then transp(m1); if(vowel(m2)) then transp(m2); if(vowel(m3)) then transp(m3); if(digits(m1, str)) then begin moveMatr(m1, m11, str); for i := 1 to N - 1 do begin for j := 1 to N do write(m11[i, j], ' '); writeln(''); end; end else begin for i := 1 to N do begin for j := 1 to N do write(m1[i, j], ' '); writeln(''); end; end; writeln(''); if(digits(m2, str)) then begin moveMatr(m2, m22, str); for i := 1 to N - 1 do begin for j := 1 to N do write(m22[i, j], ' '); writeln(''); end; end else begin for i := 1 to N do begin for j := 1 to N do write(m2[i, j], ' '); writeln(''); end; end; writeln(''); if(digits(m3, str)) then begin moveMatr(m3, m33, str); for i := 1 to N - 1 do begin for j := 1 to N do write(m33[i, j], ' '); writeln(''); end; end else begin for i := 1 to N do begin for j := 1 to N do write(m3[i, j], ' '); writeln(''); end; end; writeln(''); readln(); end. Антон1990 на форуме Сообщить модератору о нарушении Мультицитирование этого сообщения |
08.01.2017, 11:42 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
паскаль, обычно, номер строки с ошибкой выдает.
в moveMatr 2 цикла идут к N. з.ы. неплохо научиться тегом [code] пользоваться
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибка индекс находился вне границ массива | stopping | Помощь студентам | 1 | 03.11.2016 19:33 |
Программа не выходит после выполнения (Язык С) | RaccoonRocket | Помощь студентам | 2 | 08.02.2016 14:13 |
Таблица выходит за границы сайта | Glowworm | HTML и CSS | 9 | 21.04.2014 11:19 |
Ошибка времени выполнения: Индекс находился вне границ массива (pascal) | dijetol | Помощь студентам | 2 | 10.04.2014 16:16 |
Ошибка: Индекс находился вне границ массива | archi-boy | C# (си шарп) | 11 | 15.11.2013 12:45 |