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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 19:45   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Минимумы строки матрицы.

Доброго времени суток. Возникла мелкая ошибка в программе. Нужно вычислить минимум каждой строки матрицы но учесть что элементы =-1 в расчёт не берутся. Вычисляет вроди верно но первый минимум т.е первой строки всё равно ставит как -1.А вот далее верно вычисляет.Не могу понять в чём ошибка.Помогите разобраться.Заранее благодарен.

Код:
const row=100;col=row;
var a:array[1..row,1..col] of integer;
i,j,n,m,min:integer;
begin
 randomize;
writeln('Vvedite razmer matrici');
 readln(n);
  m:=n;
  for i:=1 to n do
    for j:=1 to m do
     if j>i then
      begin
        a[i,j]:=random(100);
      end
  else if i=j then
      begin
         a[i,j]:=-2;
      end
  else  begin
         a[i,j]:=random(100);
          end;

i:=1;
while (i<=n) do
  begin
   min:=a[i,1];
    for j:=2 to m do
      begin
       if  (a[i,j]<>-2)and(a[i,j]<min) then
         begin
           min:=a[i,j];
         end;
end;
        i:=i+1;
          writeln(min);
    end;
for i:=1 to n do
      begin
          for j:=1 to m do
            write(a[i,j]:4) ;
      writeln;
end;
  readln;
  end.
Nicko_mt вне форума Ответить с цитированием
Старый 25.09.2011, 19:54   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
i:=1;
while (i<=n) do
  begin
   min:=a[i,1];
не проверяется значение первого элемента, а его значение принимается как минимум. в первой строке на этом месте и стоит -2

... зачем так много конструкций begin ... end - внутри находится только один оператор, значит можно опустить ...
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 25.09.2011, 20:34   #3
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Step_UA, все правильно, только если он поставит for j:=1 to m do ничего не поможет.
Перед поиском минимального, он заполняет диагональ значегием -2
Код:
if i=j then
      begin
         a[i,j]:=-2;
      end
Посему, условие
if (a[i,j]<>-2)and(a[i,j]<min) then
будет игнорироватся для первого ряда так как минимум = -2 и ни одно значение в массиве не будет меньше -2.
(потому что, полагаю что матрица заполненна положительными числами, роаз -2 выбран в качестве метки "пустое значение")
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 25.09.2011, 20:39   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

JUDAS, я не писал что делать, а лишь указал из-за чего
Цитата:
Не могу понять в чём ошибка
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 25.09.2011, 21:15   #5
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

ошибка у него в том что строка min:=a[i,1]; должна выглядеть min:=MinInt; или min:=-10000
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 25.09.2011, 21:24   #6
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
ошибка у него в том что строка min:=a[i,1]; должна выглядеть min:=MinInt; или min:=-10000
не путайте человека, min на начальном этапе должен быть не меньше максимального элемента и просматриваться все элементы строки, т.к. генерируется случайные числа до 100 то
Код:
 min:=100;
    for j:=1 to m do
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 25.09.2011, 22:06   #7
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
не путайте человека
согласен, с минусом лажанулся
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 04.10.2011, 02:27   #8
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Спасибо за ответы на поставленный вопрос. Решил проблему добавлением дополнительных проверок.
Nicko_mt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Минимумы и максимумы Абай Паскаль, Turbo Pascal, PascalABC.NET 3 13.06.2011 22:55
ОТСОРТИРОВАТЬ максимумы по убыванию в матрице,а минимумы по возрастанию YooooO!!! Паскаль, Turbo Pascal, PascalABC.NET 1 22.01.2011 14:21
C++. Интересная задача на минимумы. v1le Помощь студентам 1 26.12.2010 20:29
минимумы и максимумы Delphin-666 Общие вопросы Delphi 9 15.06.2010 09:07
Локальные минимумы и их номера. f4rr3l Паскаль, Turbo Pascal, PascalABC.NET 5 06.01.2009 21:51