Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 10.01.2013, 15:43   #1 (permalink)
karlson
Новичок
 
Регистрация: 10.01.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите исправить ошибку

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[i] [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[i][j]:4);
writeln;
readln;
end;
end.
karlson вне форума   Ответить с цитированием

Старый 10.01.2013, 15:43
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Аналогичные темы создавались ранее, вы можете ознакомиться с ними

Помогите исправить код
Задача на строки решена, но нужно исправить одну ошибку
Помогите исправить ошибку
Допустил ошибку в сообщении. Как исправить?

Старый 12.01.2013, 02:54   #2 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

karlson, а в чем ошибка? У меня все работает (проверяла на Free Pascal).
P.s. Выложите задание.
Léon вне форума   Ответить с цитированием
Старый 12.01.2013, 10:57   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
karlson, а в чем ошибка? У меня все работает (проверяла на Free Pascal).
P.s. Выложите задание.
Ну, Анжелика, ей-право, Ваши запросы чрезмерны! Ведь нам всем по определению заняться нечем, а тут - такой простор для увлекательнейшей детективной работы:

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

А Вы хотите, чтобы человек Вам за просто так всю эту информацию выдал! Так это же лишний раз пальчиками пошевелить придется, а пальчики-то чай свои, не казённые. Жа..а..лко...
Vladimir_S вне форума   Ответить с цитированием
Старый 12.01.2013, 15:42   #4 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ну, Анжелика, ей-право, Ваши запросы чрезмерны!...А Вы хотите, чтобы человек Вам за просто так всю эту информацию выдал!...
Ну да, Владимир, размечталась я...
Léon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.