Информатика, вопрос задал dinara14toi , 7 лет назад

Паскаль.Пишет Ошибка индекс находился вне границ массива.Помогите пожалуйста,вот программа
uses GraphABC;
const resx = 1000;
resy = 500;
var t: text;
ar: array[1..6,1..3] of integer;
x, y, i, am, mass, min, pos, pos2: integer;
dist, minr: real;
begin
SetWindowSize(resx,resy);
assign(t,'input.txt');
reset(t);
while not EOF(t) do
begin
inc(am);
readln(t,x,y,mass);
ar[am,1] := x;
ar[am,2] := y;
ar[am,3] := mass;
SetPenWidth(mass);
Circle(x,y,mass);
end;
close(t);
while am > 1 do
begin
min := maxint;
for i := 1 to am do
if ar[i,3] < min
then
begin
min := ar[i,3];
pos := i;
end;
swap(ar[pos,1],ar[am,1]);
swap(ar[pos,2],ar[am,2]);
swap(ar[pos,3],ar[am,3]);
dec(am);
pos := am + 1;
for i := 1 to am do
begin
minr := sqrt(sqr(resx) + sqr(resy)) + 1;
dist := sqrt(sqr(ar[i,1] - ar[pos,1]) + sqr(ar[i,2] - ar[pos,2]));
if dist < minr
then
begin
minr := dist;
pos2 := i;
end;
end;
SetPenWidth(2);
SetPenColor(RGB((255 div am),0,0));
Line(ar[pos,1],ar[pos,2],ar[pos2,1],ar[pos2,2]);
ar[pos2,3] += ar[pos,3];
end;
writeln('Оставшаяся точка находится в x = ', ar[pos2,1], ' y = ', ar[pos2,2], ' и имеет массу = ', ar[pos2,3]);
end.

Ответы на вопрос

Ответил Вованичикчка
0

В текстовом файле input.txt должны храниться координаты точек и масса каждой. Если в файле их меньше двух, то в строке writeln('Оставшаяся точка находится в x = ', ar[pos2,1], ' y = ', ar[pos2,2], ' и имеет массу = ', ar[pos2,3]); происходит обращение к несуществующему элементу массива.

В текстовом файле должна быть подобная запись, например:

5

10

2

40

15

6

, где 5 - координата x первой точки, 10 - координата y первой точки, 2 - вес первой точки, 40 - координата x второй точки, 15 - координата y второй точки, 6 - вес второй точки.

Минимум — 2 точки.

Максимум — 6 точек.

Ответил dinara14toi
0
спасибо большое))
Новые вопросы