asyan.org
добавить свой файл
1

Фонд Освітніх та Інформаційних Технологій

Рішення (Частина 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 у');
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
а: real; { число }
n: integer; { к-ть введених чисел } sum: real; { сума введених чисел }
sred: real; { середнє арифметичне введених чисел } begin
writeln('Обробка послідовності дробових чисел'); writeln('Після введення кожного числа натискайте '); 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('Для завершення роботи програми натисніть '); readln; end.


Завдання 112

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


Завдання 124

{ Наближене var
а,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'для завершення роботи програми натисніть '); readln; end.


Завдання 126

{ Перетворення десяткового числа в двійкове } var
dec: integer; { десяткове число }
v: integer; { вага формованого розряду }
i: integer; { номер формованого розряду } begin
writeln('Перетворення десяткового числа в двійкове');
writeln('Введіть ціле число від 0 до 255 і натисніть ', '');
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(' Після прикладу введіть відповідь і натисніть .');
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(' Для завершення роботи з програмою натисніть ');
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, у випадку, якщо numbli: integer; { лічильник циклів }
begin
Clrscr;
writeln('Перевірка уміння складати і віднімати числа.');
writeln('Після прикладу введіть відповідь і натисніть .');
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 Для завершення роботи з програмою натисніть
'); 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 а <= 0; n:=n-l;
writeln('Введено чисел:',n); writeln('Сума чисел: ',s); m := s/n; writeln('Середнє арифметичне: ',m:6:2);
writeln('Для завершення роботи програми натисніть ');
readln;
end.


Завдання 131

( Визначення максимального числа послідовності позитивних чисел }
var
а : integer; { чергове число } m : integer; { максимальне число } begin
write('Визначення максимального числа');
writeln('послідовності позитивних чисел.');
writeln('Вводите після стрілки числа. ',
'Для завершення введення введіть нуль.'); т:=0; repeat
write('> ');
readln(a);
if а > т then m := а; until а <= 0; writeln('Максимальне число: ',т);
завершення роботи програми натисніть ');
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('Введіть число і натисніть .');
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 і натисніть .');
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('і натисніть ');
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('(введіть своє ім'я і натисніть ');
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('Введіть символ і натисніть .');
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('Введіть рядок тексту і натисніть '); 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('Введіть число і натисніть ');
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('Введіть шістнадцятиричне число і натисніть ');
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('Введіть дробове число і натисніть ');
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 натисніть .');
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('Для завершення роботи програми натисніть .');
readln;


Завдання 149

var
st: string[2]; { шістнадцятиричне число }
d: integer; { десяткове число, відповідне
введеному шістнадцятиричному }
v: integer; { вага розряду шістнадцятиричного числа } 1: integer; begin
writeln('Введіть дворозрядне шістнадцятиричне число 'і натисніть .');
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( чергова цифра } { ціла частина ділення } ( перетворення цифри в рядок}
( Програма перетворить десяткове число
в шістнадцятиричне } 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 і натисніть клавішу ');
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('Для завершення програми натисніть .'); readln; end.



Oleksa.Inc