Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
-20 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 49

Найти минимальное значение элемента массива

12.01.2019, 04:09. Показов 3182. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти минимальное значение элемента массива. Если одинаковых минимальных значений в массиве
несколько, присвоить каждому из них значение среднего арифметического изначального массива.
Накидайте кода пожалуйста, кому не трудно конечно(12.4)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2019, 04:09
Ответы с готовыми решениями:

Найти минимальное значение положительных элементов массива, расположенных до первого элемента, равного нулю
Найти минимальное значение положительных элементов, расположенных до первого элемента, равного нулю. c++

Максимальное и минимальное значение элемента массива
Нахождение максимального значения массива работает не корректно. Помогите найти ошибку в коде. #include<iostream> using namespace...

Отнять от каждого элемента массива минимальное значение
Я учусь в колледже, хоть мне и 49. Если кто поможет, буду благодарен. Отнять от каждого элемента массива min значение. Отнимал по всякому,...

34
73 / 29 / 1
Регистрация: 31.07.2013
Сообщений: 433
14.01.2019, 17:52
Студворк — интернет-сервис помощи студентам
jugu, Yetty, так кто же прав?
Я понимаю строку, которую написал товарищ jugu, но не понимаю, почему именно в таком случае можно сравнивать вещественные числа.
насчет задачи да, не совсем ясно. Условий мало. Ни типов, ничего. ну, я пытался делать, как понял.
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 18:09
Цитата Сообщение от Yetty Посмотреть сообщение
jugu, не пишите то, в чём не разбираетесь. всё зависит от того, как они получены. в данном случае так сравнивать можно. чтобы в этом убедиться, добавьте #include <iomanip>, а строку 19 моего варианта замените такой:
Читайте внимательнее стандарт насчет вещественных литералов..

Добавлено через 2 минуты
Цитата Сообщение от proirp Посмотреть сообщение
Я понимаю строку, которую написал товарищ jugu, но не понимаю, почему именно в таком случае можно сравнивать вещественные числа.
Вещественные числа нельзя сравнивать операциями == и != согласно стандарту. Ибо, например, 0.5 это может быть 0.500000012342 или 0.49999999998765.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
14.01.2019, 18:11
Цитата Сообщение от jugu Посмотреть сообщение
Ибо, например, 0.5 это может быть 0.500000012342 или 0.49999999998765.
Товарищ Yetty имел ввиду что у него массив хоть и вещественных, но рандом генерирует целые числа и дробная часть всегда будет .0
Но да, в целом сравнивать вещественные числа так нельзя.
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 18:20
Цитата Сообщение от Azazel-San Посмотреть сообщение
Товарищ Yetty имел ввиду что у него массив хоть и вещественных, но рандом генерирует целые числа и дробная часть всегда будет .0
Yetty решил задачу с привязкой к способу получения исходных данных. Это неправильный подход.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2019, 18:20
jugu, речь идёт не о сравнении вещественных чисел (поверьте я немного в курсе как они сравниваются),
а о том, что Вы сказали, что в моём коде что-то не так сравнивается. ещё раз: в коде все числа такого вида:

6.00000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000
6.00000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000
5.00000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000
4.00000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000
9.00000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000

и сравнивать их так: a[i]==min можно.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
14.01.2019, 18:23
Цитата Сообщение от jugu Посмотреть сообщение
Это неправильный подход.
Если говорить так, то да. Но я вот ляпнул что они "всегда" будут .0 но я бы подумал еще раз, а действительно ли на всех платформах при касте будет такое соотношение и нигде не выскочит какой-то .0000000087?
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 18:31
В общем, если делать промоушн целых в double, то вот такой вариант вполне рабочий:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    double a[]{ 5, 2, 8, -6, 4, 0, 5, -4, 5, 7, -1, 4, 5, -6, 1, 4, 3, 5, -6, -2, 3, 4 };
    auto min = *std::min_element(std::begin(a), std::end(a));
    if (std::count(std::begin(a), std::end(a), min) > 1) {
        double aver = 0.0;
        std::for_each(std::begin(a), std::end(a), [&aver](double ai) { aver += ai; });
        aver /= (std::end(a) - std::begin(a));
        std::replace_if(std::begin(a), std::end(a), [min](int ai) -> bool { return ai == min; }, aver);
    }
    for (auto item : a) std::cout << item << " ";
    std::cout << std::endl;
    return 0;
}
Если же в массиве изначально будут числа с ненулевой дробной частью, то сравнение ai == min делать нельзя. В этом случае нужно вводить погрешность, либо округлять числа и уже потом сравнивать.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2019, 18:32
Цитата Сообщение от jugu Посмотреть сообщение
Yetty решил задачу с привязкой к способу получения исходных данных. Это неправильный подход.
нет никакой привязки. скажу Вам даже больше: необязательно чтобы числа имели хвост из одних нулей. минимальные как при вводе с клавиатуры, так и при случайном заполнении будут ОДИНАКОВЫМИ.
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 18:35
Цитата Сообщение от Yetty Посмотреть сообщение
и сравнивать их так: a[i]==min можно.
Да, когда дробная часть ЗАВЕДОМО нулевая, то можно. Но это плохой подход, т.к. программа (или функция) чаще всего не знает нулевая дробная часть или нет.

Добавлено через 1 минуту
Цитата Сообщение от Yetty Посмотреть сообщение
минимальные что при вводе с клавиатуры, что при случайном заполнении будут ОДИНАКОВЫМИ
Это у нас называется "нет привязки" А если массив данных формируется одной функцией, а обрабатывает его потом другая? )))
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2019, 18:45
jugu, сначала было
Цитата Сообщение от jugu Посмотреть сообщение
Сравнивать таким образом вещественные числа нельзя
теперь уже:
Цитата Сообщение от jugu Посмотреть сообщение
можно
мнение меняете по ходу дела может когда-нибудь и поймёте, что можно так сравнивать и вещественные из одного массива.
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 18:50
Цитата Сообщение от Yetty Посмотреть сообщение
мнение меняете по ходу дела может когда-нибудь и поймёте, что можно так сравнивать и вещественные из одного массива.
Не передергивайте слова. В ОБЩЕМ СЛУЧАЕ сравнивать вещественные числа операциями == и != нельзя, потому что нет однозначности в дробной части. По этой же причине стандарт запрещает использовать вещественные параметры у шаблонов. То, что вы в каком-то частном случае это делаете, опираясь на округления при вводе, на свойства расширения целых в вещественные, это не дает хорошего общего решения, и такой код не будет качественным.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2019, 19:15
Цитата Сообщение от jugu Посмотреть сообщение
Не передергивайте слова.
я ничего не передёргиваю. Вы сказали что в моём коде что-то неправильно, когда убедились, что сказали что-то не то, съехали на "некачественный" ввод. такой ввод для Вас будет качественным ?:

0.05000000000000000277555756156289135105 9079170227050781250000000000000000000000 000000000000 0.05999999999999999777955395074968691915 2736663818359375000000000000000000000000 000000000000 0.07000000000000000666133814775093924254 1790008544921875000000000000000000000000 000000000000 0.02999999999999999888977697537484345957 6368331909179687500000000000000000000000 000000000000 0.03899999999999999994448884876874217297 8818416595458984375000000000000000000000 000000000000 0.02999999999999999888977697537484345957 6368331909179687500000000000000000000000 000000000000

минимальное ОДИНАКОВОЕ:
0.02999999999999999888977697537484345957 6368331909179687500000000000000000000000 000000000000
Вы считаете, что с этим минимальным нельзя сравнивать элементы массива ?
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
14.01.2019, 21:10
Цитата Сообщение от Yetty Посмотреть сообщение
Вы сказали что в моём коде что-то неправильно, когда убедились, что сказали что-то не то, съехали на "некачественный" ввод.
Вы либо правда не понимаете, либо ловко прикидываетесь... Еще раз повторю свою нехитрую мысль. Ваш код В ОБЩЕМ СЛУЧАЕ плох, ибо не соответствует стандартным требованиям. Если, например, массив не вводить, а брать из какой-нибудь функции, ваш код будет работать вообще "через раз". Я бы не рекомендовал привыкать к таким решениям, сильно зависящим от способа получения исходных данных, и не делать подобных рекомендаций новичкам, чтоб потом их долго и упорно не приходилось переучивать.
PS: Это примерно из той же "оперы", как использование выражения array[i++], которое, вроде как, работает, но согласно стандарту является зависящим от реализации ))

Добавлено через 2 минуты
Цитата Сообщение от Yetty Посмотреть сообщение
минимальное ОДИНАКОВОЕ:
0.02999999999999999888977697537484345957 6368331909179687500000000000000000000000 000000000000
Вы считаете, что с этим минимальным нельзя сравнивать элементы массива ?
Можно. Баг в том, что второй раз в реальном массиве оно может и не повториться. И подсчет числа минимумов будет идти неправильно. Надеюсь, что это наконец-то станет понятно ))
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2019, 22:04
Цитата Сообщение от jugu Посмотреть сообщение
Баг в том, что второй раз в реальном массиве оно может и не повториться. И подсчет числа минимумов будет идти неправильно. Надеюсь, что это наконец-то станет понятно ))
я всё же жду, когда Вам станет понятно, что результат работы кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    double a=0.7, b=0.7;
    
    if (a==b) cout <<"YES\n";    
    
system("pause");
return 0;
}
всегда YES. аналогично для любого количества элементов массива.

Добавлено через 29 минут
Цитата Сообщение от jugu Посмотреть сообщение
И подсчет числа минимумов будет идти неправильно.
как насчёт привести пример неправильного подсчёта
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
15.01.2019, 14:21
Цитата Сообщение от jugu Посмотреть сообщение
Это примерно из той же "оперы", как использование выражения array[i++], которое, вроде как, работает, но согласно стандарту является зависящим от реализации
Ссылку на стандарт или цитату, пожалуйста. Такое выражение много где применяется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2019, 14:21

Скопировать элементы массива начиная с элемента имеющего минимальное значение
Возможно есть у кого похожая задача ? Или может кто решить? Даны одномерный масив В, который состоит из 15 еле-ментов. Сформулировать...

Найти минимальное значение массива
Вот есть код: #include &quot;stdafx.h&quot; #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; ...

Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
Задан целочисленный одномерный массив a из n элементов. Найти минимальное значение положительных элементов, расположенных правее первого...

C++ MPI. Найти минимальное значение массива
Доброго времени суток! Помогите написать программу на MPI. Данный двухмерный массива размерности m x m. Найти минимальное значение...

Найти минимальное значение элементов массива
Найти минимальное значение элементов массива. Вывести на дисплей полученное значение. После этого изменить исходный мас-сив, выполнив...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru