![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
Объявлены типы и переменные :
TYPE НОТА = ( ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ, СИ) ; ИНТЕРВАЛ = ( СЕКУНДА, ТЕРЦИЯ, КВАРТА, КВИНТА, СЕКСТА, СЕПТИМА) ; VAR n1, n2: НОТА; i: ИНТЕРВАЛ ; Определить i - интервал, образованный нотами n1 и n2 (n1<>n2) : секунда - это интервал из двух соседних ( по кругу ) нот ( например ре и ми, си и до ), терция - интервал через ноту ( фа и ля, си и ре) и т.д. Решить с использованием процедур или функций. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
Как сделать помогите
|
![]() |
![]() |
![]() |
#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. какие именно операции сделать процедурами, какие - функциями, я не могу сказать, тут либо уточняйте у преподавателя, либо полная свобода творчества - выдумывайте сами! |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
проблема с выводом, делаю через case в п/п
не понимаю что написать в г/п и как вывести интервал |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
Объявлены типы и переменные :
Код:
Решить с использованием процедур или функций. Все сделал, но не работает интервал по кругу т.е <си и до> и тд. Код:
![]() ![]() Последний раз редактировалось Вадим Мошев; 19.02.2017 в 14:26. |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
не много еще упростил:
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Serge_Bliznykov; 21.02.2017 в 10:33. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
а я бы так написал:
Код:
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 10.11.2016
Сообщений: 27
|
![]()
Нам просто сказали обязательно через case ))
![]() ![]() |
![]() |
![]() |
![]() |
#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 |