Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1

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

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

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Как найти номер элемента массива, содержащий самое маленькое значение...
тобишь у меня есть массив с определённым количеством элементов..и в нём есть цифры..
мне нужно узнать в каком элементе массива содержится самая маленькая цифра..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2011, 22:36
Ответы с готовыми решениями:

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

Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7]
Определить, что больше: максимальный элемент массива А или минимальный элемент массива В. Поставить максимальный элемент из них на место...

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

32
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
25.11.2011, 02:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Сыроежка Посмотреть сообщение
Показывайте код, что вы там написали.
C++
1
2
3
4
5
6
7
8
9
int n = min_elem(TT, sizeof(TT));
    if (n == flag)
    {
        n++;
        n = min_elem(TT + n, sizeof(TT) - n);
        return n;
    }
    else
        return n;
flag - это тот минимум, который был предыдущим..
0
Заблокирован
25.11.2011, 02:34
Цитата Сообщение от bupal Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int n = min_elem(TT, sizeof(TT));
    if (n == flag)
    {
        n++;
        n = min_elem(TT + n, sizeof(TT) - n);
        return n;
    }
    else
        return n;
flag - это тот минимум, который был предыдущим..
Во-первых, почему вы в качестве второго элемента указываете sizeof( TT )? Надо же, как я писал, начинать поиск со следующего элемента массива.

Выкладывайте весь код!
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
25.11.2011, 02:39  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Во-первых, почему вы в качестве второго элемента указываете sizeof( TT )? Надо же, как я писал, начинать поиск со следующего элемента массива.

Выкладывайте весь код!
sizeof..как я понял...возвращает количество элементов в массиве...
нам ведь это и нужно в качестве второго аргумента в функции?....
0
Заблокирован
25.11.2011, 02:47
Цитата Сообщение от bupal Посмотреть сообщение
sizeof..как я понял...возвращает количество элементов в массиве...
нам ведь это и нужно в качестве второго аргумента в функции?....
Нет, во-первых, я не знаю, как у вас объявлен тип TT, но если это имя массива, то sizeof TT вернет вам не количество элементов, а размер участка памяти занимаемым массивом. Например, если у вас есть массив из трех элементов, имеющих тип int, то тогда вам этот оператор вернет число 12 = 3 * sizeof( int ), который в свою очередь обычно равен 4 байтам.
Вам не надо заниматься самодеятельностью, а стараться делать то, что я пишу.
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
25.11.2011, 02:53  [ТС]
хм..а что нужно написать..чтобы получить количество элементов массива?...

или что нужно написать в качестве N..
просто я понял это как количество элементов массива..

массив объявлен: double TT[N];
0
Заблокирован
25.11.2011, 03:00
Цитата Сообщение от bupal Посмотреть сообщение
хм..а что нужно написать..чтобы получить количество элементов массива?...

или что нужно написать в качестве N..
просто я понял это как количество элементов массива..

массив объявлен: double TT[N];

N == sizeof( TT ) / sizeof( double );

Но надо сомтреть весь ваш код, иначе это надолго затянется.
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
25.11.2011, 03:15  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
N == sizeof( TT ) / sizeof( double );

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

Добавлено через 6 минут
сейчас кстати проверил...он почему то в итоге возвращает min+1..тобишь если min был 0, то он вернул 1
а это не то, что нужно..потому что в итоге выходит так, что из массив {10, 170, 12}
он озвращает в качестве min элемент под номером 0 (тобишь там где 10), а в качестве второго минимального элемент под номер 1 (тобишь там где 170)..
0
Заблокирован
25.11.2011, 03:59
Цитата Сообщение от bupal Посмотреть сообщение
просто весь код решает совершенно иную задачу..а вычисление минимума является лишь её отдельной..маленькой частью..

Добавлено через 6 минут
сейчас кстати проверил...он почему то в итоге возвращает min+1..тобишь если min был 0, то он вернул 1
а это не то, что нужно..потому что в итоге выходит так, что из массив {10, 170, 12}
он озвращает в качестве min элемент под номером 0 (тобишь там где 10), а в качестве второго минимального элемент под номер 1 (тобишь там где 170)..
Я тут глупость наговорил, на ночь глядя.

На самом деле вам один раз надо искать минимуму по всему массиву. А затем уже не пользоваться этой функцией, а написать функцию поиска заданного элемента. То есть так как минимум уже известен, то в оставшейся последовательности просто нужно найти такой же по значению элемент.

Примерная функция (напишу ее для double массива

C++
1
2
3
4
5
6
7
8
unsigned int find( double a[], unsigned int n, double value )
{
   unsigned int index = 0;
   
   while ( index < n && !( a[index] == value ) ) index++;
 
   return ( index );
}
Только при вызове нужно правильно задавать аргументы. Допустим, вы сначала вызываете min_element

C++
1
2
3
4
5
6
7
8
unsigned int min = min_element( a, N );
 
while ( min != N )
{
   std::cout << "minimum = " << a[min] << std::endl;
   unsigned int start = min + 1;
   min = find( a + start, N - start, a[min] ) + start;
}

Проверьте как раз этот код. Будет ли у вас печатать все минимумы массива?
1
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
25.11.2011, 14:46  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я тут глупость наговорил, на ночь глядя.

На самом деле вам один раз надо искать минимуму по всему массиву. А затем уже не пользоваться этой функцией, а написать функцию поиска заданного элемента. То есть так как минимум уже известен, то в оставшейся последовательности просто нужно найти такой же по значению элемент.

Примерная функция (напишу ее для double массива

C++
1
2
3
4
5
6
7
8
unsigned int find( double a[], unsigned int n, double value )
{
   unsigned int index = 0;
   
   while ( index < n && !( a[index] == value ) ) index++;
 
   return ( index );
}
Только при вызове нужно правильно задавать аргументы. Допустим, вы сначала вызываете min_element

C++
1
2
3
4
5
6
7
8
unsigned int min = min_element( a, N );
 
while ( min != N )
{
   std::cout << "minimum = " << a[min] << std::endl;
   unsigned int start = min + 1;
   min = find( a + start, N - start, a[min] ) + start;
}

Проверьте как раз этот код. Будет ли у вас печатать все минимумы массива?
Привет...что то не так происходит..
после нахождения первого минимума, функция find сразу выдаёт номер последнего элемента + 1...
тобишь если массив был из 8 элементов, то она выдаёт 9

Добавлено через 3 минуты
ой..кажется Вы меня не правильно поняли...
я имел в виду не то, чтобы был найден такой же по значению элемент
а чтобы был минимум, который больше первого минимума, но меньше всего остального..
тоесть в массиве {10, 30, 12} первый минимум это 10, а второй минимум это 12
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
25.11.2011, 15:49
C++
1
2
3
4
5
6
7
8
9
10
#include <vector>
#include <iostream>
#include <algorithm>
 
int main()
{
    std::vector<int> vec = {10,30,12};
    std::cout << 
    (std::min_element(std::min_element(vec.begin(), vec.end()) + 1, vec.end()) - vec.begin()) << std::endl;
}
1
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
26.11.2011, 00:10  [ТС]
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
#include <vector>
#include <iostream>
#include <algorithm>
 
int main()
{
    std::vector<int> vec = {10,30,12};
    std::cout << 
    (std::min_element(std::min_element(vec.begin(), vec.end()) + 1, vec.end()) - vec.begin()) << std::endl;
}
а можете сказать, что нужно изменить..чтоб она правильно работала...а то в случае с {10,30,12} она выдаёт 2, а в случае с {10,30,9} выдаёт 3..тобишь которой и не существует..
тобишь чтоб выдавалось правильно..в независимости от расположения
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.11.2011, 15:19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <iostream>
#include <algorithm>
 
int main()
{
    std::vector<int> vec = {10,30,9};
    int first_min = *std::min_element(vec.begin(), vec.end());
    int second_min_idx = std::min_element(vec.begin(), vec.end(), [first_min](const int first, const int second)
    {
        return first < second && first > first_min; 
    }) - vec.begin();
    std::cout << second_min_idx << std::endl; 
}
http://liveworkspace.org/code/... e71f7837e0

При компиле не поддерживающем C++0x нужно использовать функтор/функцию вместо лямбды.
0
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 22
28.11.2011, 17:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main ()
{
    int n,a[100000],k,min=999999,i;
    cin>>n;
    for(i=1;i<=n;i++)
    {
                     cin>>a[i];
                     if(a[i]<min) {min=a[i]; k=i;}
                     }
                     cout<<k;
    return 0;
    }
 Комментарий модератора 
Используйте теги форматирования кода!


0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2011, 17:28

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

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

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

Записать элементы массива X, удовлетворяющие условию в массив Y; найти минимальный элемент массива X
4. Записать элементы массива X, удовлетворяющие условию Х, подряд в массив Y =. Определить минимальный элемент массива X.

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


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru