Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/625: Рейтинг темы: голосов - 625, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 8
1

Поиск минимального элемента в массиве

29.04.2010, 11:47. Показов 130159. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
дан одномерный массив А[n]. Написать программу на языке паскаль, реализующую поиск минимального элемента в массиве А[n]. результат вывести на экран.
зарание спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2010, 11:47
Ответы с готовыми решениями:

Поиск максимального и минимального элемента в массиве
Помогите отредактировать программу. Задание: Ввести двумерный массив, найти индексы и значения...

в массиве А [n] отрицательные элементы заменить на значение максимального элемента, нули – на значение минимального элемента.
в массиве А отрицательные элементы заменить на значение максимального элемента, нули – на значение...

Найти индексы минимального элемента в массиве
Написать программу, которая запрашивает размерность двумерного массива, заполняет его случайными...

Поиск минимального элемента массива
в массиве хранится информация о стоимости 1 кг 20 видов конфет. определить сколько стоят самые...

21
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
29.04.2010, 11:49 2
Pascal
1
2
3
4
5
min:=1;
for i:=2 to n do
 if a[i]<a[min] then min:=i;
 
writeln('минимальный элемент ', a[min]);
1
1915 / 1065 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
29.04.2010, 11:49 3
Pascal
1
2
3
4
min:=a[1];
for i:=2 to n do
 if a[i]<min then
  min:=a[i];
1
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 8
29.04.2010, 12:18  [ТС] 4
если вас не затруднитвыложите всю программу
0
1915 / 1065 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
29.04.2010, 12:25 5
GenociD, стыдно...это самый примитив...
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 8
29.04.2010, 12:27  [ТС] 6
знаю что стыдно...я только начинаю разбираться...
0
1915 / 1065 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
29.04.2010, 12:44 7
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const n=10;
var a:array[1..n] of integer;
    min,i:integer;
begin
for i:=1 to n do
 begin
  a[i]:=random(20);
  Write(a[i],'  ');
 end;
min:=a[1];
for i:=2 to n do
 if a[i]<min then
  min:=a[i];
Writeln('Min ',min);
end.
3
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
23.09.2019, 17:36 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var a :array [1..100] of integer;
min, nom, i,n:integer;
begin
  i:=0;
  min:=1000;
  nom:=0;
  n:=10;
  writeln('Массив до изменений');
  for i:=1 to n do
    begin
      a[i]:= random(1,5);
      writeln(a[i]);
    end;
    for i:=1 to n do
    begin
      if (a[i]<min) or (a[i]=min) then
        begin
          min := a[i];
          nom:=i;
        end;
    end;
     writeln('Массив после изменений');
     for i:=1 to n do
    begin
      if i=nom then
          a[i]:=0;
      writeln(a[i]);
    end;
end.
0
mr-Crocodile
23.09.2019, 17:52
  #9

Не по теме:

Artorias05, и не стыдно тебе чушь выкладывать?

0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
26.09.2019, 09:29 10
mr-Crocodile, не понял претензии, поясни если есть что сказать.

Добавлено через 2 минуты
mr-Crocodile, я показал как можно найти минимум в одномерном массиве, на примере одного своего алгоритма, который использовал для решения другой задачи.
0
3050 / 1668 / 657
Регистрация: 19.03.2019
Сообщений: 5,365
26.09.2019, 09:52 11
Цитата Сообщение от Artorias05 Посмотреть сообщение
не понял претензии, поясни если есть что сказать.
тебе пояснить?
поясняю. Тема 2008 года. Чтобы написать в ней что-то, нужно, чтобы это "что-то" было того достойно.
А что в данном случае?
твой алгоритм намного хуже, чем те, которые уже есть в теме (сравни с пост #7). Этот код и короче и работает.
если ты не понимаешь, чем твой код хуже - то посмотри, чему ты начально берёшь значение min и чему его надо брать.
дальше. у тебя ДВЕ переменные, чтобы хранить минимальное значение и его номер. а более чем достаточно одной.
дальше. где ты в этой теме увидел, что минимальное значение нужно заменить нулём? Это из твоей другой задачи?
Так какого ты тут выкладываешь решение ДРУГОЙ задачи? у меня есть код сортировки массива. Может, его тоже тут выложим? А что - крайний элемент после сортировки и будет минимальный/максимальный?! (*сарказм*)
Ну и вишенка на торте.
это вот этот код
Цитата Сообщение от Artorias05 Посмотреть сообщение
Pascal
1
2
3
4
5
6
for i:=1 to n do
* * begin
* * * if i=nom then
* * * * * a[i]:=0;
* * * writeln(a[i]);
* * end;
Ты вообще понимаешь, что тут написано?!
ты перебираешь все элементы массива и каждый элемент проверяешь, не имеет ли он индекс, который тебе нужен.
А зачем это?!
У тебя есть индекс. вот по нему и запиши.
вместо цикла и сравнения нужна всего ОДНА строчка
Pascal
1
a[nom]:=0;
ВСЁ.
да, нужен цикл для вывода массива - так напиши цикл для вывода. Без всяких глупых If.

да, я понимаю, что ты только изучаешь Паскаль, что-то получилось сделать и тебе переполняет чувство поделится своим творчеством.
Но ничего, опыт и знания приходят в процессе. Изучай и улучшай свой уровень и тогда ты сам поймёшь, "какие претензии"
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
26.09.2019, 10:26 12
mr-Crocodile, вы правы по поводу не уместности данного кода в этой теме, возможно мне стоило поставить метку "не по теме", но относительно моих методов построения кода, использования переменных и т.д. у нас с вами разные понимания о достойном коде, я считаю, что мой код не менее достойный чем седьмой пост. К тому же мой код работает (и в части нахождения минимума тоже) и если люди, которым нужен минимум в одномерном массиве понимают паскаль, то они найдут в моем коде все, что им нужно, если же нет, то пусть копипастят код из седьмого поста и буду счастливы с ним. Что же касается вас, mr-Crocodile, я уважаю вашу точку зрения, но если вам до скрежета зубов не нравиться мой код, то просто поставьте отрицательную оценку и все.
0
3050 / 1668 / 657
Регистрация: 19.03.2019
Сообщений: 5,365
26.09.2019, 10:35 13
Цитата Сообщение от Artorias05 Посмотреть сообщение
но если вам до скрежета зубов не нравиться мой код, то просто поставьте отрицательную оценку и все.
да не буду я Вам отрицательную оценку ставить, не тот это случай.
И не настолько всё плохо.
я просто не понимаю, почему Вы упорствуете. Всякий может ошибаться. Но отстаивать заведомо ошибочный код - это глупо.
вот, конкретно, по вашему коду. присваивать min := 1000; - вот это неверно и потенциальный баг. хорошо, у вас случайные числа из диапазона. а если кто-то хочет числа вводить с клавиатуры? Всё? Нужно переписывать код? и как Вы тогда напишете?

Ладно. я сказал достаточно. умолкаю.


*не нравится (что делает)
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
26.09.2019, 11:28 14
mr-Crocodile, я еще раз повторяю: я уважаю вашу позицию, но эти приемы работали везде, где я их применял, и я не сомневаюсь в их работоспособности во всех задачах такого плана, именно поэтому я их и использовал здесь. Если мне когда-нибудь попадется задание, где этот метод не будет работать, то я просто приравняю переменную минимума самому большому числу для данного типа и этот алгоритм будет работать всегда.
Что касается ошибочности кода, то с моей сточки зрения этот код выполняет все функции которые на него возложены, а утверждать, что этот код плохой только потому что здесь используются приемы которые вы не используйте - это глупо уже с вашей стороны.
С моей точки зрения, моя единственная ошибка - это то, что я разместил свой код в данной теме без пометки "не по теме"? Во всех других аспектах, я считаю свой код, безусловно не идеальным, но явно не подходящим под определение "говнокод" (я знаю, что вы этого не говорили, но по количеству замечаний связанных с целесообразностью использования различных конструкций для решения конкретной задачи, я понял что вы так думайте).
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7786 / 4612 / 2827
Регистрация: 22.11.2013
Сообщений: 13,108
Записей в блоге: 1
26.09.2019, 14:41 15
Цитата Сообщение от Artorias05 Посмотреть сообщение
Если мне когда-нибудь попадется задание, где этот метод не будет работать, то я просто приравняю переменную минимума самому большому числу для данного типа
Отчего ж сразу (а не потом) не написать:
Pascal
1
  min:=High(min);
Цитата Сообщение от Artorias05 Посмотреть сообщение
считаю свой код, безусловно не идеальным, но явно не подходящим под определение "говнокод"
Зря. Он самый и есть. Практически эталонный:
Pascal
1
2
3
4
5
6
7
8
9
10
    for i:=1 to n do 
    begin  { займемся фигней многократно }
      if (a[i]<min) or (a[i]=min) then { сравнение тоже стоит процессорного времени }
...
    for i:=1 to n do
    begin  { займемся фигней многократно }
      if i=nom then { сравнение тоже стоит процессорного времени }
        a[i]:=0;
      writeln(a[i]);
    end;
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
26.09.2019, 14:52 16
bormant, позвольте спросить как же вы будете искать минимум а также его последний экземпляр, в массиве не пройдя все его элементы? Может быть вы будете копипастить if пока не проверите каждый элемент в отдельности. Ну тогда ваша правда, в таком случае, мой код, как вы выразились, "фигня".
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7786 / 4612 / 2827
Регистрация: 22.11.2013
Сообщений: 13,108
Записей в блоге: 1
26.09.2019, 15:04 17
Цитата Сообщение от Artorias05 Посмотреть сообщение
искать минимум а также его последний экземпляр
А чем последний экземпляр отличается от любого другого? Пока я вижу только одну задачу:
Цитата Сообщение от GenociD Посмотреть сообщение
дан одномерный массив А[n]. Написать программу на языке паскаль, реализующую поиск минимального элемента в массиве А[n]. результат вывести на экран.
Pascal
1
2
3
4
5
6
7
8
var n, m, t: Integer;
begin
  Read(n); m:=High(m);
  for n:=1 to n do begin
    Read(t); if m>t then m:=t;
  end;
  WriteLn('min = ',m);
end.
Будут другие задачи, обсудим другие решения.

Добавлено через 2 минуты
Если же таки дан массив и поискать нужно только среди n первых элементов:
Pascal
1
2
3
4
5
function vMin(const v: array of Integer; n: Integer): Integer;
var r: Integer;
begin
  r:=v[0]; for n:=1 to n-1 do if r>v[n] then r:=v[n]; vMin:=r;
end;
либо
Pascal
1
2
3
4
function vMin(const v: array of Integer; n: Integer): Integer;
begin
  Result:=v[0]; for n:=1 to n-1 do if Result>v[n] then Result:=v[n];
end;
Добавлено через 3 минуты
А если строго по заданию с A[n], то и вовсе:
Pascal
1
2
3
4
5
function vMin(const v: array of Integer): Integer;
var e: Integer;
begin
  Result:=v[0]; for e in v do if Result>e then Result:=e;
end;
Pascal
1
2
3
4
5
function vMin(const v: array of Integer): Integer;
var i: Integer;
begin
  Result:=v[Low(v)]; for i:=Low(v)+1 to High(v) do if Result>v[i] then Result:=v[i];
end;
0
1 / 1 / 0
Регистрация: 27.08.2019
Сообщений: 16
26.09.2019, 15:10 18
bormant, если вы не заметили? я уже два раза в разговоре с господином mr-Crocodile признал свою ошибку по поводу темы сообщения с кодом, очевидно же, что это разные задачи, я же настаиваю лишь на том, что люди, умеющие читать на паскале, смогут понять, как найти минимум в массиве и по моему коду.

PS В коде, который вы привели в пример, к слову, тоже есть и цикл и условие для поиска минимума. Что же вы свой то код фигней не называете?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7786 / 4612 / 2827
Регистрация: 22.11.2013
Сообщений: 13,108
Записей в блоге: 1
26.09.2019, 15:36 19
Цитата Сообщение от Artorias05 Посмотреть сообщение
Что же вы свой то код фигней не называете?
Он минимально необходимый и достаточный.

Добавлено через 4 минуты
Но оптимизировать есть куда: например, на x86-64 ходить по выровненному на 64 бита массиву читая из памяти в регистр по 64 битному значению за 1 раз, уже в регистре разбивая его на 2х32 или 4х16 :-)
0
1 / 1 / 0
Регистрация: 06.12.2017
Сообщений: 95
04.05.2021, 15:02 20
bormant,

Цитата Сообщение от bormant Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
var n, m, t: Integer;
begin
  Readln(n); m:=High(m);
  for n:=1 to n do begin
    Read(t); if m>t then m:=t;
  end;
  WriteLn('',m);
end.
(чуть изменил)

а как вывести в конце все элементы массива?
0
04.05.2021, 15:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2021, 15:02
Помогаю со студенческими работами здесь

Поиск минимального элемента массива
Написать программу которая выводит минимальный элемент введённого с клавиатуры массива целых чисел....

Нахождение минимального элемента в массиве случайных чисел
Программа нахождения минимального элемента массива случайных чисел.

Поиск минимального элемента и его замена.
Дан массив целых чисел, среди них есть равные. Найти первый минимальный элемент и заменить его...

Поиск максимального и минимального элемента массива
поиск максимального и минимального элемента с помощью массива!

Поиск минимального и максимального элемента файла
Добрый день!! помогите пожалуйста с заданием:cry: Для файла s, состоящего из целых чисел,...

Найти отношение минимального элемента к сумме элементов расположенных до найденного минимального элемента
Помогите пожалуйста с задачей?!.... Задан одномерный массив,состоящий из 26 чисел. 1.Найти номер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru