Автор Тема: Проверьте программу на Pascal  (Прочитано 6671 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #15 : 04 Февраля 2012, 00:37:13 »
Стало быть, goto заменяем на break. Если  при проверке т.н. "седло" находится на краешке, пишем warning: " Точка находится на границе матрицы строка i=..., столбец j=...".
ЗЫ. Куда пропал топикстартёр? Мы за всё отдуваться должны?
Согласен с доказательством, что седло м.б. только одно (в строгом смысле). Сам к этому выводу пришёл. А там уж "кто первый встал, того и сапоги" :). Или писать что-то типа: "Первое седло ...". Только генератор текста понадобится, типа "тысяча шестьсот сорок пятое", а это другая задача.
Седло на краешке быть не может - это полуседло.
В задаче же сказано скать седло.
Седел на пространной матрице может быть несколько, одно или ни одного.

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #16 : 04 Февраля 2012, 12:57:29 »
   2  1   5 7  9
   4  3  7  8  9
   8  1  9  8  3
 11 12 1  2  1
 12 13 9  7 4

Имеем матрицу с двумя сёдлами. Первое размещено слева направо, второе - сверху вниз.
Первое отмечено красным цветом, второе - зелёным.
Блок поиска седловых точек:
 for i:=2 to n-1 do
    for j:=2 to m-1 do
     begin
      if (a[i,j]<a[i,j-1] and a[i,j]<a[i,j+1]) and (a[i,j]<a[i-1,j] and a[i,j]>a[i+1,j) then writeln(a[i,j],i,j);
      if (a[i,j]>a[i,j-1] and a[i,j]>a[i,j+1]) and (a[i,j]<a[i-1,j] and a[i,j]<a[i+1,j) then writeln(a[i,j],i,j);
    end;
writeln('Поиск седловых точек окончен.');

Оффлайн sp

  • Пользователь
  • **
  • Сообщений: 51
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #17 : 05 Февраля 2012, 03:53:53 »
По определению седло имеет направление. Ну типа лошадь. Имеет напраление где грива и где хвост. Но Ваше седло, ортогональное, вполе подходящее.
У Вас там числа 12, 13 и другие надо заменить на, скажем, нули. А то в подматрицах сёдла ищем. Так в задании не объявлено.

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #18 : 05 Февраля 2012, 13:41:03 »
  2  1   5 7  9
   4  3  7  8  9
   8  1  9  8  3
 11 12 1  2  1
 12 13 9  7 4

Имеем матрицу с двумя сёдлами. Первое размещено слева направо, второе - сверху вниз.
Первое отмечено красным цветом, второе - зелёным.
Блок поиска седловых точек:
 for i:=2 to n-1 do
    for j:=2 to m-1 do
     begin
      if (a[i,j]<a[i,j-1] and a[i,j]<a[i,j+1]) and (a[i,j]<a[i-1,j] and a[i,j]>a[i+1,j) then writeln(a[i,j],i,j);
      if (a[i,j]>a[i,j-1] and a[i,j]>a[i,j+1]) and (a[i,j]<a[i-1,j] and a[i,j]<a[i+1,j) then writeln(a[i,j],i,j);
    end;
writeln('Поиск седловых точек окончен.');

Определение:
Цитировать
седловая точка-элемент матрицы,являющийся минимальным в своей строке и максимальным в своем столбце.
По определнию седловых точек в вашем примере нет. Какую задачу вы решаете?

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #19 : 06 Февраля 2012, 14:43:48 »
По определению седло имеет направление. Ну типа лошадь. Имеет напраление где грива и где хвост. Но Ваше седло, ортогональное, вполе подходящее. У Вас там числа 12, 13 и другие надо заменить на, скажем, нули. А то в подматрицах сёдла ищем. Так в задании не объявлено.
Спасибо за уточнени исходных данных.
 3  2 5 7  9
 4  3 7 8  9
 8  28 3
 1  1 1  6  1
 2  1 9  7 4
Два седла не локальных. С соблюдением условий по строкам истолбцам.
У меня был вариант локальных седел в приведённой матрице.
Программы это не меняет.

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #20 : 06 Февраля 2012, 18:48:38 »
3 это седло, а что тогда 6? Точка, обратная седлу. Горб, что ли?  :)

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #21 : 07 Февраля 2012, 11:41:17 »
3 это седло, а что тогда 6? Точка, обратная седлу. Горб, что ли?  :)
3 - Конь смотрит на восток.
6 - Конь смотрит на север.

Оффлайн sp

  • Пользователь
  • **
  • Сообщений: 51
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #22 : 15 Февраля 2012, 17:14:10 »
Конь в точке 6 - это такой транспонированный конь. Или конь, который пошёл на лево. :D

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Проверьте программу на Pascal
« Ответ #23 : 15 Февраля 2012, 23:27:40 »
От, волчара! За ними глаз да глаз нужен!

 

проверьте правильность - Паскаль

Автор Livanessa

Ответов: 4
Просмотров: 3870
Последний ответ 07 Декабря 2009, 16:22:56
от Данила
Массив VBA - проверьте пожалуйста

Автор Nataly1992

Ответов: 7
Просмотров: 3275
Последний ответ 13 Января 2010, 22:34:58
от Nataly1992
Помогите в составлении программы на Turbo Pascal,плиз!срочно!

Автор Ymni4ka

Ответов: 1
Просмотров: 4090
Последний ответ 03 Ноября 2010, 09:27:22
от testtest
Помогите составить блок-схему и программы на языке Pascal

Автор tasha1991

Ответов: 0
Просмотров: 4683
Последний ответ 09 Января 2011, 16:33:00
от tasha1991
Pascal. Вычислить значения  du/dx, пользуясь конечно-разностным соотношением

Автор Shurara

Ответов: 0
Просмотров: 4496
Последний ответ 09 Февраля 2011, 17:54:21
от Shurara