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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 16:29   #1
Aлена
 
Регистрация: 25.12.2017
Сообщений: 9
Печаль Паскаль - проверить, является ли квадратная матрица латинским квадратом

Помогите решить(((
Определить является ли квадратная матрица латинским квадратом. Латинский квадрат – матрица N*N, в которой каждая строка и каждый столбец содержит все числа от 1 до N.
Что исправить ?
Код:
uses crt;
var
  a: array[1..10, 1..10] of integer;
  n, i, j: integer;
  b: boolean;

begin
  clrscr;
  write('Введите кол-во строк и столбцов '); 
  readln(n); 
  b := true;
  for i := 1 to n do
    for j := 1 to n do
    
    begin
      readln(a[i, j]); 
      writeln( 'a(', i, ',', j, ')=', a[i, j]);
    end;
  
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      write(a[i, j]:3);
      if a[i, j] > n then b := false;
    end;
    writeln;
  end;
  if b then writeln('является')
  else writeln('не является');
  
  readln;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 25.12.2017 в 16:36.
Aлена вне форума Ответить с цитированием
Старый 25.12.2017, 16:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Aлена Посмотреть сообщение
Что исправить ?
у вас нет проверки, что
Цитата:
Сообщение от Aлена Посмотреть сообщение
в которой каждая строка и каждый столбец содержит все числа от 1 до N.

Вы спросите, как это проверить?
Ну, есть много разных способов.
например, написать функцию, в ней завести массив от 1 до N ArrayCheck: array[1..N] of byte;
перед каждой проверкой (в начале функции проверки) занести в него нолики.
потом, если число в массиве >1 и <N тогда смотреть, if ArrayCheck[ A[i,j]) ]>0 then return false; (такое число уже встретилось в строке/столбце ранее)
else ArrayCheck[ A[i,j]) ] := 1;
если после цикла b не false, тогда нужно проверить, что в ArrayCheck все единицы:
for k:=1 to N do
if ArrayCheck[ k ]<>1 then return false;

и только если все проверки прошли - тогда return true;

Далее понятно? или ещё чем помочь?

p.s. при вводе обязательно N проверяйте, что оно не больше 10
(а то Вы массив 10X10 объявили, а цикл до N крутите. если N введут больше - будет выход за границу массива!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2018, 19:35   #3
Aлена
 
Регистрация: 25.12.2017
Сообщений: 9
По умолчанию

а можете пожалуйста написать полный текст программы ( ,мне просто завтра сдавать ((( буду очень благодарна !!!
Aлена вне форума Ответить с цитированием
Старый 21.01.2018, 11:32   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Ответ: http://programmersforum.ru/showthread.php?t=316691
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить, является ли данный массив «магическим квадратом» Kapralick Общие вопросы C/C++ 1 19.11.2017 18:21
Определить, является ли квадратная матрица симметричной относительно побочной диагонали Felix_I Фриланс 3 25.05.2017 23:54
Определить, является ли матрица магическим квадратом. drakon803 Помощь студентам 11 14.12.2011 14:29
проверить, является квадратная матрица латинским квадратом? +Юлия GaL+ Паскаль, Turbo Pascal, PascalABC.NET 1 04.11.2011 23:24