С Новым годом! Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216

Найти максимальную цифру в заданном числе

16.05.2018, 14:19. Показов 3502. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите, пожалуйста, решить задачку, не очень могу понять F#

Добавлено через 22 минуты
F#
1
2
3
4
5
6
let maximum(max, a) = 
   if (a%10>max) then max=a%10;
   a=a/10;
 
       let a, max=maximum(0,190);
       System.Console.WriteLine(max);
если напишу так, подчеркивает System(недопустимый идентификатор в выражении, требуется "in" или другая лексема).
почему?и что не правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2018, 14:19
Ответы с готовыми решениями:

Найти максимальную цифру в числе
на С,не могу понять как найти максимальную цифру в числе,введенную с клавиатуры...

Найти максимальную четную цифру в произвольном числе
знаю как найти просто максимальное а четное не получается #include <stdio.h> main() { int a, m; ...

Найти первую слева максимальную цифру в числе
Найти первую слева максимальную цифру в числе n (n ≤ 30000) и указать ее порядковый номер, если считать справа налево.

15
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
16.05.2018, 14:24
F#
1
2
3
let maxdigit (n:int) = n.ToString() |> Seq.map (fun c -> int c - 48) |> Seq.max
 
maxdigit 34543 |> printfn "%i"
1
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
16.05.2018, 14:32  [ТС]
diadiavova, мой совсем неправильный?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
16.05.2018, 14:58
dreems, ну он же не дает результата? Значит совсем. А как это может быть немного неправильно? В принципе, понятно, что ты хотел сделать, но это делается не так. Остатки от деления на десять надо собирать по всему числу, то есть это делается либо в цикле, либо рекурсией. Вот смотри, то что ты хотел сделать частично я реализовал здесь
F#
1
2
3
4
5
6
7
8
let maxdig2 (n:int) = 
    let rec digits d r =
        if d = 0
        then r
        else digits (d/10) ((d%10)::r)
    
    let digs = digits n [];
    List.max digs
Почему частично? Потому что рекурсивно я реализовал только разделение числа на цифры. То есть функция digits как раз получает число и пустой список, а возвращает этот список, наполненный цифрами. Максимум я опять-таки вычислил встроенной функцией, но ты можешь попробовать сделать это рекурсией самостоятельно.

Добавлено через 10 минут
Кстати можно и сразу вычислять остатки и искать максимум
F#
1
2
3
4
5
6
7
8
let maxdig3 (n:int) = 
    let rec md d r max =
        let newr = d % 10
        let newmax = if max > newr then max else newr 
        if d = 0
        then max
        else md (d/10) newr newmax 
    md n 0 0
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
17.05.2018, 11:57  [ТС]
diadiavova,
F#
1
let a=maxdig3(System.Console.Read());
а вызывать мне то есть функцию вот так?

Добавлено через 18 секунд
diadiavova, вот так вызывать функцию?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
17.05.2018, 12:00
dreems, вызывать так же как и в первом посте, только имя функции поменяй. Если надо остановить консоль, то сделай так
F#
1
2
maxdig3 34543 |> printfn "%i"
System.Console.Read() |> ignore
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
17.05.2018, 12:09  [ТС]
diadiavova,
Цитата Сообщение от diadiavova Посмотреть сообщение
let rec md d r max =
у меня вот здесь ошибка. блок, следующий за блоком "let" не закончен.
как это исправить?

Добавлено через 5 минут
diadiavova, а, все, это понятно

Добавлено через 1 минуту
diadiavova,
Цитата Сообщение от diadiavova Посмотреть сообщение
md n 0 0
можете пояснить вот эту строку? это состояние остановки?
как return0 в С++??
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
17.05.2018, 12:13
Цитата Сообщение от dreems Посмотреть сообщение
можете пояснить вот эту строку? это состояние остановки?
Вызов функции md, передача ей трех аргумнетов, и, поскольку это последний вызов в функции maxdig3, то еще и возврат значения этой функцией. То есть maxdig3 с аргументом n вернет то же самое, что и md с аргументами n 0 0.
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
17.05.2018, 12:19  [ТС]
diadiavova,
Цитата Сообщение от diadiavova Посмотреть сообщение
maxdig3 34543 |> printfn "%i"
при вызове возникает ошибка: Значение или конструктор "maxdig3" не определены. Возможно, требуется одно из следующих: max

Добавлено через 1 минуту
почему?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
17.05.2018, 12:21
Проект во вложении, там все работает.
Вложения
Тип файла: zip fsharpconsole.zip (1.77 Мб, 16 просмотров)
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
17.05.2018, 12:36  [ТС]
diadiavova, спасибо
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
23.05.2018, 17:10  [ТС]
diadiavova, можно маленький вопрос
F#
1
2
3
4
5
6
7
8
let rec max x = //вычисление максимальной цифры
    match x with 
    |0 -> 0 
    |_ -> if max(x/10) < x%10 then x%10 else max(x/10) //проверка условия
let rec min x = //поиск минимальной цифры
    match x with 
    |0 -> 9
    |_ -> if min(x/10) > x%10 then x%10 else min(x/10)
не могли бы Вы пояснить, как функции работают? почему в одной мы пишем |0->0
а в другой |0->9
?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
23.05.2018, 17:24
Цитата Сообщение от dreems Посмотреть сообщение
не могли бы Вы пояснить, как функции работают? почему в одной мы пишем |0->0
а в другой |0->9
?
Ну как работает алгоритм получения максимального и минимального числа из нескольких исходных? Для нахождения максимума мы сначала примем в качестве исходного значения самое малое из возможных, а потом при переборе будем заменять его тем которое больше текущего. При поиске минимума действуем наоборот: первоначальное значение будет наибольшим из возможных, а потом при переборе входных чисел мы его уменьшаем. Если входными числами у нас будут десятичные разряды, то наименьшим будет 0, а наибольшим - 9. Правда при таком подходе, если передать функции min аргумент 0, то он и выдаст 9.
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
23.05.2018, 17:27  [ТС]
diadiavova, нижнее подчеркивание означает, что не интересует какая цифра была до этого? или нет?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
23.05.2018, 17:30
Не, неправильно объяснил. Процесс деления на 10 в конце концов закончится тем, что будет получен 0. К этому времени уже будет получено некое число-кандидат. И вот к концу выполнения функции надо чтобы кандидат в случае поиска максимума был не меньше того что выдаст функция при передаче нуля, а при поиске минимума кандидат должен быть не больше этого значение, поэтому при получении нуля должен выдаваться минимум в первом случае и максимум во втором. Вот как-то так.

Добавлено через 1 минуту
Цитата Сообщение от dreems Посмотреть сообщение
нижнее подчеркивание означает, что не интересует какая цифра была до этого? или нет?
В данном случае оно означает все остальные случаи, помимо тех, что были перечислены выше. То есть если значение не подходит ни под один паттерн выше, то оно будет пущено по этой ветке.
0
0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 216
23.05.2018, 17:32  [ТС]
diadiavova, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.05.2018, 17:32
Помогаю со студенческими работами здесь

Найти минимальную и максимальную цифру в числе (динамические массивы)
Здравствуйте, господа знатоки. Это мой первый опыт в использовании динамических массивов. Мне кажется, что код программы не является...

В заданном числе найти максимальную по длине подпоследовательность
В данном числе m найти максимальную по длине подпоследовательность так,чтобы элементы были в возрастающем порядке.... помогите плиз...

Найти первую слева максимальную цифру в числе и указать ее порядковый номер
Найти первую слева максимальную цифру в числе n (n ≤ 30000) и указать ее порядковый номер, если считать справа налево.

Найти наибольшую цифру в заданном числе
Заранее спасибо! Найти наибольшее цифру в заданном числе N

Дано число n. Найти максимальную цифру. Сколько раз максимальная цифра повторяется в числе?
Дано число n. Найти масимальную цифру. Сколько раз максимальная цифра повторяется в числе?


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru