Как найти наименьший элемент массива паскаль

Опубликовал admin

марта 18, 2010

Требуется написать программу, которая находит наименьший элемент массива. В качестве языка программирования выбран Паскаль (Pascal). Привожу исходный код программы с комментариями.

program MinElement;
const
  {количество элементов массива}
  N=10;
var
  i,j: integer;
  arr: array [1..N] of integer;
begin
  {заполняем массив случайными числами}
  for j:=1 to N do begin
    arr[j]:= random(100);
    {выводим элемент}
    write(arr[j], ' ');
  end;
  {пусть наименьшим будет первый элемент}
  i := 1;
  {перебираем элементы массива}
  for j:=2 to N do
    {если элемент является наименьшим, то запоминаем его номер}
    if arr[i] > arr[j] then i := j;
  {выводим наименьший элемент массива}
  writeln('element ', arr[i]);
end.

Количество элементов в массиве задается константой N.

Если Вам понравилась статья Pascal. Наименьший элемент массива, то пожалуйста, прокомментируйте ее или подпишитесь на фид и получайте будущие публикации по RSS. Поделитесь ссылкой на статью с друзьями при помощи социальных кнопок ниже.

Не по теме:

Ну, это дело личное, ваш подход ошибкой НЕ является.
Я просто обратил ваше (и тех, кто наткнётся на данную тему) на сей факт. А выбирать уже каждый сможет сам.

кстати, насчёт оптимизации.
можно и так написать:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
const n = 15;
var x: array[1..n] of integer;
  i, nom: integer;
begin
  nom := 1;
  for i := 1 to n do begin
    x[i] := random(100);
    write(x[i], ' ');
    if x[i] < x[nom] then nom := i;
  end;
  writeln;
  writeln('Значение ', x[nom], ', номер ', nom);
end.

но мне лично вариант, когда ввод/вывод и поиск в разных циклах (посты #2 #3) больше нравится, такой код легче отлаживать/сопровождать/дорабатывать и т.п.

Каждый выбирает то, что ему ближе/понятнее/удобнее!

Добавлено через 3 минуты
а вот и Вы и я забыли очень важную деталь — генератор ПСЧ обязательно нужно иницилизировать в начале программы через Randomize;!!!

Pascal
1
2
3
4
5
6
const n = 15;
var x: array[1..n] of integer;
  i, nom: integer;
begin
   Randomize;
....

Раздел:
Задачи /
Простейшие /

Найти наименьший элемент массива

Основы программирования 2.0

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать.
Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь.
Подробнее…

Условие задачи 2.49

Задача 2.49
Дан одномерный массив А неупорядоченных целых чисел. Вывести на экран числа массива, а также найти и вывести на экран наименьшее значение для всех элементов массива. Также вывести номер (индекс) наименьшего элемента в массиве.

Первым делом обращаем внимание на то, что массив не упорядочен (не отсортирован). То есть значения элементов в массиве хранятся “как попало”.

Соответственно, такой массив надо создать. Способа два: вводить значения элементов вручную, либо создать массив программно. Разумеется, сделаем это программно — заполним массив случайными значениями.

Второе — в массиве целые числа. Но целые числа могут быть также и отрицательными. Поэтому при заполнении массива случайными числами это желательно предусмотреть.

Поиск наименьшего значения в массиве

Теперь о том, как будем искать. Есть два относительно простых способа:

  1. Отсортировать массив по возрастанию значений. Тогда первый элемент массива будет наименьшим. Однако этот способ сам по себе не слишком простой, к тому же в задаче сказано, что надо получить кроме значения ещё и номер элемента. А при сортировке номера изменятся, и это потеряет смысл (либо придётся запоминать старые номера).
  2. Перебирать все элементы массива и искать самый меньший.

Мы воспользуемся вторым способом.

Сначала во временной переменной MinA сохраним наибольшее возможное значение типа данных, которому принадлежат элементы массива. Затем будем перебирать все элементы массива и сравнивать его с этим значением. Если значение текущего элемента меньше или равно значению MinA, то в переменную MinA запишем значение текущего элемента. И так далее, пока не переберём все элементы массива.

Почему меньше или равно, а не меньше? Дело в том, что теоретически (хотя и почти невозможно в нашем случае), все элементы массива могут содержать наибольшее значение для выбранного типа данных. И тогда, если проверять на “меньше”, программа не выведет никакой итог (либо придётся усложнять программу).

Решение задачи 2.49 на Паскале

 
program mytask;

//****************************************************************
// КОНСТАНТЫ
//****************************************************************
const
  MAX_A = 16;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  i       : byte;                 //Индекс
  MinA    : byte;                 //Наименьшее значение в массиве
  MaxInt  : ShortInt;             //Наибольшее значение типа
  MinInt  : ShortInt;             //Переменная для поиска
  A       : array[1..MAX_A] of ShortInt;  //Массив

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  MaxInt := High(MaxInt);   //Получить наибольшее значение типа
  randomize;                //Запустить генератор случайных чисел

  //Создать массив и вывести на экран
  for i := 1 to MAX_A do
    begin
      A[i] := random(MaxInt) - (MaxInt div 3);
      WriteLn(A[i]);
    end;

  //Найти наименьший элемент в массиве
  MinInt := MaxInt;
  for i := 1 to MAX_A do
    if A[i] <= MinInt then
      begin
        MinInt := A[i];
        MinA := i;
      end;

  //Вывести решение на экран
  WriteLn('Problem solution:');
  WriteLn('  The smallest value in the array: ', MinInt);
  WriteLn('  Index of the element with the lowest value: ', MinA);

  WriteLn('The end. Press ENTER...');
  ReadLn;
end.

Решение задачи 2.49 на С++

#include <cstdlib>
#include <iostream>

const int MAX_A = 16;

using namespace std;

char i;           //Индекс
char MinA;        //Наименьшее значение в массиве
char MaxInt;      //Наибольшее значение типа
char MinInt;      //Переменная для поиска
char A[MAX_A-1];  //Массив        

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  MaxInt = CHAR_MAX;   //Получить наибольшее значение типа
  srand(time(0));      //Запустить генератор случайных чисел              

  //Создать массив и вывести на экран
  for(i = 0; i < MAX_A; i++)
  {
    A[i] = (rand() % MaxInt) - (MaxInt / 3);
    cout << int(A[i]) << endl;
  }

  //Найти наименьший элемент в массиве
  MinInt = MaxInt;
  for(i = 0; i < MAX_A; i++)
    if(A[i] <= MinInt)
    {
      MinInt = A[i];
      MinA = i;
    }

  //Вывести решение на экран
  cout << "Problem solution:" << endl;
  cout << "  The smallest value in the array: " << int(MinInt) << endl;
  cout << "  Index of the element with the lowest value: " 
       << int(MinA) << endl;  
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

ПРИМЕЧАНИЕ
Не забывайте, что в С++ индексация массива начинается с нуля.

Найти номер наименьшего элемента в массиве

Как стать программистом 2.0

Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки…
Подробнее…

Помощь в технических вопросах

Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации.
Подробнее…

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

Алгоритм
поиска минимального (максимального)
элемента массива довольно очевиден:
делается предположение, что первый
элемент массива является минимальным
(максимальным), затем остальные элементы
массива сравниваются с этим элементом.
Если обнаруживается, что проверяемый
элемент меньше ( больше) принятого за
минимальный (максимальный) и продолжается
проверка оставшихся элементов. Ниже на
рис. 20 представлена блок-схема алгоритма
поиска минимального элемента в массиве
из 10 целых чисел.

Рис.20.
Блок-схема алгоритма поиска минимального
элемента.

Программа:

Program Example ;

Var

A
: Array[1..10] of integer ; { массив
целых
чисел
] ;

Min
: Integer ; { номер минимального элемента
массива }

i
: Integer ; { номер элемента сравниваемого
с минимальным}

Begin

WriteLn(‘ Введите 10
целых чисел в одной строке через пробел
‘) ;

for
i :=1 to 10 do ReadLn(A[i]) ; { Ввод
массива
целых
}

Min := A[1] ;

for i := 2 to 10 do

if A[i] < Min then Min :=
A[i] ;

WriteLn(‘ Минимальный
элемент массива : ‘, Min:3) ;

End.

Операции с матрицами

Матрицей
A размерности n 
m называется двумерный массив из n строк
и m столбцов :

где


элементы матрицы A.

Наиболее типичные
действия производимые над матрицами:

  1. сложение матриц;

  2. транспонирование
    матрицы;

  3. умножение матриц.

Сложение матриц

Рассмотрим
на примере сложения двух матриц A и B
размерности 3  4.

Блок-схема алгоритма
сложения матриц представлена на рис.
21.

Рис.21.
Блок-схема алгоритма сложения матриц.

Программа:

program
Summa_matrix;

Const

m=4;

n=3;

Type

matrix
= array[1..n,1..m] of Integer;

Var

A,B,C
: matrix;

i,j
: Integer;

BEGIN

Writeln(‘Ввод
матрицы
A’);

for
i:= 1 to n do

begin

writeln(‘Cтрока’,i:2);

for j := 1 to m do

begin

write(‘Столбец’,j:2,’->’);

readln(A[i,j])

end;

end;

Writeln(‘Ввод
матрицы
B’);

for
i:= 1 to n do

begin

writeln(‘Cтрока’,i:2);

for j := 1 to m do

begin

write(‘Столбец’,j:2,’->’);

readln(B[i,j])

end;

end;

writeln(‘Матрица С
— сумма матриц A и B’) ;

for
i:= 1 to n do begin

for j := 1 to m
do begin

C[i,j]
:= A[i,j] + B[i,j] ;

write(C[i,j]:3)

end ;

writeln ;

end

End.

Транспонирование матрицы

Пусть
дана матрица

размерности n 
m. Матрица

размерности m 
n называется транспонированной к матрице
A, если ее элементы определены по формуле


.

Рассмотрим
пример транспонирования матрицы
размерности 2 
3.

Блок-схема алгоритма
транспонирования матрицы представлена
на рис. 22.

Рис.22.
Блок-схема алгоритма транспонирования
матрицы.

Программа:

program Transp_matrix;

Const

m=3;

n=2;

Var

A : array[1..n,1..m] of
integer;

B : array[1..m,1..n] of
integer;

i,j : Integer;

BEGIN

Writeln(‘Ввод
матрицы
A’);

for i:= 1 to n do

begin

writeln(‘Cтрока’,i:2);

for j := 1 to m do

begin

write(‘Столбец’,j:2,’->’);

readln(A[i,j])

end;

end;

writeln(‘Матрица B
— Транспонированная к матрице A’) ;

for
i:= 1 to m do begin

for
j := 1 to n do begin

B[i,j]
:= A[j,i] ;

write(B[i,j]:3)

end
;

writeln
;

end

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

В случае с неотсортированным массивом, задача поиска минимального значения элемента сводиться к полному обходу всех элементов и выбора из них — минимума.

Код программы для поиска минимального, по значению, элемента неупорядоченного массива

{$CODEPAGE UTF8}
program Minimal;
const
  arrayLength = 10;
var
  inputArray : array [1..arrayLength] of integer;
  minimum, i: integer;
begin
  randomize;
  writeln ('Исходный массив: ');
  {заполнение случайными числами}
  for i := 1 to arrayLength do
  begin
    inputArray[i] := random(100);
    write (inputArray[i]:4);
  end;
  writeln;

  {поиск минимального значения}
  {считаем что первый элемент и есть минимальный}
  minimum := inputArray[1];
  for i := 2 to arrayLength do
    if minimum > inputArray[i] then         {если минимум больше текущего}
      minimum := inputArray[i];             {присваиваем ему текущее значение}

  write('Минимальный элемент массива ', minimum);
  readln;
end.

Найти минимальное значение, можно также, с использованием рекурсивного алгоритма.

Рекурсивный алгоритм поиска минимального элемента в одномерном массиве

{$CODEPAGE UTF8}
program MinimalElement;
const
  arrayLen = 10;
var
  inputArr : array [1..arrayLen] of integer;
  min, i: integer;

function MinElement(minimal, index: integer):integer;
begin
  if index > arrayLen then
    MinElement := minimal
  else
    begin
      if inputArr[index] < minimal then
        minimal := inputArr[index];
      MinElement := MinElement(minimal, index + 1); {рекурсивный вызов}
    end;
end;

begin
  randomize;
  writeln ('Исходные данные: ');
  for i := 1 to arrayLen do
  begin
    inputArr[i] := random(100);
    write (inputArr[i]:4);
  end;
  writeln;

  {рекуррентный поиск минимального значения}
  min := inputArr[1];
  min := MinElement(min, 2);

  write('Минимальный элемент ', min);
  readln;
end.

Смотрите также:

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как списать деньги с карты которую нашел
  • Как найти скрытые настройки на телефоне
  • Как составить досье на контрагента
  • Как найти ижс на кадастровой карте
  • Как найти реквизиты по фио

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии