Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37

Выдает ошибку в 15 строке : Ошибка времени выполнения: Индекс находился вне границ массива

11.11.2017, 12:59. Показов 1087. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
procedure Vvod_stroki (st:string);
 begin
  writeln('Введите строку (не более 10 символов), заканчивающуюся точкой:'); 
  readln(st);
 end;
procedure OPREDELENIE_SIMVOLOV_V_SLOVE (j,i,n:byte; c,c2:char);
var
st:string;
 s: array[1..30] of string;
 begin
  i:=0; 
  j:=0; 
  n:=1; 
 repeat inc(j); 
  c:=st[j];  
  if c=' ' then 
   begin 
    if c2=' ' then continue; 
     if i<2 then 
     begin
      writeln('Одно из слов содержит меньше 10 символов'); 
      halt;
     end;
    inc(n); 
    i:=0; 
   end
  else 
   begin 
    s[n]:=s[n]+c; 
    inc(i); 
    if i>10 then 
     begin writeln('Одно из слов содержит больше 10 символов');
      halt;
     end;
   end;  
 c2:=c;  
until c='.';
end;
procedure OPREDELENIE_SLOV_V_STROKE (i,n: byte);
var
 s: array[1..30] of string;
begin
if n<2 then   
  begin 
   writeln('Слишком мало слов');
   halt;
  end;
   for i:=1 to n-1 do 
    if s[i]<>s[n] then 
     begin 
      delete(s[i],1,1); 
      write(s[i],' '); 
     end; 
delete(s[n],1,1); 
write(s[n]); 
end;
var
st:string;
i,j,n:byte;
c,c2:char;
 Begin
  Vvod_stroki (st);
  OPREDELENIE_SIMVOLOV_V_SLOVE (j,i,n, c,c2);
  OPREDELENIE_SLOV_V_STROKE ( i,n);
 End.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2017, 12:59
Ответы с готовыми решениями:

Ошибка времени выполнения: Индекс находился вне границ массива
Помогите исправить ошибку в программе Program15.pas(33) : Ошибка времени выполнения: Индекс находился вне границ массива. 33 строка ...

Ошибка времени выполнения: Индекс находился вне границ массива
Здравствуйте. Пишу клеточный автомат &quot;Жизнь&quot;. Уже появились проблемы. Вот кусок кода: const /// Отступ от 0, 0; x0 = 1;...

Ошибка времени выполнения: Индекс находился вне границ массива
Преобразовать строку, заменяя каждую цифру соответствующим ей числом пробелов Function MyLength(St : String) : Byte; Begin ...

7
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2017, 14:13
Эта программа написана совсем неверно и выдает она все время что-то типа 'мало слов".
0
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37
11.11.2017, 14:26  [ТС]
а в чем заключается ошибка?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2017, 14:39
Я такую ошибку не поймал. А вообще
Pascal
1
2
3
4
repeat 
inc(j); //увеличиваем счетчик
c:=st[j]//читаем символ в строке, которая никак процедуре неизвестна
..............................
0
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37
11.11.2017, 15:18  [ТС]
в 8 строке же объявление st:string;

Добавлено через 3 минуты
вот программа, записанная без процедур. она прекрасно работает. но мне сказали записать эту же программу через процедуры. в новой программе и выдает ошибку в 15 строке.
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
var 
 s: array[1..30] of string; 
 c,c2: char; 
 i,j,n: byte; 
 st: string; 
Begin 
 writeln('Введите строку (не более 10 символов), заканчивающуюся точкой:'); 
 readln(st); 
 n:=1; 
 i:=0; 
 j:=0; 
repeat inc(j); 
  c:=st[j];  
  if c=' ' then 
   begin 
    if c2=' ' then continue; 
    if i<2 then 
     begin
      writeln('Одно из слов содержит меньше 10 символов'); 
      halt;
     end;
    inc(n); 
    i:=0; 
   end 
  else 
   begin 
    s[n]:=s[n]+c; 
    inc(i); 
    if i>10 then 
     begin writeln('Одно из слов содержит больше 10 символов');
      halt;
     end;
   end;  
 c2:=c;  
until c='.';  
 if n<2 then   
  begin 
   writeln('Слишком мало слов');
   halt;
  end;
   for i:=1 to n-1 do 
    if s[i]<>s[n] then 
     begin 
      delete(s[i],1,1); 
      write(s[i],' '); 
     end; 
delete(s[n],1,1); 
write(s[n]); 
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2017, 15:40
Лучший ответ Сообщение было отмечено Yajup как решение

Решение

Это локальная переменная в процедуре, она ни откуда не принимает значение и никуда не передает, ее значение по умолчанию=пустая строка.

Добавлено через 21 минуту
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
type mas=array[1..30] of string;
procedure vvod_stroki(var st:string);
begin
writeln('Введите строку (не более 10 символов), заканчивающуюся точкой:');
readln(st);
end;
procedure OPREDELENIE_SIMVOLOV_V_SLOVE (st:string;var s:mas;var n:byte);
var i,j:byte;
    c,c2:char;
 begin
i:=0;
j:=0;
n:=1;
repeat
inc(j);
c:=st[j];
if c=' ' then
 begin
  if c2=' ' then continue;
  if i<2 then
   begin
    writeln('Одно из слов содержит меньше 10 символов');
    exit;
   end;
  inc(n);
  i:=0;
 end
else
 begin
  s[n]:=s[n]+c;
  inc(i);
  if i>10 then
   begin
    writeln('Одно из слов содержит больше 10 символов');
    exit;
   end;
  end;
c2:=c;
until c='.';
end;
procedure OPREDELENIE_SLOV_V_STROKE (s:mas;n:byte);
var i:byte;
begin
if n<2 then
 begin
  writeln('Слишком мало слов');
  exit;
 end;
for i:=1 to n-1 do
if s[i]<>s[n] then
 begin
  delete(s[i],1,1);
  write(s[i],' ');
 end;
delete(s[n],1,1);
write(s[n]);
end;
var st:string;
    s:mas;
    n:byte;
begin
Vvod_stroki (st);
OPREDELENIE_SIMVOLOV_V_SLOVE (st,s,n);
OPREDELENIE_SLOV_V_STROKE (s,n);
end.
1
1 / 1 / 0
Регистрация: 09.11.2017
Сообщений: 37
11.11.2017, 15:41  [ТС]
вы просто гений!!!!
спасибо вам огромное!)
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.11.2017, 15:43
Цитата Сообщение от Yajup Посмотреть сообщение
вы просто гений!!!!
Прочитаешь сам один учебник по Паскалю и станешь таким же "гением".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2017, 15:43
Помогаю со студенческими работами здесь

Ошибка времени выполнения: Индекс находился вне границ массива
type matrix=array of array of real; vector=array of real; var f: text; arr: array of real; k1: matrix; k2:...

Ошибка времени выполнения: Индекс находился вне границ массива
var zoo: array of string; i:integer; begin zoo:='a'; zoo:='bak'; zoo:='c'; write(zoo,' '); end.в чем проблема не могу понять?...

Ошибка времени выполнения: Индекс находился вне границ массива
Пользователь вводит предложение. Программа считывает алфавит и ищет в нем все буквы, которые есть в предложении пользователя. Отмечает их...

Ошибка времени выполнения: Индекс находился вне границ массива
Помогите пожалуйста , написал кодировщик,работает с небольшими текстами. Как только создаю файл с большим текстом выдаёт Ошибка времени...

Ошибка времени выполнения: Индекс находился вне границ массива
var a:array of integer; var i,j,n,buf,kl,f:integer; begin read(n); for i:=1 to n do read(a); kl:=a; j:=n; i:=0; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru