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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2009, 15:01   #1
LeNus'Ka
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию Задача. PASCAL

помоги мне, пожалуйста, надо решить задачу =(
Дана матрица 8*8. Найти такие k, что k-ая строка совпадает с k-ым столбцом (оформит в виде процедуры)
LeNus'Ka вне форума Ответить с цитированием
Старый 19.12.2009, 18:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
const MaxN = 8;
type MyArray = array[1..MaxN,1..MaxN] of integer;
procedure FindK(M : MyArray; var FoundK : integer);
var i, j, StartK : integer;
  FlagFound : boolean;
begin
  StartK := FoundK+1; {поиск будем продолжать от переданного значения FoundK}
  FoundK := 0; {ноль - если такое K не нашли}
  FlagFound := false;
  while (Not FlagFound) and (StartK<=MaxN) do 
  begin
     FlagFound := true; {считаем, что строка и столбце сопадают}
     for i:=1 to MaxN do
       if M[i,StartK] <> M[StartK,i] then FlagFound := false;
     if Not FlagFound then Inc(StartK);
  end;
  if FlagFound then FoundK := StartK;
end;

var
  A : MyArray;
  i, j, K : integer;
begin
   {тут заполнение A}
   Randomize;
   for  i:=1 to 8 do
    begin
      for j:=1 to 8 do begin
        A[i,j]:= random(2)+1; {заполняем единицами и двойками случайным образом}


        {Эти две строчки ниже, 
          чтобы 1 строка совпадала с 1-м столбцом (туда заносим единицу),
          а 5-я строка совпадала с 5-м столбцом - туда заносим двойку.
         Это исключительно для отладки 
          - можно заносить любые цифры в любые строки/столбцы,
              а лучше вообще убрать эти две строчки...            
          - это никак на алгоритм поиска не влияет!!!!!}
        if (i=1) or (j=1) then A[i,j] := 1;
        if (i=5) or (j=5) then A[i,j] := 2;
        Write(A[i,j]:3);
      end;
      WriteLn;
   end;
    
   K := 0;
   repeat
      FindK(A, K);
      if K>0 then WriteLn('K=',K);
   until K=0;   
   WriteLn('Done.');
   Readln;
end.

Последний раз редактировалось Serge_Bliznykov; 19.12.2009 в 18:04.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2009, 19:10   #3
LeNus'Ka
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию

Спасибо большое! =) только... можно сделать так, чтобы массив вводился с клавиатуры?
LeNus'Ka вне форума Ответить с цитированием
Старый 19.12.2009, 19:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
можно сделать так, чтобы массив вводился с клавиатуры?
это, как я понимаю, Вы у меня разрешение спрашиваете?!
можно, меняйте!

p.s. а если, вдруг, Вам интересно, КАК это сделать - то достаточно выкинуть randomize и вместо A[i,j] := random(...)
написать
Read(A[i,j])
ну и вывод массива Write(A[i,j]) и WriteLn надо в цикле убрать,
а вывести массив отдельно, после ввода...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2009, 20:01   #5
LeNus'Ka
Пользователь
 
Регистрация: 19.12.2009
Сообщений: 15
По умолчанию

Еще раз спасибо Вам...) но мне тут некоторые моменты непонятны=(
LeNus'Ka вне форума Ответить с цитированием
Старый 19.12.2009, 20:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
но мне тут некоторые моменты непонятны=(
сочувствую...

маленький оффтоп..
Анекдот в тему.


Профессор после лекции, на которой он всю доску исписал выводом какой-то формулы, обращается к студентам:
— У кого-нибудь есть вопросы по выводу формулы?
Студент:
— Мне непонятно преобразование Alpha в Betta...
Профессор:
— Это не вопрос. Это утверждение. Вопросы у кого-нибудь есть?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача в Pascal alina777 Помощь студентам 3 06.12.2008 18:55
Задача на Pascal... Sota Помощь студентам 3 04.05.2008 14:52