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

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

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

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

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

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

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

ширина-i_min+i_max-1+(j_max-j_min-1)*ширина -если считать по строчкам, или можно счётчик добавить)
Всё написанное мной является лично моим мнением за исключением когда указан источник данных.

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

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

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

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 в 13:37.
JinglsOrg вне форума Ответить с цитированием
Старый 24.02.2011, 13:15   #6
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
По умолчанию

в общем вот решение -
Код:
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, 13:16   #7
turik1303
 
Регистрация: 24.02.2011
Сообщений: 6
По умолчанию

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

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

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

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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