Решения (задачи 180-197)
Задача 184.
// Телеграф – передача сообщений при помощи азбуки Морзе #include "stdio.h" #include "conio.h" #include "string.h" // strlen #include "dos.h" // delay // параметры передачи #define TONE 100 // частота сигнала (гц) #define LI 50 // длительность (мс) "точки" #define L2 100 // длительность (мс) "тире" #define L3 50 // пауза (мс) между точками и тире одной // буквы #define L4 100 // пауза (мс) между буквами #define L5 150 // пауза (мс) между словами void main() // кодировка букв русского алфавита char *morse[] = { " _ II II Н Н_____Ч II II / /7\ П О Т1 ,-…,.---,--., //А, b,В,1 II Д,Е,Ж,3 // и,й,к,л // м,н,о,-п // Р,С,Т,У // Ф,Х,Ц,Ч // ш,щ,ъ,ы // ь,э,ю,я unsigned char mes[80]; // сообщение char sim[4]; // символ в кодировке Морзе – // последовательность точек и тире char znak; // "передаваемый" знак – тире или точка int i,j; // номер символа и знака puts("\n*** Телеграф ***"); puts("Введите сообщение, которое надо передать"); puts("(используйте только заглавные русские буквы)"); printf(" › "); gets(mes); for (i =0; i < strlen(mes); i++) if (mes[i] >= 'A1 && mes[i] <='Я') { // определим код очередной буквы (ф-я Ord) сообщения //и получим из таблицы кодировки соответствующий // элемент массива – последовательность точек и тире strcpy(sim,morse[mes[i]-128]); j = 0; do if (sim[j] == '-' II sim[j] == '.') { putch(sim[j++]); sound(1000); if (sim[j] == '.') delay(LI); else delay(L2); nosound; delay(L3); le (sim[j]!= ' ' && j <4); delay(L4); // пауза между буквами else if (mes[i] == ' ') // пробел между словами { printf(" "); // пробел между словами сообщения delay(L5); puts("\п Сообщение передано!"); puts("Для завершения работы нажмите Enter"); getch ();
Задача 185.
// Вычисление объема цилиндра #include <stdio.h> #include <conio.h> #include <math.h> // для доступа" к М PI // объем цилиндра float veil(float h, float r) return(M PI*r*r*h); void main () float r,h; // высота и радиус основания цилиндра float v; // объем цилиндра puts("Вычисление объема цилиндра"); printf("Введите высоту и радиус основания › "); scanf ("%'f%f", &h, &r); v = veil(h, r); printf("Объем цилиндра %3.2f\n", v); printf("Для завершения нажмите Enter"); getch();