Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
1

Найти минимальный элемент среди положительных

14.01.2018, 14:16. Показов 6672. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня код начинает искать минимальное значение только, если количество положительных не равно нулю, но он ищет среди всех элементов. Как сделать, чтобы искал только среди положительных?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 0; i < A.Length; i++)
            
                if (A[i] > 0)
                {
                    p++;
                }
            
                if (p == 0)
                {
                    Console.WriteLine("Положительных элементов нет");
                }
                for (int i = 0; i < A.Length; i++)
                
                if (p != 0)
                {
                    int minValue = A.Min<int>();
                    Console.WriteLine("Минимальный элемент среди положительных: {0}", minValue);
                }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2018, 14:16
Ответы с готовыми решениями:

Найти минимальный элемент среди положительных элементов
Задан одномерный массив А. Найти минимальный элемент среди положительных элементов.

Найти минимальный элемент среди положительных чисел
Составьте программу для решения следующей задачи обработки одномерных массивов произвольной длины....

Найти среди положительных элементов минимальный элемент и его индекс
В каждом из массивов X(Nx), Y(Ny) и Z(Nz) вещественных чисел найти среди положительных элементов...

Найти минимальный элемент среди положительных чисел в массивах (методом)
Дано два одномерных массива, состоящих из отриц. и положит. чисел. Найти минимальный элемент среди...

12
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
14.01.2018, 15:26 2
Samsun, положительное число не равное нулю, это все, что больше 0, верно?
Тогда есть смысл попробовать задать условие: if (p > 0) {}

Добавлено через 15 минут
Найти минимальный элемент среди положительных чисел
0
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
14.01.2018, 15:31  [ТС] 3
p - это просто количество положительных элементов
0
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
14.01.2018, 15:34 4
Ок, if (A[i] > 0) {}, логическую суть это не меняет.
Смотрите решение по ссылке выше.
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
14.01.2018, 15:36 5
Цитата Сообщение от Samsun Посмотреть сообщение
он ищет среди всех элементов
Цитата Сообщение от Samsun Посмотреть сообщение
C#
1
2
3
4
5
6
7
                for (int i = 0; i < A.Length; i++)
                
                if (p != 0)
                {
                    int minValue = A.Min<int>();
                    Console.WriteLine("Минимальный элемент среди положительных: {0}", minValue);
                }
Сможете объяснить, что делают эти строчки?
Почему вы считаете что они делают то, что вы думаете?

Цитата Сообщение от Samsun Посмотреть сообщение
Как сделать, чтобы искал только среди положительных?
У меня есть пачка картинок с числами. Вы не видите эти картинки.
Я прошу вас найти минимальное положительное число и начинаю показывать картинки по одной.
Как бы вы нашли минимальное число в таких условиях?
Сможете выразить это решение в коде?
1
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
14.01.2018, 15:56  [ТС] 6
kolorotur, Эта часть моего кода ищет минимальный элемент кода, но делать он это начинает только, если количество положительных элементов не равно 0. Если = 0, то он просто пишет, что положительных нет и тогда ничего не ищет
Но ищет он среди всех, а мне надо, чтобы только среди положительных
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
14.01.2018, 16:36 7
Цитата Сообщение от Samsun Посмотреть сообщение
Эта часть моего кода ищет минимальный элемент кода
Она его ищет количество раз, равное количеству элементов в массиве.
Это так задумано?

Цитата Сообщение от Samsun Посмотреть сообщение
Но ищет он среди всех, а мне надо, чтобы только среди положительных
Решение такое же, как в предложенной мной выше задаче (на которую вы решили не отвечать).
Допустим, у массива вообще нет метода Min для нахождения минимального числа.
Как бы вы его искали в таком случае?
0
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
14.01.2018, 16:39  [ТС] 8
kolorotur, вот то что он ищет столько же раз, сколько и и элементов это не задумано. Я потом исправлю
0
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
14.01.2018, 17:24 9
Samsun, если опустить момент
Цитата Сообщение от Samsun Посмотреть сообщение
ищет он среди всех, а мне надо, чтобы только среди положительных
то, чтобы приблизиться к правильному решению, я бы попробовал использовать конструкцию if ... else
C#
1
2
3
4
5
6
7
8
if (p == 0) // если количество положительных элементов = 0
{
    Console.WriteLine("Положительных элементов нет");
}
else // иначе
{
//код, который ищет минимальный элемент среди положительных
}
Но, int minValue = A.Min<int>(); не ищет минимальный элемент среди положительных, она ищет просто минимальный элемент среди всех элементов массива.
Также строку Console.WriteLine("Минимальный элемент среди положительных: {0}", minValue); необходимо опустить ниже for, иначе эта строка будет выведена столько раз, сколько элементов в вашем массиве.
Предположим, что у нас есть некая переменная minValue, которой присвоено максимальное значение. Тогда, чтобы найти решение задачи, нам нужно сравнивать значение этой переменной со всеми элементами значение которых > 0. И если значение какого-нибудь из этих элементов будет меньше значения minValue, мы присваиваем это значение переменной minValue и т.д.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
 
namespace Draft
{
    class Program
    {
        static void Main()
        {
            int[] A = { -5, 2, 0, -3, 6, 4 };
            int minValue = int.MaxValue;
            int p = 0;
 
            for (int i = 0; i < A.Length; i++)
                if (A[i] > 0)
                {
                    p++;
                }
 
            if (p == 0)
            {
                Console.WriteLine("Положительных элементов нет");
            }
            else
            {
                for (int i = 0; i < A.Length; i++)
                {
                    if (A[i] > 0 & A[i] < minValue)
                    {
                        minValue = A[i];
                    }
                }
                Console.WriteLine("Минимальный элемент среди положительных: {0}", minValue);
            }
 
            Console.ReadKey();
        }
    }
}
0
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
14.01.2018, 20:07  [ТС] 10
willow300, спасибо огромное!!
Всё понятно теперь

Добавлено через 8 минут
willow300, а вот если среднее значение надо найти среди положительных, то как?
Тоже поняла только, как среди всех

C#
1
2
3
4
5
6
7
            for (int i = 0; i < A.Length; i++)
            {
                    sum = sum + A[i];
                
            }
            double sr = (double) sum / A.Length;
            Console.WriteLine("Среднее значение = {0:##.##}", sr);
0
152 / 149 / 103
Регистрация: 30.10.2016
Сообщений: 314
14.01.2018, 20:29 11
Лучший ответ Сообщение было отмечено Samsun как решение

Решение

Samsun, double sr = (double) sum / A.Length; - здесь ошибка, вы делите на количество элементов массива A.Length, а необходимо, на количество положительных элементов p.
Т.е. задаем условие, если значение элемента > 0 if (A[i] > 0), то мы его его суммируем. Итоговую сумму делим на количество положительных элементов. Если усовершенствовать ваш пример, то выйдет что-то вроде этого:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double sum = 0.0;
...
            else
            {
                for (int i = 0; i < A.Length; i++)
                {
                    if (A[i] > 0 & A[i] < minValue)
                    {
                        minValue = A[i];
                    }
                    if (A[i] > 0)
                    {
                        sum = sum + A[i];
                    }
                }
                double sr = sum / p;
                Console.WriteLine("Среднее значение = {0:##.##}", sr);
                Console.WriteLine("Минимальный элемент среди положительных: {0}", minValue);
            }
1
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
14.01.2018, 20:44 12
Найти минимальный элемент среди положительных
C#
1
2
3
            var n = new[] {-1, 7, 9, -8, 4, 6, -5, 69};
            var result = n.ToArray().Where(x => x > 0).Min();
            throw new System.NullReferenceException("result: " + result);
Добавлено через 5 секунд
using System.Linq;

Добавлено через 30 секунд
Unhandled Exception:
System.NullReferenceException: result: 4

Добавлено через 2 минуты
Цитата Сообщение от willow300 Посмотреть сообщение
Среднее значение
average
0
2 / 12 / 0
Регистрация: 12.01.2018
Сообщений: 73
14.01.2018, 20:44  [ТС] 13
willow300, точно. Я и не обратила внимание
Спасибо за помощь))
0
14.01.2018, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2018, 20:44
Помогаю со студенческими работами здесь

В вещественных массивах найти среди положительных элементов минимальный элемент и его индекс
В каждом из массивов X(Nx), Y(Ny) и Z(Nz) вещественных чисел найти среди положительных элементов...

Максимальный среди отрицательных и минимальный среди положительных элемент в массиве System Array
Есть вопрос относительно одномерного массива System Array Есть код программы, которая ищет...

Определить максимальный среди положительных, минимальный среди отрицательных и поменять их местами.
Помогите решить пожалуйста 1.Задана матрица D(4,4). Определить максимальный среди положительных,...

Найти минимальный элемент среди элементов, расположенных на четных позициях массива
Дан массив А(15). Найти минимальный элемент среди элементов, расположенных на четных позициях...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru