Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/55: Рейтинг темы: голосов - 55, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 26.10.2018
Сообщений: 49

Активные шаблоны

13.12.2019, 03:59. Показов 10268. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
2. Разработайте для данного класса функцию вычисления площади. Функция должна принимать параметр типа «геометрическая фигура» и вычислять различные варианты площади в зависимости от дискриминатора. Необходимо использовать механизм сопоставления с образцом.
не могу разобраться с этим пунктом, функцию сопоставления постоянно подчёркивает с ошибкой "данное правило никогда не будет сопоставлено". Я просто уже не понимаю, что нужно сделать. Помогите пожалуйста

F#
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
open System 
 
type IPrint = interface
    abstract member print: unit -> unit
    end
 
[<AbstractClass>]
type figure() = 
    abstract member area: unit -> float
 
type rectangle(a: float, b: float) =
    inherit figure()
    member this.a1 = a
    member this.b1 = b
    override this.area() = this.a1*this.b1
    override Object.ToString() = "Ширина прямоугольника: "+Object.a1.ToString()+", высота прямоугольника: "+Object.b1.ToString()+", площадь: "+Object.area().ToString() 
    interface IPrint with
        member this.print() = printfn "%s" (this.ToString())
 
type square(a: float) =
    inherit rectangle(a, 3.14)
    override this.area() = this.a1*this.a1
    override Object.ToString() = "Сторона квадрата: "+Object.a1.ToString()+", площадь: "+Object.area().ToString()
    interface IPrint with
        member this.print() = printfn "%s" (this.ToString())
 
type cycle(a: float) = 
    inherit figure()
    member this.a1 = a
    override this.area() = 2.0*3.14*this.a1
    override Object.ToString() = "Радиус круга: "+Object.a1.ToString()+", площадь: "+Object.area().ToString()
    interface IPrint with
        member this.print() = printfn "%s" (this.ToString())
 
type M_figure(a : float, b : float) =
    member x.radius = a
    member x.height = b
    member x.width = a
    member x.sq = a
 
let (|Rectangle|) (x : M_figure) = (x.height, x.width)
let (|Square|) (x : M_figure) = (x.sq)
let (|Cycle|) (x : M_figure) = (x.radius)
 
let area a =
    match a with
        | Square(aa) -> aa*aa
        | Rectangle(aa, ab) -> aa*ab
        | Cycle(aa) -> aa*2.0*3.14
 
[<EntryPoint>]
let main argv =
 
    let rec1 = rectangle(2.0, 3.0)
    let rec12 = rec1 :> IPrint
    rec12.print()
    
    let sq1 = square(2.0)
    let sq12 = sq1 :> IPrint
    sq12.print()
 
    let cyc1 = cycle(2.0)
    let cyc12 = cyc1 :> IPrint
    cyc12.print()
 
 
 
 
 
    Console.ReadKey() |> ignore
    
    0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2019, 03:59
Ответы с готовыми решениями:

Удаленное управление и активные эскизы (RDP + DWM)
Доброго времени суток. Интересует, есть ли возможность передавать по сети активные эскизы? Пример. Допустим есть компьютер, на...

Хранить шаблоны документов в базе и выводить данные в эти шаблоны
Доброго времени суток. Интересует вопрос: мне необходимо формировать вордовские документы по шаблону. У меня создан шаблон документа...

Чем отличаются шаблоны HTML и шаблоны WordPress
В чём различие между шаблонами HTML и WordPress. Кроме того, что создаются они разными способами. Конкретно имею в виду, почему их...

2
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
13.12.2019, 18:04
Цитата Сообщение от UzkovD Посмотреть сообщение
Разработайте для данного класса функцию вычисления площади. Функция должна принимать параметр типа «геометрическая фигура» и вычислять различные варианты площади в зависимости от дискриминатора. Необходимо использовать механизм сопоставления с образцом.
Как-то уж очень эта задача напоминает вот это. Не очень понятно, что такое дискриминатор, однако, если вспомнить, что размеченное объединение по-аглецки называется discriminated union, то можно предположить, что речь именно о нем.
1
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
10.01.2020, 16:48
Цитата Сообщение от UzkovD Посмотреть сообщение
функцию сопоставления постоянно подчёркивает с ошибкой "данное правило никогда не будет сопоставлено"
Вы используете классы, а нужно использовать размеченные объединения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2020, 16:48
Помогаю со студенческими работами здесь

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Есть ли разница в этих понятиях? Если есть, то в чём? И где (в каких...

Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис)
Так как изучаю эту книгу, то в некоторых местах возникают вопросы. Чтобы не плодить много тем, корни у которых одни, решил создать эту...

Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов...

Активные окна
Здравствуйте, помогите сделать окно с эмайлом и полосу прокрутки активной, у самого не как не получается( прогу приклеил к сообщению

Активные фильтры на ОУ
Добрый вечер. Вопрос такой. В чем различие каскадной реализации фильтров от некаскадной?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru