Решения (задачи 131-150)
Задача 146
{ проверяет, является ли введенная строка шестнадцатеричным числом } var st: string[20]; { строка } i: integer; { номер проверяемого символа } error: boolean; { в строке есть неверный символ } begin writeln('Введите шестнадцатеричное число и нажмите Enter'); write(' › '); readln(st); { преобразуем введенную строку к верхнему регистру for i: = l to Length(st) do st[i]: = UpCase(st[i]); error: = FALSE; while (i <= Length(st)) and fnot error) do if ((st[i] >= '0') and (st[i] <= '9')) or ((st[i] >= 'A') and (st[i] <= 'F')) then i: = i+l else error: = TRUE; write('Строка '); if error then write('не '); writeln('является шестнадцатеричным числом. '); readln; end. { проверяет, является ли введенная строка дробным числом без знака } var st: string[20]; { строка } i: integer; { номер проверяемого символа } err: boolean; { TRUE – строка не дробное число } begin writeln('Введите дробное число и нажмите Enter'); write(' › '); readln(st); i: = l; err: = TRUE; { пусть строка – не дробное число } if (st[i] >='l') and (st[i] <='9') then { первый символ цифра) begin { за цифрой возможно следут еще цифры } while (st[i] >='l') and (st[i] <='9') and (KLength(st)) do i: = i+l; { за цифрами следует точка, но она не последний символ } if ((st[i] = '.') and (i < Length(st))) then { точка } begin { за точкой должна быть хотя бы одна цифра } if ((st[i] >='l') and (st[i] <='9')) then begin while ((st[i] >='l') and (st[i] <='9') and (KLength(st))) do i: = i+l; if i= Length(st) { последний символ – цифра} then err: = FALSE; { предположение об ошибке ложно } end; end; end; write('Строка '); if err then write('не '); writeln('является дробным числом.'); readln; end.
Задача 148
{ Программа преобразует введенное с клавиатуры двоичное восьмиразрядное число в десятичное } var bin: string[8]; { изображение двоичного числа } : integer; { десятичное число } r: string[1]; { i-й разряд двоичного числа } v: integer; (вес i-ro разряда двоичного числа } i: integer; { номер разряда двоичного числа } in writeln('Введите восьмиразрядное двоичное число'); writeln('n нажмите Enter.'); write (' › '); readln(bin); if Length(bin) <> 8 then writeln('Число должно быть восьмиразрядным.') else begin dec: = 0; v: = 128; {вес старшего (8-го) разряда двоичного числа } for i: = l to 8 do begin r: = bin[i]; { выделить i-й разряд } if г = 'I1 then dec: = dec+v; t v: = Round(v/2); { вычислить вес следующего разряда } end; write('Двоичному числу ',bin,'); writeln(' соответствует десятичное ',dec); end; writeln('Для завершения работы программы нажмите Enter.'); readln;