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

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

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

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

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

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

karlson

Ученик
Регистрация
10 Янв 2013
Сообщения
5
Реакции
0
Баллы
0
Помогите исправить ошибку

Uses crt;
var xmin, xmax, ymin, ymax: integer;

Type matrix=record
n, m: integer;
a : array[1..20, 1..20] of integer;
end;

procedure next(var x, y : integer; vid : integer);
begin
if vid = 0 then
begin
if x = xmin then
begin
inc(y);
if y > ymax then
begin
y := ymax;
inc(x);
end
end
else if x = xmax then
begin
dec(y);
if y < ymin then
begin
y := ymin;
dec(x);
end
end
else if y = ymin then
begin
dec(x);
if x < xmin then
begin
x := xmin;
inc(y);
end
end
else if y = ymax then
begin
inc(x);
if x > xmax then
begin
x := xmax;
dec(y);
end
end
end
else if vid = 1 then
begin
inc(y);
if y > ymax then
y := ymin;
end
else
begin
inc(x);
if x > xmax then
x := xmin;
end;
end;

procedure sdvig(var mat, mat2 : matrix; k, p : integer);
var i, x, x2, y, y2, kol, vid : integer;
begin
vid := 0;
x2 := xmin; x := xmin;
y2 := ymin; y := ymin;
if xmin = xmax then
begin
kol := ymax - ymin + 1;
vid := 1;
end
else if ymin = ymax then
begin
kol := xmax - xmin + 1;
vid := 2;
end
else
kol := 2 * ((xmax - xmin + 1) + (ymax - ymin - 1));

p := p mod kol;

for i := 0 to p - 1 do
next(x2, y2, vid);

for i := 0 to kol - 1 do
begin
mat2.a[x2, y2] := mat.a[x, y];
next(x, y, vid);
next(x2, y2, vid);
end;
end;

var i, j, k, p : integer;
mat, mat2 : matrix;
begin
clrscr;
randomize;
writeLn('Laboratornaya rabota N7_1');
writeLn('Variant N1');
writeLn('IS-12-2');
writeLn('Birykov Sergey');
writeLn;
write('Vvedite kolichestvo strok n= ');
read(mat.n);
write('Vvedite kolichestvo stolbcov m= ');
read(mat.m);
write('Vvedite sloy k = ');
read(k);
write('Vvedite kolichestvo shagov p= ');
read(p);
writeln;
for i := 1 to mat.n do
for j := 1 to mat.m do
mat.a[i, j]:=random(100);
mat2 := mat;

xmin := k; xmax := mat.n - k + 1;
ymin := k; ymax := mat.m - k + 1;
if (xmin > xmax) or (ymin > ymax) then
begin
writeln('Nekorrektny vvod');
exit;
end;

writeln;
writeln('Ishodny massiv:');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat.a [j]:4);
writeln;
end;

sdvig(mat, mat2, k, p);

writeln;
writeln('Izmeneny massiv');
for i := 1 to mat.n do
begin
for j := 1 to mat.m do
write(mat2.a[j]:4);
writeln;
readln;
end;
end.
 
karlson, а в чем ошибка? У меня все работает (проверяла на Free Pascal).
P.s. Выложите задание.
 
karlson, а в чем ошибка? У меня все работает (проверяла на Free Pascal).
P.s. Выложите задание.
Ну, Анжелика, ей-право, Ваши запросы чрезмерны! Ведь нам всем по определению заняться нечем, а тут - такой простор для увлекательнейшей детективной работы:

1. Догадаться, в какой версии Паскаля писалась и запускалась программа.
2. По неработающей программе восстановить задание.
3. Угадать, в каком именно месте транслятор выдает ошибку.
4. Силой воображения восстановить текст сообщения об ошибке или хотя бы ее код.
5. Исправить ошибки и вообще отладить программу.
6. ... и это дело не затягивать!

А Вы хотите, чтобы человек Вам за просто так всю эту информацию выдал! Так это же лишний раз пальчиками пошевелить придется, а пальчики-то чай свои, не казённые. Жа..а..лко...
 
Назад
Сверху