• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите исправить ошибку

  • Автор темы Автор темы smirns
  • Дата начала Дата начала

smirns

Ученик
Регистрация
11 Дек 2010
Сообщения
3
Реакции
0
Баллы
0
Помогите исправить ошибку

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.
 
Назад
Сверху