Решения (задачи 224-241)
Задача 235
Выводит таблицу пересчета из дюймов в миллиметры на экран, принтер или в файл f:text; { файл вывода } fname:string; { имя файла вывода } dest:integer; { 1 – на экран, 2 – на принтер, 3 – в файл } d: real; { величина в дюймах } m: real; { величина в миллиметрах} begin writeln('*** Таблица пересчета из дюймов ', 'в миллиметры ***'); teln('Результат выводить:'); writeln('l – на экран;'); writeln('2 – на принтер;1); writeln('3 – в файл.'); ' writeln('Введите число от 1 до 3 и нажмите Enter '); write('Ваш выбор › '); readln(dest); case dest of 1: fname: = ''; {на экран } 2: begin { на принтер } fname: = 'prn'; write('Включите принтер и нажмите Enter'); readln; end; 3: begin { в файл } write('Задайте имя файла для вывода › '); readln(fname); end; end; assign(f,fname); .rewrite(f); writeln(f,' – ---------------'); writeln(f,' Дюймы Миллиметры'); writeln(f,' – ----------------'); d: = 0.5; while d < 10 do begin m: = 25.4*d; { 1 дюйм – 25.4 мм } writeln(f,d:6:l,m:10:1); d: = d+0.5; end; writeln(f,' – ----------------'); close(f); if dest = 3 then writeln('Таблица записана в файл ',fname); writeln('Для завершения работы программы', ' нажмите Enter'); readln; end.
Задача 236
{ Рекурсивная функция "Факториал" } function factorial(k:integer):integer; begin if к = 1 then factorial: = 1 else factorials k*factorial (k-1); end; var n: integer; { число, факториал которого надо вычислить} f: integer; (факториал числа п } begin writeln('Вычисление факториала.'); writeln('Введите число, факториал которого надо ', 'вычислить'); write (' › '); readln(n); f: = factorial(n); writeln('Факториал числа ',n,' равен ',f); readln; end.
Задача 237
{ Выводит на экран узор } Uses Graph,Crt; { Рисует элемент узора } procedure Elem(x,у,r,p: integer); { x,y,r – координаты и радиус центра основного элемента узора р – порядок узора } begin if p>=0 then begin Circle(х,у,г); Delay(lOO); Elem(x+r,y,Round(r/2),p-l); Elem(x,y-r,Round(r/2),p-l); Elem(x-r,y,Round(r/2),p-l); m(x,y+r,Round(r/2) end; end; grDriver:integer; { драйвер } grMode:integer; { графический режим } grPath:string; { путь к файлу драйвера) ErrCode:integer; (код ошибки графического режима } begin grDriver: = VGA; grMode: = VGAHi; grPath: = 'e:\tp\bgi'; InitGraph (grDriver,grMode,grPath); ErrCode: = GraphResult; if ErrCode <> grOK then begin writeln ('Ошибка инициализации графического режима.1) writeln ('Для завершения работы нажмите Enter'); readln; HALT (1); end; { основная программа } Elem(320.240.60.3); { рисуем узор 3-го порядка } OutText('Для завершения работы программы ', 'нажмите Enter'); readln; end. Используя механизм рекурсии, вычисляет сопротивление n-звенной электрической цепи } r1,r2,r3: real; { величины сопротивлений, из которых состоит цепь } n: integer; { количество звеньев (порядок) цепи } re: real; { сопротивление цепи) { величина сопротивления цепи n-го порядка } function Cep(n: integer): real; begin if n=l then Cep: = Rl+R2+R3 else begin rc: = Cep(n-1); Cep: = R2*rc/(R2+rc); end; end; { основная процедура } begin writeln('Вычисление сопротивления электрической цепи. writeln('Введите величины сопротивлений (Ом):'); write('rl › '); readln(rl); write Cr2 › '); readln(r2); write('r3 › '); readln(r3); write('Порядок цепи › '); readln(n); writelnf' Сопротивление цепи:',Сер(n):6:2,' Ом'); { величины сопротивлений передаются в процедуру Сер через глобальные переменные r1, r2 и r3 } readln; end.