smirns
Ученик
- Регистрация
- 11 Дек 2010
- Сообщения
- 3
- Реакции
- 0
- Баллы
- 0
Помогите исправить ошибку
System.IndexOutOfRangeException: Индекс находился вне границ массива. если найдете какие-либо еще ошибки тоже плиз напишите.
вот собственно и сама программа
System.IndexOutOfRangeException: Индекс находился вне границ массива. если найдете какие-либо еще ошибки тоже плиз напишите.
вот собственно и сама программа
PHP:
program laba6;
type
massst = array[1..20] of string;
nomer = array[1..20] of integer;
var
mass1, mass2: massst;
nom: nomer;
i, num, k1, k2: integer;
flag: boolean;
procedure lab6_1(k1: integer; var mass1: massst; var k2: integer; var mass2: massst; nom: nomer);
var
i, j, n, j1, j2: integer;
begin
k2 := 0;
for i := 1 to k1 do
begin
j := 1;
n := length(mass1[i]);
j1 := 0;j2 := 0;
while (j < n) do
if (mass1[i][j] = '+') or (mass1[i][j] = '-') or (mass1[i][j] = '*') or (mass1[i][j] = '/') then
begin
j1 := j + 2;
j := j1;
while (j < n) and (j2 = 0) do
if (mass1[i][j] = '+') or (mass1[i][j] = '-') or (mass1[i][j] = '*') or (mass1[i][j] = '/') then
j2 := j + 1
else
j := j + 1;
if (j <> 0) and (j2 <> 0) and (j1 <= j2) then
begin
k2 := k2 + 1;
mass2[k2] := copy(mass1[i], j1, j2 - j1 + 1);
nom[k2] := i;
end;
j1 := 0;j2 := 0;
end
else
j := j + 1;
end;
end;
function lab6_2(var mass2: massst; k2: integer): integer;
var
i, j, max, maxi: integer;
begin
max := 0;maxi := 0;
for i := 1 to k2 do
begin
j := 1;
while (j <= length(mass2[i])) do
j := j + 1;
if j - 1 > max then begin
max := j - 1;
maxi := i;
end;
end;
result := maxi;
end;
function lab6_3(var s: string):boolean;
var
flag: boolean;
i: integer;
begin
flag := false;
for i := 1 to length(s) do
if s[i] in ['а'..'я'] then begin
flag := true;
insert(s[i], s, i);
end;
result:= flag;
end;
begin
writeln('введите кол-во строк');
readln(k1);
writeln('Введите ', k1, ' строк');
for i := 1 to k1 do
readln(mass1[i]);
lab6_1(k1, mass1, k2, mass2, nom);
if k2 = 0 then write('нет подстрок')
else
begin
writeln('Получены подстроки:');
for i := 1 to k2 do
writeln(mass2[i]);
num := lab6_2(mass2,k2);
if num = 0 then write('нет нужной подстроки')
else begin
writeln('Найдена подстрока:');
writeln(mass2[num]);
flag := lab6_3(mass2[nom[num]]);
if not flag then write('Без изменений')
else begin
writeln('Измененная строка:');
writeln(mass2[nom[num]]);
end; end; end; end.