Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 24.02.2011, 12:50   #1
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
Плохо задача по паскалю..

Доброго времени суток. Дана квадратная матрица. Подскажите пожалуйста как найти количество элементов между максимальным и минимальным элементами матрицы? максимальный и минимальный элементы нашел, индексы этих элементов тоже нашел. как найти теперь количество элементов между ними?
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 13:22   #2
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Адрес: Магнитогорск
Сообщений: 48
Репутация: 29
По умолчанию

ширина-i_min+i_max-1+(j_max-j_min-1)*ширина -если считать по строчкам, или можно счётчик добавить)

Последний раз редактировалось JinglsOrg; 24.02.2011 в 13:31.
JinglsOrg вне форума   Ответить с цитированием
Старый 24.02.2011, 13:31   #3
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
По умолчанию

не работает( выдает неправильное значение(
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 13:51   #4
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
По умолчанию

вроде сообразил как решить) чуть позже отпишусь) вдруг пригодится кому)
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 14:12   #5
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Адрес: Магнитогорск
Сообщений: 48
Репутация: 29
По умолчанию

abs((max_j+max_i*n)-(min_j+min_i*n))-1; где n-ширина матрицы ответом может стать "-1" если минимальный и максимальный элеметы являются одним и тем же - это когда все элементы массива одинаковы

Код:
program jiu;
const
n=10;
var
a:array[1..n,1..n] of integer;
rast,past,i,j,min,min_j,min_i,max,max_i,max_j:integer;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(100);

max:=a[1,1];
max_i:=1;
max_j:=1;
min:=a[1,1];
min_i:=1;
min_j:=1;
for i:=1 to n do
for j:=1 to n do
begin
 if (a[i,j]<min) then
  begin
   min:=a[i,j];
   min_i:=i;
   min_j:=j;
  end;
 if (a[i,j]>max) then
  begin
   max:=a[i,j];
   max_i:=i;
   max_j:=j;
   end;
end;
rast:=abs((max_j+max_i*n)-(min_j+min_i*n))-1;

   
for i:=1 to n do
begin
 for j:=1 to n do
 write(a[i,j],' ');
 writeln;
end;
writeln('min= ',a[min_i,min_j],' по координатам: ',min_i,' ',min_j,'; max= ',a[max_i,max_j],' по координатам: ',max_i,' ',max_j,';');
writeln('Расстояние= ',rast);
end.

Последний раз редактировалось JinglsOrg; 24.02.2011 в 14:37.
JinglsOrg вне форума   Ответить с цитированием
Старый 24.02.2011, 14:15   #6
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
По умолчанию

в общем вот решение -
Код:
if i_min < i_max then k:=(n-j_min)+(n-(n-j_max+1))+(i_max-i_min-1)*n;
if i_min = i_max then begin
if j_min < j_max then k:=j_max-j_min-1;
if j_min > j_max then k:=j_min-j_max-1;
end;
if i_min > i_max then k:=(n-j_max)+(n-(n-j_min+1))+(i_max-i_min-1)*n;
где k - количество элементов между минимальным и максимальным элементами.
n - ширина массива.
i_min - строка с минимальным элементом
i_max - строка с максимальным элементом
j_min - столбец с минимальным элементом
j_max - столбец с максимальным элементом
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 14:16   #7
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
По умолчанию

спасибо) тему можно закрывать)
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 14:37   #8
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Адрес: Магнитогорск
Сообщений: 48
Репутация: 29
По умолчанию

А если все эллементы в массиве равны?)
JinglsOrg вне форума   Ответить с цитированием
Старый 24.02.2011, 17:47   #9
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
Репутация: 10
По умолчанию

ну тут массив заполняется случайными числами) и шанс что минимальный и максимальный элемент будут равны ничтожно мал))
turik1303 вне форума   Ответить с цитированием
Старый 24.02.2011, 18:57   #10
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Адрес: Магнитогорск
Сообщений: 48
Репутация: 29
По умолчанию

матрица 2x2 с 2-мя случайными числами заполнится одинаковыми числами с вероятностью 12.5% =) какая-никакая всё же вероятность
JinglsOrg вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЗАДАЧА по Паскалю tigrenok18 Паскаль 1 18.12.2010 21:04
Задача по паскалю dante92 Помощь студентам 1 07.12.2009 20:07
задача по паскалю poluprogramist Помощь студентам 2 21.05.2008 21:44


13:29.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.