Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массив

Автор: Студентка 5.06.2008 11:31

Люди....помогите!!!

Сижу над задачей дней пять уже, а результата всего два:
1.Либо не правильно считает.
2.Либо зацикливается.

Вот задача:
Составить Паскаль-программу, производящую обработку квадратной матрицы по-рядка NxN, из целых положительных чисел. Обработка: перестановка в обратном порядке элементов строки, содержащей минимальный элемент матрицы.

Заранее спасибо! smile.gif

Автор: Client 5.06.2008 11:50

Покажи код, будем разбираться smile.gif

Автор: Гость 5.06.2008 12:30

uses crt;
type mas=array[1..10,1..10] of integer;
var
i,j,n,min:integer;
a:mas;
begin
clrscr;
write('Vvedite razmernost matrici:');
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
end;
min:=a[1,1];
for i:=1 to n do
begin
for j:=1 to n do
begin
if a[i,j]<min then min:=a[i,j];
end;
end;

Это вот до перестановки...а дальше у меня полная попа smile.gif . Я думаю дальше надо, чтобы элемент сравнивался с минимумом и если он ему равен, перепечатывал строку в обратном порядке, а если нет - то печатал старый элемент. Вот ток как это сделать я не понимаю...пробовала цикл, но у меня он у меня где-то видать клинил и печатал элементы без остановки. Приходилось перезапускать все.

Автор: Client 5.06.2008 23:44

uses crt;
type mas=array[1..10,1..10] of integer;
var
i,j,n,min,k,l:integer;
a:mas;
begin
clrscr;
write('Vvedite razmernost matrici:');
readln(n);
for i:=1 to n do
for j:=1 to n do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
min:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]<min then
min:=a[i,j];
for i:=1 to n do begin
j:=1;
while j<=n do begin
if a[i,j]=min then begin
for k:=1 to n div 2 do begin
l:=a[i,k];
a[i,k]:=a[i,n-k+1];
a[i,n-k+1]:=l;
j:=n
end
end;
inc(j)
end;
end;
for i:=1 to n do begin
writeln;
for j:=1 to n do write(a[i,j]:6)
end;
readkey
end.

Вроде так

Автор: Гость 6.06.2008 0:17

Работает!!! Спасибо!

Я только один момент не могу понять. Вот в этой строке:

for k:=1 to n div 2 do begin - что сдесь "div 2" делает....всмысле как это работает?

Автор: Client 6.06.2008 0:49

Здесь меняются местами первый с последним, второй с предпоследним и т.д.

Автор: Гость 6.06.2008 0:57

О как...спасибо еще раз! smile.gif