Как найти минимальное число?

qwadra

Client
Регистрация
21.11.2017
Сообщения
259
Благодарностей
41
Баллы
28
Не сталкивался с подобной задачей. Как зенкой можно из подобных массивов выделять минимальное значение? В данном случае 6.74

["7.28","7.28","7.28","7.69","7.28","7.69","7.28","7.69","7.69","7.28","7.28","8.09","8.09","6.74","7.49","7.49","7.49","7.49","10.19","8.19","8.19","7.37","8.60","7.37","8.19","7.37","8.19","7.37","8.60","7.37","8.19","8.60","8.19","8.60","7.37","7.37","7.37","7.37","7.37","7.37","7.64","7.64","7.64","7.64","7.64","7.19","7.19","7.19","7.19","7.19","7.27","8.54","8.09","8.99","8.09","8.99","8.09","8.54","7.73","8.16","8.16","7.73","8.59","8.59","7.73","8.59","8.16","7.73","8.59","7.73","7.73","7.73","7.73","7.73","7.73","7.73","8.16","7.06","7.73"]
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
на c# в цикле перебрать все значения, каждое сравнить с найденным минимумом, обновлять минимум если текущее значение меньше. если нужен номер элемента, дополнительно запоминать и номер.
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
сортировка списка?
(попробуй. может сработает)

49819
 
Последнее редактирование:
  • Спасибо
Реакции: qwadra

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Распарсить строку (если это строка, если числа, то ещё проще) в массив int, а у массива есть свойства Max() и Min()
 

qwadra

Client
Регистрация
21.11.2017
Сообщения
259
Благодарностей
41
Баллы
28
сортировка списка?
(попробуй. может сработает)

Посмотреть вложение 49819
Спасибо за совет. Но в первом примере все ок получилось, а во втором сортировка не работает нормально. Пробовал и с точкой и с запятой

107,99
107,99
107,99
107,99
107,99
107,99
107,99
69,99
69,99
69,99
69,99

75,99
76,99
76,99
79,99
79,99
79,99
79,99
83,99
83,99
89,99
91,19
91,19
95,99
95,99
95,99
95,99
99,99
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Потому что вам подсказывают нормальные способы, а используете те, что попроще.
Сортирует у вас как строку, а нужно в цифры сконвертить.
 

qwadra

Client
Регистрация
21.11.2017
Сообщения
259
Благодарностей
41
Баллы
28

qwadra

Client
Регистрация
21.11.2017
Сообщения
259
Благодарностей
41
Баллы
28
Вообще я удивлен, что такую примитивную функцию до сих пор не довели до ума
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Вообще я удивлен, что такую примитивную функцию до сих пор не довели до ума
какую именно ? если про сортировку, то не все там примитивно как может показаться на первый взгляд. люди раньше десертации писали на эту тему. разрабатывали различные методы сортировки, у каждого метода есть плюсы и минусы. в вашем случае не сортировка нужна , а поиск наименьшего. делать надо в с# . если не знаете c#, попросите сделать снипет в соответсвующем разделе, кто нибудь да поможет.
 
  • Спасибо
Реакции: qwadra и Colter

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
C#:
List<string> list = new List<string>()
{
    "7.28","7.28","7.28","7.69","7.28","7.69","7.28","7.69","7.69",
    "7.28","7.28","8.09","8.09","6.74","7.49","7.49","7.49","7.49",
    "10.19","8.19","8.19","7.37","8.60","7.37","8.19","7.37","8.19",
    "7.37","8.60","7.37","8.19","8.60","8.19","8.60","7.37","7.37",
    "7.37","7.37","7.37","7.37","7.64","7.64","7.64","7.64","7.64",
    "7.19","7.19","7.19","7.19","7.19","7.27","8.54","8.09","8.99",
    "8.09","8.99","8.09","8.54","7.73","8.16","8.16","7.73","8.59",
    "8.59","7.73","8.59","8.16","7.73","8.59","7.73","7.73","7.73",
    "7.73","7.73","7.73","7.73","8.16","7.06","7.73"
};

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("EN");

return list.Select(x => double.Parse(x.Replace(",", "."), culture)).Min();
 
  • Спасибо
Реакции: qwadra

qwadra

Client
Регистрация
21.11.2017
Сообщения
259
Благодарностей
41
Баллы
28
C#:
List<string> list = new List<string>()
{
    "7.28","7.28","7.28","7.69","7.28","7.69","7.28","7.69","7.69",
    "7.28","7.28","8.09","8.09","6.74","7.49","7.49","7.49","7.49",
    "10.19","8.19","8.19","7.37","8.60","7.37","8.19","7.37","8.19",
    "7.37","8.60","7.37","8.19","8.60","8.19","8.60","7.37","7.37",
    "7.37","7.37","7.37","7.37","7.64","7.64","7.64","7.64","7.64",
    "7.19","7.19","7.19","7.19","7.19","7.27","8.54","8.09","8.99",
    "8.09","8.99","8.09","8.54","7.73","8.16","8.16","7.73","8.59",
    "8.59","7.73","8.59","8.16","7.73","8.59","7.73","7.73","7.73",
    "7.73","7.73","7.73","7.73","8.16","7.06","7.73"
};

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("EN");

return list.Select(x => double.Parse(x.Replace(",", "."), culture)).Min();
Спасибо, блин а как подставить переменную с массивом цифр? Научным тыком не вышло.
Господи, чувствую себя идиотом
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
C#:
List<string> list = new List<string>();
// Текст для обработки
string data = project.Variables["fff"].Value.Replace( "\"","");
string text = project.ExecuteMacro(data);      // переменная
var splitters = ",".ToCharArray();                                        // разделитель
var allowEmptyEntries = false;
var variableGroupPairs = new Tuple<string, string>[]
{
    new Tuple<string, string>("0", "res"),
};
list = text.Split(splitters, allowEmptyEntries ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries).ToList();
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("EN");
return list.Select(x => double.Parse(x.Replace(",", "."), culture)  ).Min();
вот тоже переработал , после поста ниже :-)
 
Последнее редактирование:

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Если данные в переменной "input" в таком формате:
"7.28","7.28","7.28","7.69","7.28","7.69","7.28","7.69","7.69",
"7.28","7.28","8.09","8.09","6.74","7.49","7.49","7.49","7.49",
"10.19","8.19","8.19","7.37","8.60","7.37","8.19","7.37","8.19",
"7.37","8.60","7.37","8.19","8.60","8.19","8.60","7.37","7.37",
"7.37","7.37","7.37","7.37","7.64","7.64","7.64","7.64","7.64",
"7.19","7.19","7.19","7.19","7.19","7.27","8.54","8.09","8.99",
"8.09","8.99","8.09","8.54","7.73","8.16","8.16","7.73","8.59",
"8.59","7.73","8.59","8.16","7.73","8.59","7.73","7.73","7.73",
"7.73","7.73","7.73","7.73","8.16","7.06","7.73"
C#:
string [] str = project.Variables["input"].Value.Trim('"').Replace(Environment.NewLine,"").Split(new string[] {"\",\""}, StringSplitOptions.None);
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("EN");

return str.Select(x => double.Parse(x.Replace(",", "."), culture)).Min();
 
Последнее редактирование:
  • Спасибо
Реакции: kolina, qwadra и Phoenix78

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Если данные в переменной "input" в таком формате:

C#:
string [] str = project.Variables["input"].Value.Trim('"').Replace("\n\r","").Split(new string[] {"\",\""}, StringSplitOptions.None);
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("EN");

return str.Select(x => double.Parse(x.Replace(",", "."), culture)).Min();
вот прям сразу чувствуется рука профи :-)
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)