Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 19:13   #1
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию Инверсия в двухмерной матрице. Паскаль

Возникла небольшая проблемка, помогите решить. Мне надо найти кол-во инверсий при условии, что инверсия - A[i,m]>A[i,m+1]. с этим я вроде справилась. После мне нужно получить массив С1,С2,С3....Сn по правилу Сi=1 если в i-строке инверсий больше 2-х, если условие не выполняется то Сi=0. Я не понимаю условие, не могли бы помочь? Код инверсии. Кстати как вывести матрицу на экран построчно?
Код:
{i,m- индексы, k-кол-во инверсийб x,j,n-вспомогательные переменные}
var a: array[1..5,1..3] of integer;
    i,m,k,j,x, n:integer;
begin

   randomize;
   for i:=1 to 5 do
   for m:=1 to 3 do
     a[i,m]:= random(9)+1;
   for i:=1 to 5 do
   for m:=1 to 3 do
     write('  ',a[i, m]);readln;
   for i:=1 to 4 do
   for m:=1 to 2 do
      begin
         for j:=1 to 4 do
         for n:=1 to 2 do
             if a[j,n]>a[j,n+1] then
                 begin
                    x:=a[j,n];a[j,n]:=a[j,n+1];a[j,n+1]:=x;k:=k+1;
                 end;
      end;
write('k=',k);readln
end.
Safary вне форума Ответить с цитированием
Старый 26.11.2008, 23:51   #2
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию

Не могу понять работает правильно у меня прога или нет?))))) ещё один вариант с построчным выводом:
Код:
{i,m- индексы, k-кол-во инверсийб x,j,n-вспомогательные переменные}

var a: array[1..5,1..3] of integer;
    i,m,k,j,x,n:integer;
begin

   randomize;
   for i:=1 to 5 do
   for m:=1 to 3 do
     a[i,m]:= random(9)+1;
   for i:= 1 to 5 do
   begin
    writeln('');
    for m:=1 to 3 do
    write(A[i, m], ' ');
    end;
   for i:=0 to 4 do
   for m:=0 to 2 do
      begin
         for j:=0 to 4 do
         for n:=0 to 2 do
             if a[j,n]>a[j,n+1] then
                 begin
                    x:=a[j,n];a[j,n]:=a[j,n+1];a[j,n+1]:=x;k:=k+1;
                 end;
      end;
write('k=',k);readln
end.
Safary вне форума Ответить с цитированием
Старый 27.11.2008, 09:43   #3
AlexanderPeshkov
Пользователь
 
Регистрация: 24.11.2008
Сообщений: 26
По умолчанию

если я правильно понял то будет примерно так
var a: array[1..5,1..3] of integer;
i,m,k,j,x,n,count:integer;
c:array[1..5]of integer;
begin

randomize;
for i:=1 to 5 do
for m:=1 to 3 do
a[i,m]:= random(9)+1;
for i:= 1 to 5 do
begin
writeln('');
for m:=1 to 3 do
write(A[i, m], ' ');
end;
for i:=0 to 4 do че то я не пойму зачем тебе эти два цикла???
for m:=0 to 2 do
begin
for j:=0 to 4 do
begin
count=0;
for n:=0 to 2 do
if a[j,n]>a[j,n+1] then
begin
x:=a[j,n];a[j,n]:=a[j,n+1];a[j,n+1]:=x;k:=k+1;succ(count);
end;
if count>2 then
c[j]:=1
else
c[j]:=0;
end;
end;
write('k=',k);readln
end.
AlexanderPeshkov вне форума Ответить с цитированием
Старый 27.11.2008, 17:49   #4
Safary
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 24
По умолчанию

спасибо большое)))) чуть чуть подправила, оптимизировала и всё заработало)
Safary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестановка строк матрице gotex Помощь студентам 1 24.11.2008 20:40
Инверсия Witaliy Общие вопросы Delphi 2 12.05.2008 19:23
Инверсия цвета Dj_smart Общие вопросы Delphi 6 08.05.2008 16:29
Паскаль. Сравнение на подобность треугольников. Координаты вершин в матрице. Jondeer Помощь студентам 3 07.11.2007 07:31