|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.02.2017, 11:02 | #1 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
[Delphi]: Процедуры и функции (перечисляемые типы данных: найти интервал между нотами)
Объявлены типы и переменные :
TYPE НОТА = ( ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ, СИ) ; ИНТЕРВАЛ = ( СЕКУНДА, ТЕРЦИЯ, КВАРТА, КВИНТА, СЕКСТА, СЕПТИМА) ; VAR n1, n2: НОТА; i: ИНТЕРВАЛ ; Определить i - интервал, образованный нотами n1 и n2 (n1<>n2) : секунда - это интервал из двух соседних ( по кругу ) нот ( например ре и ми, си и до ), терция - интервал через ноту ( фа и ля, си и ре) и т.д. Решить с использованием процедур или функций. |
13.02.2017, 11:02 | #2 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
Как сделать помогите
|
13.02.2017, 11:20 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Что конкретно не получается?
нужно ввести два значения в n1 и n2, взять разницу i:=abs(ord(n2)-ord(n1))-1; и полученную разницу вывести в виде строкового значения. ссылки на полезные статьи: http://delphi-prg.ru/rabota-s-tipami...islyaemye-tipy http://www.compdoc.ru/prog/pascal/us...ed_types_data/ http://www.delphisources.ru/pages/fa...o_strings.html p.s. какие именно операции сделать процедурами, какие - функциями, я не могу сказать, тут либо уточняйте у преподавателя, либо полная свобода творчества - выдумывайте сами! |
13.02.2017, 14:46 | #4 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
проблема с выводом, делаю через case в п/п
не понимаю что написать в г/п и как вывести интервал |
19.02.2017, 13:48 | #5 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
[Delphi]: Процедуры и функции
Объявлены типы и переменные :
Код:
Решить с использованием процедур или функций. Все сделал, но не работает интервал по кругу т.е <си и до> и тд. Код:
Последний раз редактировалось Вадим Мошев; 19.02.2017 в 14:26. |
20.02.2017, 18:42 | #6 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
Решил свою проблему, кому интересно или нужна программа вот:
procedure TForm1.Button1Click(Sender: TObject); type nota=(doo,re,mi,fa,sol,lya,si); interval=(sek,ters,kvart,kvint,sekt a,septima); var n1,n2:nota; int:interval; a:integer; function abc(n1,n2:nota):integer; begin abc:=abs(ord(n2)-ord(n1))-1; end; function qwe(n1,n2:nota):integer; begin qwe:=abs(ord(n2)-ord(n1))-1; end; begin case combobox1.ItemIndex of 0: n1:=doo; 1: n1:=re; 2: n1:=mi; 3: n1:=fa; 4: n1:=sol; 5: n1:=lya; 6: n1:=si; end; case combobox2.ItemIndex of 0: n2:=doo; 1: n2:=re; 2: n2:=mi; 3: n2:=fa; 4: n2:=sol; 5: n2:=lya; 6: n2:=si; end; if n1<>n2 then begin if n1>n2 then begin a:=qwe(n1,n2); case a of 5: Label1.Caption:= ' Интервал: Секунда ' ; 4: Label1.Caption:= ' Интервал: Терция ' ; 3: Label1.Caption:= ' Интервал: Кварта ' ; 2: Label1.Caption:= ' Интервал: Квинта ' ; 1: Label1.Caption:= ' Интервал: Секста ' ; 0: Label1.Caption:= ' Интервал: Септима ' end; end else begin a:=abc(n1,n2); case a of 0: Label1.Caption:= ' Интервал: Секунда ' ; 1: Label1.Caption:= ' Интервал: Терция ' ; 2: Label1.Caption:= ' Интервал: Кварта ' ; 3: Label1.Caption:= ' Интервал: Квинта ' ; 4: Label1.Caption:= ' Интервал: Секста ' ; 5: Label1.Caption:= ' Интервал: Септима ' ; end; end; end else showmessage(' Ноты не могут быть выбраны одинаковые') ; end; end. |
20.02.2017, 18:46 | #7 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
не много еще упростил:
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Serge_Bliznykov; 21.02.2017 в 10:33. |
21.02.2017, 11:11 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а я бы так написал:
Код:
|
22.02.2017, 11:36 | #9 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
Нам просто сказали обязательно через case ))
|
22.02.2017, 11:52 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, тогда так:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перечисляемые типы | zweina | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 22.04.2013 18:15 |
Типы данных в Delphi. Ввод, вывод данных в Delphi | Dark Raven | Помощь студентам | 1 | 06.12.2011 11:38 |
Перечисляемые типы. лаконичная запись. | SkAndrew | Общие вопросы Delphi | 9 | 19.04.2010 20:14 |
Перечисляемые и ограниченные типы. Оператор варианта. Символьный тип. | Alex_Gray | Помощь студентам | 2 | 14.12.2009 16:45 |