Turbo Pascal для начинающих



Решения (Часть 3)

Задача 105

( Вычисление суммы ряда 1+1/2+1/3+ ... }
var
n: integer; { кол-во суммируемых членов ряда }
i:integer; { номер элемента ряда }
elem:real; { значение элемента ряда }
summ:real; { сумма элементов ряда }
begin
writeln('Вычисление частичной суммы ряда 1+1/2+1/3+...');
writeln('Введите кол-во суммируемых членов ряда');
write('->');
readln(n);
suinm:=O;
for i:=1 to n do
begin
elem:=l/i;
summ: =suimH-elem; end;
write('Сумма первых *,n); writeln(' членов ряда равна ', suram: 6: 4) ; readln;
end.

Задача 106

{ Таблица степеней двойки } vax
n: integer; { показатель степени } x: integer; { значение 2 в степени п } begin
writeln('Таблица степеней двойки'); х:=1;
for n:=0 to 10 do begin
writeln(n:2,x:6); x:=x*2; end; readln; end.

Задача 108

{ Таблица функции } const
LB=-2; { нижняя граница диапазона изменения аргумента }
НВ=2; { верхняя граница диапазона изменения аргумента }
DX=0.5; { приращение аргумента } var
х,у: real; { аргумент и значение функции }
n: integer; { кол-во точек }
i: integer; { счетчик циклов }96 in
n:=Round((HB - LB)/DX)+1;
x:=LB;
writelnC-------------------') ;
writeln(' x I y');
writeln('-------------------') ;
for i:=1 to n do begin
y:=-2.4*x*x+5*x-3; writeln(x:8:2,' I ',y:8:2); x:=x+DX; end;
writelnC-------------------') ;
readln; end.

Задача 111

{ Вычисляет среднее арифметическое последовательности
дробных чисел, вводимой с клавиатуры } const
L=5; { длина последовательности } var
a: real; { число }
n: integer; { кол-во введенных чисел } sum: real; { сумма введенных чисел }
sred: real; { среднее арифметическое введенных чисел } begin
writeln('Обработка последовательности дробных чисел'); writeln('После ввода каждого числа нажимайте <Enter>'); sum:=0;
for n:=l to L do begin
write('->'); readln(a); sum:=sum+a; sred:=sum/n;
writelnf'Введено чисел:',п:3, ' Сумма: ', sum:6:2, ' Сред.арифметическое:',sred:6:2); end;
writeln('Для завершения работы программы нажмите <Enter>'); readln; end.

Задача 112

{ Вычисляет среднее арифметическое и определяет
минимальное и максимальное число последовательности
дробных чисел, вводимых с клавиатуры } var
a: real; { очередное число }
n: integer; { количество чисел }
sum: real; ( сумма введенных чисел }
sred: real; { среднее арифметическое }
min: real; ( минимальное число последовательности }
max: real; { максимальное число последовательности }
i: integer; { счетчик циклов }
begin
writeln('Обработка последовательности дробных чисел.'); write ('Введите количество чисел последовательности ->'); readln(п);
writeln('Вводите последовательность.'); writeln('После ввода каждого числа нажимайте <Enter>'); write('->');
readln(a); { вводим первое число последовательности } { предположим, что:}
min:=a; { первое число является минимальным } шах:=а; { первое число является максимальным } sum:=a;
{ введем остальные числа } for i:=l to n-1 do begin
write('->');
readln(a);
sum:=sum+a;
if a < min then min:=a;
if a > max then max:=a; end; sred:=sum/n;
teln('Количество чисел:*,п); writeln('Среднее арифметическое:',sred:6:2); writeln('Минимальное число:',min:6:2); writeln('Максимальное число:',шах:б:2);
writeln('Для завершения работы программы нажмите <Enter>'); readln; end.

Задача 114

( Генерирует три последовательности случайных чисел и вычисляет среднее арифметическое каждой последовательности } const
N=3; { кол-во последовательностей } L=10; { длина последовательности ) var
г: integer; ( случайное число } sum: integer; { сумма чисел последовательности } sred: real; ( среднее арифметическое } i,j: integer; { счетчики циклов } begin
writeln('Случайные числа');
Randomize; { инициализация генератора случ. чисел } for i:=l to N do begin
{ генерируем последовательность } sum:=0; { не забыть обнулить ! } for j:=1 to L do begin
r:=Random(10)+1; write(r:3); sum:=sum+r; end;
sred:=sum/L;
writeln(' Сред.арифм.: ',sred:6:2); end;
writeln('Для завершения работы программы нажмите <Enter>'); readln; and.

Задача 116

( Таблица функции у»|х| } const
LB=-4; { нижняя граница диапазона изменения аргумента } НВ=4; ( верхняя граница диапазона изменения аргумента } DX=0.5; { приращение аргумента } var
х,у: real; { аргумент и значение функции } n: integer; ( кол-во точек } 1: integer; { счетчик циклов } begin
writeln('Таблица значений функции у=IхI '); n:=Round((НВ - LB)/DX)+1; x:=LB;
for i:=l to n do begin
y:=Abs(x);
writeln(x:6:2,y:6:2); x:=x+DX; end; readln; end.

Задача 119

{ Вьшодит таблицу умножения на 7 } var
m: integer; { число, для которого надо вывести таблицу умножения (множимое) }
n: integer; { множитель }
р: integer; { произведение } begin
m:=7;
for n:=l to 10 do
begin
p:=ra*n;
writeln(m,'x',n,' =', p) ;
end;
readln; { чтобы результат не исчезал с экрана } end.

Задача 120

( Преобразование десятичного числа в двоичное } var
dec:'integer; { десятичное число }
v: integer; { вес формируемого разряда }
i: integer; { номер формируемого разряда } begin
writeln('Преобразование десятичного числа в двоичное');
writeln('Введите целое число от 0 до 255 и нажмите ',
'<Enter>'); write('->'); readln(dec);
write('Десятичному числу ',dec,' соответствует двоичное '); v:=128; { вес старшего разряда } for i:=l to 8 do begin
if dec >= v then begin
write('1'); dec:=dec-v; end
else write('0'); v:=Round(v/2); { вес следующего разряда в два раза }
{ меньше веса текущего разряда } end; readln; end.

Задача 121

{ Выводит на экран квадрат Пифагора - таблицу умножения. } var
i,j: integer; { номер строки и столбца таблицы }
р: integer; { произведение i на j } begin
write('':4); { левая верхняя клетка таблицы }
for j:=l to 10 do { первая строка - номера столбцов } write(j:4);
writeln;
for i:=l to 10 do 101
begin
write(i:4); { номер строки } for j:=l to 10 do { строка таблицы }
write(i*j:4) ; writeln; end;
readln; { чтобы результат не исчезал с экрана } end.

Задача 122

{ Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ... } var
х: real; { член ряда }
n: integer; { количество суммируемых членов } summ: real; { частичная сумма } i: integer; { счетчик циклов } begin
writeln('Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ...'); write('Введите кол-во суммируемых членов ряда ->'); readln(п); summ:=0;
for i: = 1 to n do begin
x:=l/(2*i - 1); if (i mod 2) = 0 then x:=-l*x; summ:=summ+x; end;
writeln('Сумма ряда: ',summ:8:6);
writeln('Значение pi/4 ',pi/4:8:6); { pi - именованная
константа } readln; end.

Задача 123

{ Приближенное вычисление интеграла методом прямоугольников } var
a,b: real; { границы отрезка }
dx: real; ( приращение аргумента (величина интервалreal; { приближенное значение интеграла} n: integer; { количество интервалов } х: real; { аргумент }
у: real; { значение функции в начале интервала } 1: integer; begin
writeln('Приближенное вычисление интеграла');
write('Нижняя граница отрезка -> ');
readln(a);
write('Верхняя граница отрезка -> ');
readln(b);
write('Приращение аргумента -> ');
readln(dx);
n:=Round((b-a)/dx);
x: =a ;
s:=0;
for i:=l to n do
begin
y:=5*x*x-x+2; { значение функции в начале интервала }
s:=s+y*dx;
x:=x+dx; end;
writeln{'Значение интеграла: *,s:9:3);
writeln('Для завершения работы программы нажмите <Enter>'); readln; end.

Задача 124

{ Приближенное var
a,b: real;
dx: real;
s: real; n: integer; x: real; yl,y2: real;
i: integer;
вычисление интеграла методом трапеций }
{ границы отрезка }
{ приращение аргумента (величина интервала)}
{ приближенное значение интеграла} { количество интервалов } { аргумент }
{ значение функции в начале и в конце интервала }
begin
writeln('Приближенное вычисление интеграла1);
write('Нижняя граница отрезка -> ');
readln(a);
write('Верхняя граница отрезка -> ');
readln(b);
write('Приращение аргумента -> ');
readln(dx);
n:=Round((b-a)/dx);
x: =a;
s:=0;
for i:=l to n do
begin
yl:=5*x*x-x+2; { значение ф-и в начале интервала }
x:=x+dx;
у2:=5*х*х-х+2; { значение ф-и в конце интервала }
s:=s+(yl+y2)*dx/2; end;
writeln('Значение интеграла: ',8:9:3);
writelnf'Для завершения работы программы нажмите <Enter>'); readln; end.

Задача 126

{ Преобразование десятичного числа в двоичное } var
dec: integer; { десятичное число }
v: integer; { вес формируемого разряда }
i: integer; { номер формируемого разряда } begin
writeln('Преобразование десятичного числа в двоичное');
writeln('Введите целое число от 0 до 255 и нажмите ', '<Enter>');
write('->');
readln(dec);
write('Десятичному числу ',dec,' соответствует двоичное ');
v:=128; { вес старшего (восьмого) разряда )
for i:=l to 8 do
in
if dec >= v then begin
write('1');
dec:=dec-v; end else write('0');
v:=Round(v/2); { вес следующего разряда в два раза меньше }
end;
readln; end.

Задача 127

( Программа проверяет знание таблицы умножения }
uses Crt;
var
numbl, пштЬ2:integer; { Первое и* второе число }
res:integer; ( Результат умножения первого числа на второе }
otv:integer; { Ответ испытуемого }
kol:integer; { Количество правильных ответов }
i:integer;
begin
ClrScr; { очистить экран }
writeln(' *** Проверка знания таблицы умножения ***•);
writeln(' После примера введите ответ и нажмите <Enter>.');
writeln;
kol:=0; ( правильных ответов )
Randomize; ( инициализация генератора случайных чисел }
for i:=l to 10 do { 10 примеров }
begin
numbl:=Random(9)+ 1;
numb2:=Random(9)+1;
res:=numbl * numb2;
write(' (,numbl,'x',numb2,'=');
readln(otv);
if otv=res
then
kol:=kol+l else begin
writeln(' Вы ошиблись! ',numbl,'*',numb2,'=',res);
end; end;
writeln(' Правильных ответов:',kol); write(' Ваша оценка: ') ; case kol of
10: writelnС51); 9,8: writeln('4'); 7,6: writeln('3') ; 0..5:writeln('2') ; end;
writeln(' Для завершения работы с программой нажмите <Enter>') ;
readln; end.

Задача 128

{ Проверка умения складывать и вычитать числа. } uses
Crt;
var
numbl,numb2:integer; { числа }
op:integer; { Действие над числами 0 - сложение,
1 - вычитание }
sop: char; { знак операции - "плюс" или "минус" } res:integer; { Результат } otv:integer; { Ответ испытуемого } kol:integer; { Количество правильных ответов }
buf:integer; { буфер для обмена numbl и numb2, в случае, если numbl<numb2 }
i: integer; { счетчик циклов }
begin
ClrScr;
writeln('Проверка умения складывать и вычитать числа.');
writeln('После примера введите ответ и нажмите <Enter>.');
106
l:=0;
Randomize;
for i:=l to 10 do
begin
{ сгенерируем пример }
numbl:=Random(9)+1; { первое число }
numb2:=Random(9)+1; { второе число }
op:=Random(2); ( действие над числами }
if op=0 then
begin { сложение} res:=numbl+numb2; sop:='+'; end else
begin { Вычитание }
if numbl < numb2 then
begin { обменяем numbl и numb2} buf:=numb2; numb2:=numbl; numbl:=buf; end;
res: =numbl-numb2 ; end;
write(' ',numbl,sop,numb2,'='); { вывести пример } readln(otv); { получить ответ
испытуемого } if otv = res then
kol:=kol+l else
begin
writeln(' Вы ошиблись! ',numbl,sop,numb2,'=',res);
end; end;
writeln(' Правильных ответов:',kol); write(' Ваша оценка:'); case kol of
10: writeln(?5');
9,8: writeln(l4l);
7,6: writelrK'31) ; 0..5:writeln('2') ; end; writelnC Для завершения работы с программой нажмите
<Enter>'); readln; end.

Задача 129

{ Простые электронные часы }
uses Crt; { используем процедуры и функции библиотеки Crt }
var
min,sec: integer; { минуты, секунды } begin
ClrScr; { очистить экран } for min:=l to 3 do begin
for sec:=l to 60 do begin
Delay(lOOO); { задержка 1000 ms }
GotoXY(l,l); { установить курсор в 1-ю колонку
1-й строки ) write(min,':',sec,' ');
if KeyPressed ( если нажата клавиша } then Halt; { завершить программу } end; end; end.

Задача 130

{ Вычисление среднего арифметического
последовательности положительных чисел } var
а : integer; { число, введенное с клавиатуры } n : integer; { количество чисел } s : integer; { сумма чисел } m : real; { среднее а=0;
writeln('Вычисление среднего арифметического
последовательности положительных чисел.');
writeln('Вводите после стрелки числа. ',
'Для завершения ввода введите ноль.');
repeat
write C> ');
readln(a);
s:=s+a;
n:=n+l; until a <= 0; n:=n-l;
writeln('Введено чисел:',n); writeln('Сумма чисел: ',s); m := s/n; writeln('Среднее арифметическое: ',m:6:2);
writeln('Для завершения работы программы нажмите <Enter>');
readln;
end.

Задача 131

( Определение максимального числа последовательности положительных чисел }
var
а : integer; { очередное число } m : integer; { максимальное число } begin
write('Определение максимального числа');
writeln('последовательности положительных чисел.');
writeln('Вводите после стрелки числа. ',
'Для завершения ввода введите ноль.'); т:=0; repeat
write('> ');
readln(a);
if a > т then m := а; until a <= 0; writeln('Максимальное число: ',т);
завершения работы программы нажмите <Enter>');
readln;
end.

Задача 132

{ Проверка, является ли введенное с клавиатуры
целое число простым } program prost; var
n: integer; d: integer; r: integer; begin
write('Введите целое число-> ');
readln(n);
d:=2; { сначала будем делить на два }
repeat
r:=n mod d;
if r<>0 ( n не разделилось нацело на d }
then d:=d + 1;
until r=0; { пока не нашли число, на которое делится п ) if d=n
then writelnf n,' - простое число. ') else writeln(n,' — не простое число.');

Задача 134

{ Игра "Угадай число" } const
NPOP=5; { количество попыток, предоставляемое игроку } var
comp: integer; { число, "задуманное" компьютером }
igrok: integer; { вариант игрока }
n: integer; { кол-во попыток, сделанное игроком } begin
Randomize; { инициализация генератора случайных чисел }
comp:=Random(9)+1; { компьютер задумал число }
110
teln('Игра "Угадай число". ') ;
writeln('Компьютер "задумал" число от 1 до 10.');
writeln('Угадайте его за ',NPOP,' попыток.');
writeln('Введите число и нажмите <Enter>.');
repeat
n:=n+l;
write('->');
readln(igrok);
until (n = NPOP) or (comp = igrok); if comp = igrok
then writeln('Вы выиграли!')
else writeln('Вы проиграли! Компьютер задумал число ',
comp); readln;
end.

Задача 135

{ Таймер )
uses Crt;
var .
mm, sec: integer; { задержка: минут и секунд } begin
writeln('Введите величину задержки в минутах и секундах,');
writeln('например 2 30 и нажмите <Enter>.');
write('->');
readln(min,sec);
ClrScr;
GotoXY(2,2);
write(min,':',sec,' ');
repeat
if sec = 0 then begin
min:=min-l;
sec:=60; end; repeat
Delay(1000) ;
sec:=sec-l;
GotoXY(2,2) ; { задержка 1 сек } write(min,':',sec,' '); if KeyPressed { если нажата клавиша } then Halt; { завершить программу } until sec = 0; until (min = 0) and (sec = 0);
{ звуковой сигнал }
Sound(1000); { включить звук - сигнал частотой 1000 герц} Delay(500);
Nosound; { выключить звук} end.

Задача 136

{ вычисляемое значение ПИ }
{ точность вычисления }
{ номер члена ряда }
{ значение члена ряда }
{ Вычисление числа "ПИ" var
p:real;
t:real;
n:integer;
elemrreal; begin
p:=0;
n:=l;
elem:=l; { начальное значение}
write('Задайте точность вычисления ПИ-> ');
readln(t);
writeln('Вычисление ПИ с точностью',t:9:6);
while elem >= t do
begin
elem:=l/(2*n-l) ; if (n MOD 2) = 0
then p:=p-elem else p:=p+elem; n:=n+l;
end;
p:=p*4;
writeln('Значение ПИ с точностью',t:9:б,' равно1,р:9:6);
writeln('Просуммировано ',п,' членов ряда.');
readln; end.

Задача 137

{ Вычисление наибольшего общего делителя двух целых чисел }
var
nl,n2:integer; { числа, НОД которых надо найти } nod:integer; { наибольший обший делитель } г:integer; { остаток от деления nl на п2 }
begin
writeln('Вычисление наибольшего общего делителя1);
writeln('для двух целых чисел.');
write('Введите в одной строке два числа ');
writeln('и нажмите <Enter>');
write('->');
readln(nl,n2);
while (nl mod n2)<>0 do
begin
r:=nl mod n2; { остаток от деления} nl:=n2; n2:=r;
end;
nod:=n2;
writelnCНОД чисел ',nl,' и ',п2,' это ',nod); readln;

Задача 138

{ Приветствие } var
name: string[40]; { имя пользователя } begin
writelnC Как Вас зовут?');
writeln('(введите свое имя и нажмите <Enter>');
write('->');
readln(name);
writeln('Здравствуйте, ',name,'!');
readln; end.

Задача 139

{ Посимвольный вывод сообщения ) uses
Crt; { для доступа к процедуре Delay } var
msg: string[80]; ( сообщение } n: integer; ( номер выводимого символа } begin
msg:='Приветствую великого программиста! '; for n:=1 to Length(msg) do begin
write(msg[n]);
Delay(lOO); { задержка 0.1 сек } end; readln; end.

Задача 140

{ Выводит код введенного символа } var
sim: char; { символ } code: integer; ( код символа } begin
writeln('Введите символ и нажмите <Enter>.');
writeln('Для завершения работы программы введите точку.');
repeat
write('->'); readln(sim) ; code:=Ord(sim) ;
writeln('Символ: *,sim, ' Код: ',code); until sim = '.';
end.

Задача 141

{ Вывод таблицы кодировки символов } var
ch:char; { символ }
dec:integer; { десятичный код символа }
i,j:integer;
114
in
dec:=O;
for i:=0 to 15 do ( шестнадцать строк } begin
' dec:=i; { чтобы получить таблицу кодировки} { для символов с кодами 128-255, } { эту инструкцию надо ) { заменить на dec:=i+128;} for j:=l to 8 do { восемь колонок } begin
if(dec<7) or (dec>=14> then
write(dec:4, '-', ' ',
chr(dec):l,chr(179)) else { символы CR,LF,TAB не отображаются }
write(dec:4,'- ',chr(179)); dec:=dec+16; and;
writeln; { переход к новой строке экрана } end; readln; end.

Задача 142

var
st: string[80]; { строка текста } len: integer; { длина строки } i: integer; { номер обрабатываемого символа ) begin
writeln('Введите строку текста и нажмите <Enter>'); write('->'); readln(st); len:=Length(st); for i:=l to len do
case st[i] of
•a'..'n': st[i]:=chr(ord(st[i])-32); 'р'-.'я1: st[i]:=chr(ord(st[i])-80);
end;
writeln('Строка, преобразованная к верхнему регистру: writeln(st); );
readln; end.

Задача 143

{ Удаление начальных пробелов строки } var
st:string[80]; { строка } begin
writeln('Удаление начальных пробелов строки.1);
write('Введите строку:');
readln(st);
while (post1 ',st) = 1) and (length(st)>0) do delete(st,1/1);
write('Строка без начальных пробелов:',st);
readln; end.

Задача 144

( Проверка, является ли введенная
с клавиатуры строка целым числом } var
st: string[40]; { строка }
n: integer; { номер проверяемого символа } begin
writeln('Введите число и нажмите <Enter>');
write('->');
readln(st);
n:=l;
while (n <= Length(St)) and
((st[n] >= '0') and (st[n] <-'9')) do n:=n+l;
write('Введенная строка '); if n < Length(st)
then write('не '); writeln('является целым числом. '); readln; end.

Задача 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; { предположение
об ошибке ложно } •nd; end; end;
write('Строка '); if err
then write('не ');
writeln('является дробным числом.'); readln; end.

Задача 148

{ Программа преобразует введенное с клавиатуры двоичное восьмиразрядное число в десятичное } var
bin: string[8]; { изображение двоичного числа }
: integer; { десятичное число }
г: 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;

Задача 149

var
st: string[2]; { шестнадцатеричное число }
d: integer; { десятичное число, соответствующее
введенному шестнадцатеричному }
v: integer; { вес разряда шестнадцатеричного числа } 1: integer; begin
writeln('Введите двухразрядное шестнадцатеричное число 'и нажмите <Enter>.');
write('->'); readln (st);
{ преобразуем введенную строку к верхнему регистру } for i:=l to Length(st)
do st[i]:=UpCase(st[i]);
i:=Length(st); { обрабатываем с младшего разряда } v:=l; {и его вес равен единице }
while (i>0) and
(((st[i] >= '0') and (st[i] <= '9')) or
((st[i] >= 'A') and (st[i] <= 'F'))) do begin
{ здесь символ - цифра или
латинская буква от А до F) if (st[i] >= '0') and (st[i] <= '9') then d:=d + v * ( Ord(st[i])-48 )
{ Ord('O') = 48, Ord('l') = 49, и т.д. } else d:=d + v * (Ord(st[i]) - 55);
{ Ord('A') = 65, Ord('B') = 66, и т.д. }
i:=i-l; { к предыдущему разряду } v:=v*16;
end;
if i=0 { обработаны все разряды }
then writeln('Шестнадцатеричному числу ',st,
' соответствуе десятичное ',d) else writeln('Введенная строка не является ',
'шеснадцатеричнои цифрой.');
readln; end.

Задача 150

{ Программа преобразует десятичное число
в число в указанной пользователем системе счисления (от 2-х до 10-ти) )
uses Crt;
о:integer; n:integer; г:integer;
s:string[16]
{ Основание системы счисления }
{ Исходное число }
{ Остаток от деления числа на основание
сист. счисл. } { Представление числа в заданной
сист. счисл. }
buf:string[1]; begin
ClrScr;
write('Введите целое число -> '); readln(n);
write('Введите основание системы счисления -> '); readln(o); s: = " ;
{ делим исходное число на основание системы счисления до тех пор, пока остаток от деления больше основания системы счисления. Остаток от деления на каждом шаге - очередная цифра. } repeat
r:=n mod о; n:=n div о; Str(r,buf); s:=buf+s; until(n<o)I Str(n,buf); s:=buf+s; writeln(s); readln; end.
( очередная цифра } { целая часть деления } ( преобразование цифры в строку}
( Программа преобразует десятичное число
в шестнадцатеричное } uses Crt;
var
n:integer; { Исходное число }
r:integer; { Остаток от деления числа на основание сист. счисл. }
s:string[16]; { Представление числа в заданной сист. счисл. }
buf:string[1] ; begin
ClrScr;
write('Введите целое число -> ');
readln(n);
s: = " ;
{ делим исходное число на основание системы
счисления (16) до тех пор, пока остаток от деления
больше основания системы счисления.
Остаток от деления на каждом шаге - очередная
цифра. }
write('Десятичному числу ' ,п) ; write (' соотвествует шестнадцатеричное ') ; repeat
r:=n mod 16; ( очередная цифра } n:=n div 16; { целая часть деления } if r<10
then buf:=chr(r+48) { chr(48) = '0', chr(49)='l'
и т.д. }
else buf:=chr(r+55); { chr(65) = 'A', chr(66)='B'
и т.д. } s:=buf+s; until(n<16) ; if n <> 0 then begin if n<10
then buf:=chr(n+48) else buf:=chr(n+55); s:=buf+s; end;
writeln(s); readln;
end.
{ Программа вычисляет значение арифметического
выражения, введенного с клавиатуры } uses Crt;
s: string[80]; { сторока }
1: integer; { длина строки }
z: integer; { значение выражения }
n: integer; { очередное число }
i: integer; { номер числа в строке }
err: integer; { код ошибки, при преобразовании символа в число }
begin
ClrScr;
writeln('Введите арифметическое выражение,1);
writeln('например, 4+5-3-5+2 и нажмите клавишу <Enter>');
write('->');
readln(s);
val (s[1],z,err);
i: =3 ;
repeat
val(s[i],n,err); { получить очередное однозначное
число }
if s[i-l] = '+' then z:=z+n else z:=z-n;
until i > Length(s) ;
writeln('Значение введенного выражения: *,z); writeln('Для завершения программы нажмите <Enter>.'); readln; end.

Назад Начало Вперед



Книжный магазин