Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 4
Регистрация: 14.01.2016
Сообщений: 58

Быстрая сортировка - индекс находился вне границ массива

22.03.2016, 18:21. Показов 883. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка в 87 строке. Индекс находиться вне границ массива. Помогите плз, буду очень признателен

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const CSize=1000;
type TRec = record
           mNumber:integer; {номер машины}
           mFam:string[30]; {Фамилия владельца}
           mAdr:string[30]; {адрес владельца}
           mTel:real;       {телефон владельца}
         end;
         
       PRec = ^TRec; {тип указатель на запись}
       TBase = array[1..CSize] of PRec; {Тип массив указателей}
 
 {---Глобальные переменные---}
var DataBase:TBase; {База данных - массив указателей}
    Count:integer;  {Фактическое к-во записей в Базе данных}
 
 
{----------------------------------------------------------------}  
  {--Чтение данных из файла---}     
function ReadData(var F:text):integer;
var n:integer; {номер авто}
    fam:string; {фамилия}
    ul:string; {улица}
    tel:real; {телефон}
    R:PRec;  {указатель на запись}
    i:integer; {счетчик}
    c:char;
begin    
 
 
While not Eof(F) and (i<=CSize) do begin
   fam:='';ul:='';c:=#0;
   inc(i);
   Read(F,n);   {Чтение номера машины}
   While (c<>'-') do begin
      read(F,c);     {Чтение фамилии владельца}           
      fam:=fam+c;
    end;  
   c:=#0; 
  While (c<>'-') do begin
     read(F,c);
     ul:=ul+c;   {читаем улицу}
    end;
    readln(F,tel);  {читаем телефон}
    delete(fam,length(fam),1);
    delete(ul,length(ul),1);
  {---присвоение значений указателям массива---}
    New(R);
  R^.mFam:=fam; R^.mAdr:=ul; R^.mNumber:=n; R^.mTel:=tel;
  DataBase[i]:=R;
 end;
ReadData:=i; 
end;
 
{--------------------------------------------------------------}
 {---Распечатка базы данных---}
Procedure ExpoDataBase;
var i:integer;
begin
i:=1;
 
while (i<=CSize) and (DataBase[i]<>nil) do begin
    writeln('Номер машины : ',DataBase[i]^.mNumber);
    writeln('Фамилия и имя владельца : ',DataBase[i]^.mFam);
    writeln('Адрес владельца : ',DataBase[i]^.mAdr);
    writeln('Номер телефона владельца : ',DataBase[i]^.mTel);
    writeln('--------------------------------------------------');
    inc(i);
    end;
end;
 
{--------------------------------------------------------------}
 {---Быстрая сортировка массива---}
Procedure QuickSort(var arg:TBase; aL,aR:integer);
var L,R:integer; {левый и правый индексы массива}
    M:integer; {M-среднее арифметическое}
    T:Prec;
begin            {T-временное хранилище}
 
L:=aL; R:=aR;
 
M:=(arg[L]^.mNumber + arg[(L+R) div 2]^.mNumber + arg[R]^.mNumber) div 3;
 
Repeat 
 
While arg[L]^.mNumber < M do L:=L+1;
 
While arg[R]^.mNumber > M do R:=R-1;
 
if L<=R then begin
   if arg[L]^.mNumber < arg[R]^.mNumber then begin
         T:=arg[L]; 
         arg[L]:=arg[R];             
         arg[R]:=T;
       end;
     L:=L+1; R:=R-1;
    end;
Until L>R;
 
If R>aL then QuickSort(arg,aL,R);
 
if L<aR then QuickSort(arg,L,R);
 
end;
 
{----------------------------------------------------------}
 
var F:text;
    i:integer;
begin
 
Assign(F,'D:\GGG.txt'); Reset(F);
    
for i:=1 to CSize do DataBase[i]:=nil;
 
Count:=ReadData(F);
QuickSort(DataBase,1,Count);
writeln('Размер Базы Данных - ',Count);
writeln('-------------------------------------------------');
ExpoDataBase;
 
end.

Входной файл такой:

1488 Вася Пупкин-Проспект Победителей 48-322228

1488 - номер
Вася Пупкин - фамилия и имя
Проспект Победителей 48 - улица
322228 - телефон.

Спасибо за помощь.)))))))))))))))))))))))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2016, 18:21
Ответы с готовыми решениями:

Индекс находился вне границ массива
Все компилируется нормально, но когда дело доходит до функции nech1 и nech2 выдается ошибка &quot;Индекс находился вне границ массива&quot;...

Ошибка времени выполнения: Индекс находился вне границ массива
Уже час не могу найти ошибку, помогите. var a:array of integer; var b:array of integer; x,y,f,z,k,m,n,r,r1,r2:integer; begin ...

Ошибка времени выполнения: Индекс находился вне границ массива
var q: string; i: integer; begin for i := 1 to 2 do begin writeln; writeln;

5
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
22.03.2016, 19:51
Запустил
Code
1
2
3
4
5
6
7
Размер Базы Данных - 1
-------------------------------------------------
Номер машины : 1488
Фамилия и имя владельца :  Вася Пупкин
Адрес владельца : Проспект Победителей 48
Номер телефона владельца : 322228
--------------------------------------------------
Добавлено через 2 минуты
Все работает.
RomaRi0, вы в какой программе? Практически, в любой IDE есть пошаговое выполнение программы. С наблюдением за переменными. Можете и сами увидеть , когда у вас происходит выход за индекс.
0
2 / 2 / 4
Регистрация: 14.01.2016
Сообщений: 58
22.03.2016, 20:41  [ТС]
capricornus CF, Блин что за бред. Использую PascalABC.Net. Раз 10 прогонял программу в откладчике, бесился из-за того, что ошибку не мог найти. Что посоветуешь сделать, чтобы таких недопониманий не было?
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
22.03.2016, 20:44
Цитата Сообщение от capricornus CF Посмотреть сообщение
в любой IDE есть пошаговое выполнение программы. С наблюдением за переменными. Можете и сами увидеть , когда у вас происходит
я, обычно, так делаю.
0
2 / 2 / 4
Регистрация: 14.01.2016
Сообщений: 58
22.03.2016, 21:51  [ТС]
capricornus CF, я понимаю, но откладчик не помогает.Я вижу только на каком именно месте происходит ошибка. Но смысл в том, что этот код у вас запустился, а у меня выдает ошибку.Вот я и спрашиваю какой IDE вы используйте?
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
22.03.2016, 22:06
Цитата Сообщение от RomaRi0 Посмотреть сообщение
PascalABC.Net.
эту.
Цитата Сообщение от RomaRi0 Посмотреть сообщение
Я вижу только на каком именно месте происходит ошибка
Значит не пользуетесь F8 и нижней вкладкой "локальные переменные" из меню "вид", где все перечислено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2016, 22:06
Помогаю со студенческими работами здесь

Ошибка времени выполнения: Индекс находился вне границ массива.
Пишет, что: &quot;Ошибка времени выполнения: Индекс находился вне границ массива.&quot; program n_5; var k, i: integer; a: array of integer;...

Ошибка времени исполнения: Индекс находился вне границ массива
uses graphabc; var pic : array of picture; i,j : integer; pole : array of integer; begin for i := 1 to 4 do

Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива
Почему-то паскаль выдаёт ошибку: &quot;Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива. Стек: ...

Ошибка: "Индекс находился вне границ массива"
Ребят, помогите пожалуйста, никак не пойму в чем ошибка. Pascal пишет: До обменаОшибка времени выполнения: Индекс находился вне границ...

пожалуйста, выдает ошибку "Индекс находился вне границ массива",программа для перевода числа из разных систем в десятичную!
program Sabc; var SU, B, S, Ax1, A1, i, j, k, d, y, p, q: integer; A: string; SW: array of string := ('0', '1',...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru