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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2012, 11:05   #1
Никнейм
Новичок
Джуниор
 
Регистрация: 27.01.2012
Сообщений: 1
По умолчанию Free pascal. Массивы

С помощью датчика случайных чисел заполнить целочисленный массив a[1..n,1..n]. Найти второй минимальный элемент массива (т.е. элемент, который больше самого маленького элемента массива, он меньше всех остальных).
Никнейм вне форума Ответить с цитированием
Старый 27.01.2012, 12:52   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Никнейм Посмотреть сообщение
С помощью датчика случайных чисел заполнить целочисленный массив a[1..n,1..n]. Найти второй минимальный элемент массива (т.е. элемент, который больше самого маленького элемента массива, он меньше всех остальных).
В чем же сложность?
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 27.01.2012, 13:14   #3
SergGhost
Пользователь
 
Аватар для SergGhost
 
Регистрация: 25.09.2008
Сообщений: 39
По умолчанию

Код:
uses crt;
const n=5;
var  i,j,a,a1:integer;
     ar:array[1..n,1..n] of integer;
procedure zapolnenie(i,j:integer);
begin
For i:=1 to n do
begin
  for j:=1 to n do
    begin
      randomize;
      ar[i,j]:=random(100);
      write(ar[i,j]);
      write(' ');
    end;
  writeln(' ');
 end;
end;
begin
clrscr;
zapolnenie(1,1);
a:=ar[1,1];
//Нахождение минимального элемента
for i:=1 to n do
  for j:=1 to n do
  begin
    if ar[i,j]<a then
      a:=ar[i,j]
  end;
  writeln();
  writeln(a);
//Нахождение второго по минимуму)
a1:=100;
 for i:=1 to n do
  for j:=1 to n do
  begin
    if ((ar[i,j]<a1) and (a1>a)) then
      a1:=ar[i,j]
  end;
writeln();
writeln(a1);
end.
P.S. Не забудь жамкнуть на весы.
Хотя и сладостен азарт по сразу двум идти дорогам, нельзя одной колодой карт играть и с дьяволом и с богом.
SergGhost вне форума Ответить с цитированием
Старый 27.01.2012, 13:15   #4
SergGhost
Пользователь
 
Аватар для SergGhost
 
Регистрация: 25.09.2008
Сообщений: 39
По умолчанию

как то так, но этот участок кода надо подредактировать
//Нахождение второго по минимуму)
Код:
a1:=100;
 for i:=1 to n do
  for j:=1 to n do
  begin
    if ((ar[i,j]<a1) and (a1>a)) then
      a1:=ar[i,j]
  end;
writeln();
writeln(a1);
end.
считает не совсем верно.
щас просто некогда.
P.S. Не забудь жамкнуть на весы.
Хотя и сладостен азарт по сразу двум идти дорогам, нельзя одной колодой карт играть и с дьяволом и с богом.
SergGhost вне форума Ответить с цитированием
Старый 27.01.2012, 15:27   #5
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Вот рабочая -
Код:

uses crt;
const
  n=4;
var
  Arr:array[1..n,1..n] of Integer;
  i,j,min,posi,posj,raz,razmin:Integer;
begin
  writeln('Massive is -');
  min:=arr[1,1];
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      Arr[i,j]:=Random(30)-10;
      write(Arr[i,j],' ');
      if Arr[i,j]<min then
        min:=arr[i,j];
    end;
    Writeln;
  end;
  razmin:=2147483647;
  for i:=1 to n do
    for j:=1 to n do
    begin
      if Arr[i,j]<>min then
      begin
        if razmin>(Arr[i,j]-min) then
        begin
          razmin:=Arr[i,j]-min;
          posi:=i;
          posj:=j;
        end;
      end;
    end;
  writeln;
  write('Result = ',arr[posi,posj]);
  Readln;
end.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 27.01.2012, 20:07   #6
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

как вариант:
Код:
const
  n=5;
var
  A:array[1..n,1..n] of Integer;
  i,j,min,min2:Integer;
begin
  randomize;
  min:=maxint;
  for i:=1 to n do
   begin
    for j:=1 to n do
     begin
      A[i,j]:=Random(101)-50;
      write(A[i,j]:6);
      if A[i,j]<min
       then begin min2:=min; min:=A[i,j] end
       else
        if A[i,j]<min2 then min2:=A[i,j]
     end;
    Writeln
   end;
  write('Второй минимальный элемент = ',min2);
  Readln
end.
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 28.01.2012, 03:19   #7
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Step_UA, если в массиве два или больше элемента, равных минимуму, то твоя прога даст минимальное значение. В условии сказано, что второй мимнимальный должен быть больше него..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 28.01.2012, 03:28   #8
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Step_UA, если в массиве два или больше элемента, равных минимуму, то твоя прога даст минимальное значение. В условии сказано, что второй мимнимальный должен быть больше него..
согласен ... чтоб этого не было необходимо дополнить условие отбора min2 с
Код:
if A[i,j]<min2 then min2:=A[i,j]
на
Код:
if (A[i,j]>min) and (A[i,j]<min2) then min2:=A[i,j]
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 28.01.2012, 09:40   #9
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Step_UA Посмотреть сообщение
согласен ... чтоб этого не было необходимо
Боюсь, это не так уж многим лучше.. Если все элементы в массиве одинаковые, твой код скорее всего выдаст 0, что совсем неверно.
Я пытался сказать, что условие поставлено не совсем корректно на самом деле. Тут нужно либо додумывать, что делать в специальных ситуациях (например, выводить словами, что мол такого нет), либо.. Короче, Step_UA, советую тебе сослаться на свою собственную подпись и спать спокойно )).
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Free Pascal Waqq Паскаль, Turbo Pascal, PascalABC.NET 1 30.12.2011 18:47
Turbo Pascal и Free Pascal , в чем разница? antoxann Паскаль, Turbo Pascal, PascalABC.NET 31 09.11.2011 07:52
Free Pascal GreenDay Помощь студентам 0 03.05.2011 08:55
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Free pascal Иллидан Свободное общение 5 17.04.2008 12:22