Генерировать ноту МИ пока не будет нажата клавиша Y на клавиатуре - C (СИ)
Формулировка задачи:
#include <dos.h> main() { unsigned int gamma[] = /* Коэффициенты деления для нот */ { 912,813,724,678,609,542,483 }; char *gnames[] = /* Названия нот */ { "до","ре","ми","фа","соль","ля","си" }; int i; for(i=0; i<7; i++) { /* Перебор нот */ printf("%s ",gnames[i]); tone(gamma[i]); /* Звучание ноты */ delay(700); /* Задержка на звучание 700 мсек */ silence(); /* Выключение звука */ delay(50); /* Пауза 50 мсек */ } printf("\n"); } /*==== Звучание ноты. Аргумент a - коэфф.деления ====*/ tone(unsigned int a) { outportb(0x43,0xb6); /* Запись управляющего байта (выбор канала 2) */ outportb(0x42,a&0x00ff); /* Младший байт счетчика записывается в порт данных канала 2 */ outportb(0x42,a>>8); /* Старший байт счетчика */ /* Включение динамика. Читается содержимое порта, в него записываются 1 в разряды 0, 1, затем пишется в порт */ outportb(0x61,inportb(0x61)|0x03); } /*==== Выключение звука ====*/ silence() { /* записываются 0 в разряды 0, 1 порта 0x61 */ outportb(0x61,inportb(0x61)&0xfc); }
Решение задачи: «Генерировать ноту МИ пока не будет нажата клавиша Y на клавиатуре»
textual
Листинг программы
D:\BC31\BIN>bcc -ID:\BC31\INCLUDE -LD:\BC31\LIB b.c Borland C++ Version 3.1 Copyright (c) 1992 Borland International b.c: Warning b.c 9: Call to function 'printf' with no prototype in function main Warning b.c 10: Call to function 'tone' with no prototype in function main Warning b.c 12: Call to function 'silence' with no prototype in function main Warning b.c 15: Call to function 'printf' with no prototype in function main Warning b.c 16: Function should return a value in function main Warning b.c 27: Function should return a value in function tone Warning b.c 32: Function should return a value in function silence Turbo Link Version 5.1 Copyright (c) 1992 Borland International Available memory 4187016
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д