Согласие на обработку персональных данных.

11.11.2018
Новые видео и статья Как изменить цвет фона в HTML.

07.11.2018
Новый выпуск журнала Автоматизация и программирование.

27.10.2018
Новые видео и статья Процедура ChDir.

24.10.2018
Новые видео и статья Как уменьшить размер программы в FreePascal.

19.10.2018
Новая задача Найти наименьший элемент массива.



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

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

Условие задачи 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;
}

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

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


Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика