Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
#1

Минимальный элемент массива - C++

24.11.2011, 22:36. Просмотров 1483. Ответов 32
Метки нет (Все метки)

Доброго времени суток!
Как найти номер элемента массива, содержащий самое маленькое значение...
тобишь у меня есть массив с определённым количеством элементов..и в нём есть цифры..
мне нужно узнать в каком элементе массива содержится самая маленькая цифра..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2011, 22:36     Минимальный элемент массива
Посмотрите здесь:

Минимальный элемент одномерного массива A заменить на третий отрицательный элемент - C++
Минимальный элемент одномерного массива A заменить на третий отрицательный элемент. Третий отрицательный искать от минимального элемента.

В одномерном массиве, состоящем из n элементов массива, вычислить минимальный элемент массива - C++
помогите

Массивы. Вычислить минимальный элемент массива, сумму элементов массива, преобразовать массив - C++
При написании программ использовать динамические массивы. Размерность массивов задаётся именованной константой. Задача 2. В...

Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива - C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 3)Дан двумерный массив. Определить: a) номер столбца, в котором...

Найти минимальный элемент массива (через указатели, запрещено обращаться к элементам массива по индексам) - C++
Написать программу, создающую массив из 10 случайных целых чисел из отрезка . Вывести на экран весь массив и на ...

Поменять местами минимальный и максимальный элемент массива V[25] и подсчитать количество парных элементов массива - C++
Поменять местами минимальный и максимальный элемент массива V и подсчитать количество парных элементов массива

Минимальный элемент массива - C++
Написать функцию нахождения минимального значения элемента массива. #include<iostream.h> int max(int * arr, int size) { int max =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
24.11.2011, 22:38     Минимальный элемент массива #2
bupal, есть у тебя три палочки разной длины. Первая палочка имеет номер 1, вторая палочка имеет номер два, третия палочка имеет номер 2.

Как узнать номер самой короткой палочки?
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,902
24.11.2011, 22:38     Минимальный элемент массива #3
C++
1
2
3
4
5
6
7
8
9
#include <algorithm>
int idx_min = std::min_element (arr, arr + size) - arr;
// or
int min = arr[0], idx_min = 0;
for (int i = 0; i < size; ++i)
    if (min < arr[i]) {
        min = arr[i];
        idx_min = i;
    }
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.11.2011, 22:38     Минимальный элемент массива #4
bupal,
C++
1
std::min_element(vec.begin(), vec.end()) - vec.begin();
Thinker
Эксперт C++
4223 / 2197 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.11.2011, 22:41     Минимальный элемент массива #5
bupal, как то вы непонятно с числами и цифрами изъясняетесь. Так можно понять еще вот как: найти индекс такого элемента массива, который содержит минимальную цифру. А каждый элемент массива - число, состоящее из цифр.
А можно понять и просто как индекс минимального элемента. Почувствуйте разницу.
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
24.11.2011, 22:45  [ТС]     Минимальный элемент массива #6
Цитата Сообщение от ForEveR Посмотреть сообщение
bupal,
C++
1
std::min_element(vec.begin(), vec.end()) - vec.begin();
vec имеется в виду название массива?...
тоесть если у меня есть массив int a[];
то запись будет выглядеть как:
C++
1
min_element(a.begin(), a.end()) - a.begin();
так?...
Сыроежка
Заблокирован
24.11.2011, 22:51     Минимальный элемент массива #7
bupal,

Я думаю, вам еще рано иметь дело со стандартными алгоритмами.
Поэтому я вам покажу упрощенную версию поиска минимального элемента в целочисленном массиве

C++
1
2
3
4
5
6
7
8
9
10
11
 unsigned int min_element( int a[], unsigned int n )
{
   unsigned int min = 0;
 
   for ( unsigned int i = 1; i < n; i++ )
   {
      if ( a[i] < a[min] ) min = i;
   }
 
   return ( min );
}
Если есть массив, например, int a[N], где N - неокторая константа, то воспользоваться функцией можно следующим образом

C++
1
2
3
4
unsigned int min = min_element( a, N );
 
if ( min != N ) std::cout << "minimum = " << a[min] << std::endl;
else std::cout << "minimum has not been found\n";
Thinker
Эксперт C++
4223 / 2197 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.11.2011, 22:53     Минимальный элемент массива #8
Цитата Сообщение от bupal Посмотреть сообщение
мне нужно узнать в каком элементе массива содержится самая маленькая цифра..

Не по теме:

ладно, раз никого не смущает такая формулировка, то ладно...

bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
24.11.2011, 22:56  [ТС]     Минимальный элемент массива #9
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

ладно, раз никого не смущает такая формулировка, то ладно...

я лично не очень понимаю, что не так в этой формулировке?...
Thinker
Эксперт C++
4223 / 2197 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.11.2011, 22:57     Минимальный элемент массива #10
Цитата Сообщение от bupal Посмотреть сообщение
я лично не очень понимаю, что не так в этой формулировке?...

Не по теме:

пост #5

Bers
Заблокирован
24.11.2011, 22:58     Минимальный элемент массива #11
bupal,


11 22 33 40 массив чисел

Самая маленькая цыфра содержится в элементе под номером 3
Самое маленькое число содержится в элементе под номером 0.

Так доходит?

Разницу между "цыферкой" и "числом" осознаете?
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
25.11.2011, 01:32  [ТС]     Минимальный элемент массива #12
Цитата Сообщение от Сыроежка Посмотреть сообщение
bupal,

Я думаю, вам еще рано иметь дело со стандартными алгоритмами.
Поэтому я вам покажу упрощенную версию поиска минимального элемента в целочисленном массиве

C++
1
2
3
4
5
6
7
8
9
10
11
 unsigned int min_element( int a[], unsigned int n )
{
   unsigned int min = 0;
 
   for ( unsigned int i = 1; i < n; i++ )
   {
      if ( a[i] < a[min] ) min = i;
   }
 
   return ( min );
}
Если есть массив, например, int a[N], где N - неокторая константа, то воспользоваться функцией можно следующим образом

C++
1
2
3
4
unsigned int min = min_element( a, N );
 
if ( min != N ) std::cout << "minimum = " << a[min] << std::endl;
else std::cout << "minimum has not been found\n";
Скажите, а есть способ переделать этот алгоритм так, чтобы он мог давать следующее значение, если минимум только что был использован..
к примеру я сохраняю номер минимума, который только что получил...
и потом проверяю, если минимум, который даёт функция равен сохранённому минимуму, то вернуть миним, который идёт после этого...
Сыроежка
Заблокирован
25.11.2011, 01:38     Минимальный элемент массива #13
bupal,
Извините. но я не увидел, что мой ответ для вас интересен.
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
25.11.2011, 01:40  [ТС]     Минимальный элемент массива #14
Цитата Сообщение от Сыроежка Посмотреть сообщение
bupal,
Извините. но я не увидел, что мой ответ для вас интересен.
Извеняюсь..исправился..))
большое спасибо..
QVO
638 / 449 / 32
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 2
25.11.2011, 01:43     Минимальный элемент массива #15
bupal,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <limits.h>
 
// С начало переменная мин содержит максимум.
int min = INT_MAX;
// Задали размер массива
int size = 10;
// Создали динамически массив
int array = new int[size ];
 
// Запускаем цикл
for(int i = 0; i <  size; i++)
{
// Если данные в ячейки меньше минимума, то присваеваем
// минимуму значение ячейки
if(array[i] < min) min = array[i] ;
}
еще как вариант:
C++
1
2
3
4
5
// Запускаем цикл
for(int i = 0; i <  size; i++)
{
min = std:min(array[i], min);
}
Сыроежка
Заблокирован
25.11.2011, 01:58     Минимальный элемент массива #16
Цитата Сообщение от bupal Посмотреть сообщение
Извеняюсь..исправился..))
большое спасибо..
Делается все очень просто. Допустим, вы нашли первый индекс минимума - min. Если он не равен N, значит в массиве еще остались элементы, которые не были просмотрены. Значит надо для следующего вызова функции передать адрес массива, начиная со следующего элемента после найденного. И естественно второй аргумент, задающий длину массива, следует уменьшить на этот индекс. Итак, пусть при первом вызове мы имеем

C++
1
unsigned int min = min_element( a, N );
и при этом минимум был найден, то есть min != N. Тогда для следующего вызова функции вы пишите

C++
1
2
min++;
min = min_element( a + min, N - min );
То есть мы установили начало массива на адрес следующего элемента после найденного минимума и, соответственно, уменьшили на это же число размер последовательности, которая будет просматриваться в функции.

И так будете делать, пока функция вам не скажет, что больше нет минимумов, то есть когда она min получит из функции значение, равное N-min. Обратите внимание, не N, как было в первом случае, а именно N - min, так как мы сокращаем размер просматриваемой последовательности.
Эти значения вы можете хранить в отдельной переменной.
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
25.11.2011, 02:17  [ТС]     Минимальный элемент массива #17
Цитата Сообщение от Сыроежка Посмотреть сообщение
Делается все очень просто. Допустим, вы нашли первый индекс минимума - min. Если он не равен N, значит в массиве еще остались элементы, которые не были просмотрены. Значит надо для следующего вызова функции передать адрес массива, начиная со следующего элемента после найденного. И естественно второй аргумент, задающий длину массива, следует уменьшить на этот индекс. Итак, пусть при первом вызове мы имеем

C++
1
unsigned int min = min_element( a, N );
и при этом минимум был найден, то есть min != N. Тогда для следующего вызова функции вы пишите

C++
1
2
min++;
min = min_element( a + min, N - min );
То есть мы установили начало массива на адрес следующего элемента после найденного минимума и, соответственно, уменьшили на это же число размер последовательности, которая будет просматриваться в функции.

И так будете делать, пока функция вам не скажет, что больше нет минимумов, то есть когда она min получит из функции значение, равное N-min. Обратите внимание, не N, как было в первом случае, а именно N - min, так как мы сокращаем размер просматриваемой последовательности.
Эти значения вы можете хранить в отдельной переменной.
а для чего инкриментировать min ??? (min++)
Сыроежка
Заблокирован
25.11.2011, 02:21     Минимальный элемент массива #18
Цитата Сообщение от bupal Посмотреть сообщение
а для чего инкриментировать min ??? (min++)
Потому что надо следующий поиск начинать с элемента, следующего за найденным минимумом. Иначе, если начинать поиск с этого же индекса, то функция всегда будет его возвращать, так как она находит первый минимум в последовательности.
bupal
25 / 25 / 2
Регистрация: 30.03.2010
Сообщений: 343
Записей в блоге: 1
25.11.2011, 02:24  [ТС]     Минимальный элемент массива #19
Цитата Сообщение от Сыроежка Посмотреть сообщение
Потому что надо следующий поиск начинать с элемента, следующего за найденным минимумом. Иначе, если начинать поиск с этого же индекса, то функция всегда будет его возвращать, так как она находит первый минимум в последовательности.
не знаю почему, но у меня возвращает вместо второго минимума - максимум...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 02:26     Минимальный элемент массива
Еще ссылки по теме:

Минимальный элемент массива - C++
Напишите кто может , как после ввода элементов массива найти минимальный элемент этого массива , без использования функции min.

Минимальный элемент массива - C++
Найти минимальный элемент массива А среди элементов,стоящих ниже побочной диагонали,и поменять его местами с максимальным элементом всего...

Минимальный элемент массива - C++
Найти минимальный элемент массива #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; int main() { ...

Определить минимальный элемент массива - C++
В соответствии с вариантом задания написать, отладить и протестировать программы обработки числовых и символьных массивов. Заданные...

Найти минимальный элемент массива - C++
Привет всем,ребят может кто помочь,очень сильно нужна помощь:cry: есть одномерный массив,состоящий из N элементов,необходимо найти...


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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
25.11.2011, 02:26     Минимальный элемент массива #20
Цитата Сообщение от bupal Посмотреть сообщение
не знаю почему, но у меня возвращает вместо второго минимума - максимум...
Показывайте код, что вы там написали.
Yandex
Объявления
25.11.2011, 02:26     Минимальный элемент массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru