Иллюстрированный самоучитель по Turbo Pascal для начинающих

Решения (задачи 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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.