Решения (задачи 165-188)
Задача 186
{ Преобразование строчных букв в прописные } (Замещает стандартную процедуру UpCase} function UpCase(st:string): string; var i:integer; begin for i: = 0 to Length(st) do { символы нумеруются с нуля! } case st[i] of { латинские буквы} 'a'..'z':UpCase[i]: = chr(ord(st[i])-32); { русские буквы} 'a'..'n':UpCase[i]: = chr(ord(st[i])-32); 'p'..'я':UpCase[i]: = chr(ord(st[i])-80); else { остальные символы не преобразуем UpCase[i]: = st[i]; end; end; { пример использования функции UpCase } var st: string; begin writeln(' Введите текст и нажмите Enter'); write(' › '); readln(st); writeln(UpCase(st)); readln; end.
Задача 188
{ Решение квадратного уравнения } function KvadrUr(a,b,c: real; var xl,x2: real): integer; { a,b,c – коэффициенты уравнения } { xl,x2 – корни уравнения } (значение функции – количество корней или – 1, если неверные исходные данные } var d: real; (дискриминант } begin if a = 0 then KvadrUr: = – 1 else begin d: = b*b-4*a*c; if d < 0 then KvadrUr: = 0 { уравнение не имеет решения } else begin if d > О then KvadrUr: = 2 { два разных корня } else KvadrUr: = 1; { корни одинаковые } xl: = (-b+Sqrt(d))/(2*a); x2: = (-b-Sqrt(d))/(2*a); end; end; end; основная программа } var a,b,c: real; { коэффициенты уравнения } xl,x2: real; (корни уравнения } begin writeln('Решение квадратного уравнения'); writeln('Введите в одной строке коэффициенты и нажмите 'Enter'); write(' › '); readln(a,b,с); case KvadrUr(a,b,c,xl,x2) of -1: writeln('Ошибка исходных данных.'); 0: writeln('Уравнение не имеет решения.'); 1: writeln('x=',xl:6:2,' Корни одинаковые.'); 2: writelnГxl=',xl:6:2,' х2=',х2:6:2); end; readln; end. uses Crt; var a:integer; { число, введенное пользователем } { Функция Getlnt предназначена для ввода целого положительного числа, состоящего из одной или двух цифр. Во время ввода для редактирования может использоваться <Backspace>. При нажатии Enter функция возвращает введенное число. } function Getlnt:integer; const K_BACK=8; { код клавиши <Backspace> } K_ENTER=13; { код клавиши Enter } var ch:char; { символ } dec:byte; { код символа } buf:array[l..2] of char; { введенные цифры } n:integer; { кол-во введенных цифр } x,у:integer; { положение курсора } begin buf[1]: = ' '; buf[2]: = ' '; then n: = 0; repeat ch: = Readkey; dec: = ord(ch); if (ch>='0') and (ch<='9') and (n<2) begin write(ch); n: = n+l; buf[n]: = ch; end else if (dec=K_BACK) and (n>0) then begin n: = n-l; x: = WhereX; y: = WhereY; GotoXY(x-l,y); write(' '); GotoXY(x-l,y); end; until (n>0) and (dec=K_ENTER); { преобразуем введенную строку в число } if n=2 then Getlnt: = (ord(buf[1])-48)*10+ord(buf[2])-48 else Getlnt: = ord(buf[1])-48; end; begin ClrScr; writeln('*** Демонстрация работы функции Getlnt. ***'); writeln; writeln('Функция Getlnt предназначена для ввода целого 'положительного числа,'); writeln('состоящего из одной или двух цифр.'); writeln('Во время ввода для редактирования может ', 'использоваться <Backspace>.'); writeln('При нажатии Enter функция возвращает ', 'введенное число.'); writeln; writeln('Введите число и нажмите Enter'); write(' › '); teln('ftnH завершения работы программы нажмите ', 'Enter'); readln; HALT(l); end; { полотнище флага } SetFillStyle(SolidFill,LightGray); { сплошная заливка серым цветом } Ваг(80.80.200.135); { кольца } SetColor(Green); (зеленое } Circle(100.100.15); SetColor(Black); { черное } Circle (140.100.15); SetColor(Red); { красное } Circle(180.100.15); SetColor(Yellow); { желтое } Circle(120.115.15); SetColor(Blue); { синее } Circle(160.115.15); readln; CloseGraph; end.