-20 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 49

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

12.01.2019, 04:09. Показов 3214. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru