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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2008, 13:27   #1
Jigar
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию Вопрос по матрицам

Как ввести матрицу в турбо паскале, чтобы все элементы матрицы были различными??
Jigar вне форума Ответить с цитированием
Старый 15.07.2008, 13:49   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Пример ввода чисел в матрицу размером [5x5]
Код:
var
  a: array[1..5,1..5] of integer;
  i,j: integer;
begin
  for i:=1 to 5 do
    for j:=1 to 5 do
      begin
        write('a[',i,',',j,']='); readln(a[i,j]);
      end;
end.
А лучше почитать какую-нибудь книжку...
_Dmitry вне форума Ответить с цитированием
Старый 15.07.2008, 14:03   #3
Jigar
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

нет, чтобы все элементы различные были
Jigar вне форума Ответить с цитированием
Старый 15.07.2008, 14:05   #4
Jigar
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

чтобы нельзя было ввести элемент уже встречающийся в матрице.
Jigar вне форума Ответить с цитированием
Старый 15.07.2008, 14:51   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Вот что придумалось.
Матрицу можно заполнить целыми числами отличными от нуля.
Код:
const
  n = 5;
var
  a: array[1..n,1..n] of integer;
  i,j,i1,j1: integer;
  flag: boolean;
begin
  flag:=false;
  for i:=1 to n do
    for j:=1 to n do
      begin
        if flag then begin
          if j > 1 then j:=j-1
          else begin
            i:=i-1; j:=n;
          end;
          flag:=false;
        end;
        write('a[',i,',',j,']='); readln(a[i,j]);
        for i1:=1 to n do
          for j1:=1 to n do
            if (a[i1,j1] = a[i,j]) and (not ((i1 = i) and (j1 = j))) then
              begin
                flag:=true; break;
              end;
      end;
end.
_Dmitry вне форума Ответить с цитированием
Старый 15.07.2008, 16:40   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Можно короче
Код:
type
  xxx = set of byte;
var
  a: array[1..5, 1..5] of integer;
  i, j, x: byte;
  stop: xxx;
begin   
  for i:=1 to 5 do   
    for j:=1 to 5 do begin
      repeat
        write('a[',i,',',j,']='); readln(x);
      until not (x in stop) ;
      include(stop, x)
    end;
end.
eoln вне форума Ответить с цитированием
Старый 15.07.2008, 21:29   #7
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

eoln да, ваш код короче и более красивый, но зато код Dmitry более универсален, ваш например можно использовать только с матрицами порядковых типов, потому что базовый тип множества должен быть порядковым, алгоритм же Dmitry работает и для типа real, например, к тому же количество элементов матрицы не может превышать 256.
ЗЫ просто напоминаю об этом Jigar'у, чтобы он учитыавл это при использовании алгоритма eoln'а
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 15.07.2008, 22:00   #8
Jigar
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

и вот ещё.... помогите решить, пожалуйста...
Дана целочисленная матрица А порядка МхN, где M,N-заданные натуральные числа. Назовём серией в i-ой строке (i=1,2,...M) случай, когда A(i,j)=A(i,j+1)=A(i,j+2)=...=A(i,j+ k), где k - натуральное число. Серии из 1 элемента не учитываются. Характеристикой i-ой строки назовём кол-во серий в строке. Упорядочить строки матрицы по убыванию их характеристик.

Всё понятно вплоть до слово "характеристика", можете объяснить, если нетрудно, а то в книжке нет этого
Jigar вне форума Ответить с цитированием
Старый 15.07.2008, 23:15   #9
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Вот пример программы, исправьте ее под себя, если требуется
Код:
program pro31;
uses
 crt;
const
 m = 5;
 n = 7;
var
 a: array [1..m,1..n] of integer; //матрица
 xarak: array [1..m] of integer; // массив характеристик
 h: array [1..n] of integer;// вспомогательный массив
 j, i, k: integer;
 b: boolean;
begin
 ClrScr;
 Randomize;
 for i:= 1 to m do
  begin
   for j:= 1 to n do
    begin
     a[i,j]:= random(5); //генерация матрицы случайными числами от 0 до 4
     write(a[i,j],' ');// и вывод
    end;
   writeln('');
  end;
 writeln('');
 for i:= 1 to m do // цикл по всем строкам
  begin
   j:= 1;
   k:= 0;
   while j <= n do // проходимся по всем элементам строки
    begin
     while a[i,j] = a[i,j+1] do //пока одинаковые соседние элементы
      begin
       inc(j); // переходим к следующему элементу
       inc(k); // увеличиваем кол-во повторяющихся подряд элементов
      end;
     if k > 0 then //если кол-во повторяющихся подряд элементов больше 1
     xarak[i]:= xarak[i]+1;//то увеличиваем кол-во серий для данной строки
     k:= 0;
     inc(j);
    end;
  end;
 b:= false;
 while not b do // обычная сортировка пузырьком
  begin
   b:= true;
   for i:= 1 to m-1 do
    if xarak[i] < xarak[i+1] then
     begin
      k:= xarak[i];
      xarak[i]:= xarak[i+1];
      xarak[i+1]:= k;
      for j:= 1 to n do
       h[j]:= a[i,j];
      a[i]:= a[i+1];
      for j:= 1 to n do
       a[i+1,j]:= h[j];
      b:= false;
     end;
  end;
 for i:= 1 to m do
  begin
   for j:= 1 to n do
    write(a[i,j],' ');// вывод упорядоченной матрицы
   writeln('');
  end;
 readln;
end.
Если необходимы более подробные объяснения, я готов их дать.
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 17.07.2008, 14:06   #10
Jigar
 
Регистрация: 15.07.2008
Сообщений: 5
По умолчанию

спасибо. выручили.
у меня ещё 1 вопрос к вам назрел...
Заполнить часть матрицы А порядка N, где N - чётное натуральное число, натуральными числами, начиная с единицы, в порядке, указанном на рисунке - http://img261.imageshack.us/my.php?image=matrixvk4.jpg .
Jigar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
TObject *Sender sergei64_89 Общие вопросы C/C++ 1 06.06.2008 13:36
Задача по матрицам Alfons Паскаль, Turbo Pascal, PascalABC.NET 3 05.03.2008 14:09
Программа по матрицам в паскале. drakon803 Помощь студентам 1 12.12.2007 20:11