Turbo-Pascal.7
.0.pdf181
pl_dvora := dlina_dvora * shirina_dvora; pl_doma := dlina_doma * shirina_doma; svobodn_pl_dvora := pl_dvora - pl_doma;
dlina_zabora := 2*(dlina_dvora+shirina_dvora)-(dlina_doma+shirina_doma);
WriteLn (pl_doma,' ', svobodn_pl_dvora,' ', dlina_zabora);
ReadLn
END.
Задание 13
|
|
|
|
|
|
VAR r :Integer; |
{r-радиус окружности} |
|
|
|
l, s :Real; |
{l-длина окружности, s-площадь круга} |
|
|
|
BEGIN |
|
|
|
|
r := 800; |
|
|
|
|
l := 2 * pi * r; |
|
|
|
|
s := pi * r * r; |
|
|
|
|
WriteLn (l :15:5, ' |
', s:15:5); |
|
|
|
ReadLn |
|
|
|
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 14
VAR t1, t2, |
|
{t1-время на первом отрезке, t2-на втором} |
|
|
|
||
v1, v2, |
{v1-скорость на первом отрезке, v2-на втором} |
|
|
s1, s2 |
|
:Integer; {s1-первый отрезок пути, s2-второй} |
|
sredn_skorost |
:Real; |
|
|
BEGIN |
|
|
|
t1:=3; |
t2:=2; |
|
|
v1:=80; |
v2:=90; |
|
|
s1:=v1*t1; |
{путь равен скорость умножить на время} |
|
s2:=v2*t2;
sredn_skorost := (s1+s2)/(t1+t2); WriteLn (sredn_skorost :10:3); ReadLn
END.
Задание 15
VAR a,b,c, perimetr :Integer; {a,b,c - стороны треугольника}
BEGIN a:=20;
WriteLn ('Введите длины двух сторон треугольника');
ReadLn(b,c);
perimetr := a+b+c; {периметр - это сумма сторон} WriteLn ('Периметр треугольника равен ' , perimetr); ReadLn
END.
Задание 16
VAR t, v, s :Real; |
{t-время, v-скорость, s-путь} |
|
|
||
BEGIN |
|
|
WriteLn ('Введите путь в метрах и скорость в м/с');
ReadLn(s,v);
t:=s/v;
WriteLn ('Время = ', t :6:3, ' сек');
ReadLn
END.
|
|
|
|
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
Задание 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VAR r1, r2, |
|
|
{r1-радиус орбиты первой планеты, r2-второй} |
|
||
|
v1, v2, |
|
|
{v1-скорость первой планеты, v2-второй} |
|
||
|
t1, t2 |
:Real; |
{t1-продолжительность года первой планеты, t2-второй} |
|
|||
|
nazvanie1, nazvanie2 |
:String; |
|
||||
|
BEGIN |
|
|
|
|
|
WriteLn('Введите название первой планеты');
ReadLn(nazvanie1);
WriteLn('Введите радиус орбиты и скорость первой планеты');
ReadLn(r1,v1);
WriteLn('Введите название второй планеты');
ReadLn(nazvanie2);
WriteLn('Введите радиус орбиты и скорость второй планеты');
ReadLn(r2,v2);
t1 := 2*pi*r1/v1; {время = длина орбиты/скорость, а длина} t2 := 2*pi*r2/v2; {орбиты равна два пи * радиус}
WriteLn ('Продолжительность года на планете ', nazvanie1, ' - ', t1: 3:0,
' сут., а на планете ', nazvanie2, ' - ', t2 :3:0, ' сут.');
ReadLn
END.
Задание 18 8 Задание 19 29 Задание 20 66
Задание 21
VAR a1,a2 : Integer;
BEGIN
ReadLn (a1,a2);
if a1>a2 then WriteLn (a1+a2) else WriteLn (a1*a2);
WriteLn('ЗАДАЧА РЕШЕНА');
ReadLn
END.
Задание 22
VAR a,b,c : Integer;
BEGIN
ReadLn (a,b,c);
if a<b+c then WriteLn ('Подходит.')
else WriteLn ('Не подходит, слишком длинен.');
ReadLn
END.
Задание 23
VAR golov, glaz, N : Integer;
BEGIN
WriteLn ('Сколько лет дракону?');
ReadLn (N);
if N<100 then golov := 3*N
else golov := 300 + 2*(N-100); glaz := 2*golov;
WriteLn ('У дракона ', golov ,' голов и ', glaz ,' глаз');
ReadLn
END.
183
Задание 24
VAR imya |
:String; |
|
|
||
Vozrast |
:Integer; |
|
BEGIN |
|
|
WriteLn ('Здравствуй, я компьютер, а тебя как зовут?');
ReadLn (imya);
WriteLn ('Очень приятно, ', imya, '. Сколько тебе лет?'); ReadLn (vozrast);
WriteLn ('Ого! Целых ' ,vozrast, ' лет! Ты уже совсем взрослый!'); if vozrast<=17 then begin
WriteLn ('В какой школе ты учишься?');
ReadLn; {Во время паузы вы можете вводить любой текст, все равно он программе не понадобится}
WriteLn ('Неплохая школа!') end
else begin
WriteLn ('В каком институте ты учишься?');
ReadLn;
WriteLn ('Хороший институт!') end;
WriteLn ('До следующей встречи!');
ReadLn
END.
Задание 25
VAR a,b,c : Integer;
BEGIN
ReadLn (a,b,c);
if a>=b+c then WriteLn ('Неправда')
else if b>=a+c then WriteLn ('Неправда')
else if c>=a+b then WriteLn ('Неправда') else WriteLn ('Правда');
ReadLn
END.
|
|
|
Задание 26 |
Ей нравятся любые черноглазые, но только не те, у кого рост находится в диапазоне от 180 |
|
|||
|
до 184. |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Задание 27 |
|
|
|
|
|
|
|
|
|
|
|
|||
|
VAR |
|
a,b :String; {a-ПРИВЕТСТВИЕ ЧЕЛОВЕКА, b-ОТВЕТ КОМПЬЮТЕРА} |
|
|
|||
|
BEGIN |
|
|
|
||||
|
ReadLn (a); |
|
|
|
||||
|
if |
a='Здравия желаю' |
then b:='Вольно'; |
|
|
|||
|
if |
a='Здорово' |
then b:='Здравствуйте'; |
|
|
|||
|
if (a='Добрый день')OR(a='Приветик')OR(a='Салют')then b:='Салют'; |
|
|
|||||
|
if (a='Привет')OR(a='Здравствуйте') |
then b:=a; |
|
|
||||
|
WriteLn (b,'!'); |
|
|
|
||||
|
ReadLn |
|
|
|
||||
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 28
VAR bukva : Char;
BEGIN
WriteLn ('Введи строчную букву русского алфавита'); ReadLn (bukva);
case bukva of
185
a:=100;
m1: Write (a :12:8,' '); ReadLn;
a:=a/2; goto m1
END.
Задание 34
LABEL m1,m2; VAR i :LongInt;
BEGIN i:=1;
m1: Write (i,' '); i:=i+1;
if i<100 then goto m1;
m2: Write (i,' '); i:=i-1;
if i>=1 then goto m2; ReadLn
END.
Задание 35
LABEL m;
VAR a :Real;
BEGIN a:=0;
m:WriteLn (a :5:3,' ', a*a :9:6); a:=a+0.001;
if a<=1.00001 then goto m; ReadLn
END.
Пояснение: Вместо if a<=1 then я написал if a<=1.00001 then и вот по какой причине. Вещественные числа компьютер складывает с незначительной погрешностью, но ее достаточно, чтобы при тысячекратном прибавлении 0.001 набралась не 1, а чуть-чуть больше. А это значит, что счет остановился бы на 0.999. Если не верите, попробуйте распечатывать а с 15 знаками после точки. Подробнее о причинах – см. 12.2
Задание 36
LABEL m1,m2; VAR x,y,z :Real;
BEGIN x:=2700;
m1: y:=x/4 + 20; z:=2*y+0.23;
WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6); if y*z<1/x then goto m2;
x:=x/3; goto m1;
m2: ReadLn
END.
Задание 37
VAR Slovo :String;
Nomer :Integer;
BEGIN
Nomer:=1;
186
repeat
WriteLn('Введите слово');
ReadLn(Slovo); WriteLn(Nomer, ' ', Slovo, '!'); Nomer:=Nomer+1;
until Slovo='Хватит';
WriteLn('Хватит так хватит');
ReadLn
END.
Задание 38
VAR a :Real;
BEGIN a:=0; repeat
WriteLn (a :5:3,' ', a*a :9:6); a:=a+0.001;
until a>1.00001; ReadLn
END.
Задание 39
VAR x,y,z :Real;
BEGIN x:=8100; repeat
x:=x/3; y:=x/4 + 20; z:=2*y+0.23;
WriteLn ('x=',x:12:6,' y=',y:12:6,' z=',z:12:6); until y*z<1/x;
ReadLn
END.
Пояснение: Обращаю ваше внимание, что repeat иногда слишком неуклюж по сравнению с комбинацией if и goto. Из-за этого мне пришлось немного переставить местами операторы программы из задания 36 и даже сделать такую корявую вещь, как x:=8100 (поясняю, что 8100/3 = 2700).
Задание 40
VAR t,s,h,v : Real;
BEGIN v:=20; t:=0; repeat
s:= v*t;
h:= 100-9.81*t*t/2;
WriteLn('t=',t:5:1,' s=',s:8:2,' h=',h:6:2); t:=t+0.2;
until h<=0; {Отрицательная высота - значит упал на землю}
ReadLn
END.
Задание 41
VAR a : Real;
BEGIN a:=900;
while a>=0 do begin {Из отрицательных чисел корни компьютер не вычисляет}
188
if a>10 then c_10 :=c_10 +1; {Подсчитываем превышающие 10} end {for};
WriteLn('Положит - ',c_pol,' Отрицат - ',c_otr,' Больших 10 - ',c_10); ReadLn
END.
Задание 48
|
|
|
|
|
|
VAR a, b, c : Integer; |
|
|
|
|
BEGIN |
|
|
|
|
c:=0; |
{Обнуляем счетчик} |
|
|
|
repeat |
|
|
|
|
ReadLn (a,b); |
{Ввод пары чисел} |
|
|
|
if a+b=13 then c:=c+1; |
|
|
|
|
until (a=0) AND (b=0); |
{пока не введена пара нулей} |
|
|
|
WriteLn(c); |
|
|
|
|
ReadLn |
|
|
|
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 49
18
10
5 и 8
3
10
3
5
Задание 50
VAR i, dlina, shirina, S, sum: Integer; BEGIN sum:=0;
for i:=1 to 40 do begin
ReadLn (dlina, shirina);
S:=dlina*shirina; |
{S-площадь зала} |
sum:=sum+S |
{sum-площадь дворца} |
end {for}; |
|
WriteLn(sum); |
|
ReadLn |
|
END. |
|
Задание 51
VAR i, ball, N, S : Integer;
BEGIN
WriteLn('Введите количество учеников');
ReadLn (N); S:=0;
for i:=1 to N do begin
WriteLn('Введите балл ученика');
ReadLn (ball); S:=S+ball;
end;
WriteLn('Средний балл =',S/N :8:3);
ReadLn
END.
189
Задание 52
VAR i, N : Integer; a, proizvedenie : Real;
BEGIN
WriteLn('Введите количество сомножителей');
ReadLn (N);
proizvedenie:=1; |
{Сумму обнуляем, произведение - нет!} |
for i:=1 to N do begin |
|
WriteLn('Введите сомножитель');
ReadLn (a);
proizvedenie := proizvedenie * a; {Наращиваем произведение} end;
WriteLn('Произведение =',proizvedenie :12:3);
ReadLn
END.
Задание 53
|
|
|
|
|
|
VAR perv, vtor : Integer; |
{пеpвая и втоpая цифpы} |
|
|
|
BEGIN |
|
|
|
|
for perv:=3 to 8 do for vtor:=0 to 7 do Write(perv,vtor,' '); |
|
|
|
|
ReadLn |
|
|
|
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 54
VAR i,j,k,l : Integer; |
{четыpе цифpы} |
|
|
||
BEGIN |
|
|
for i:=1 to 3 do |
|
|
for j:=1 to 3 do |
|
|
for k:=1 to 3 do for l:=1 to 3 do
Write(i,j,k,l,' ');
ReadLn
END.
Задание 55
VAR i,j,k,l, c : Integer; {c-счетчик}
BEGIN
c:=0; {Обнуляем счетчик}
for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do for l:=1 to 3 do c:=c+1;
Write('Количество сочетаний = ', c);
ReadLn
END.
Задание 56
VAR i,j,k,l, c : Integer; {c-счетчик}
BEGIN
c:=0; {Обнуляем счетчик} for i:=1 to 3 do
for j:=1 to 3 do for k:=1 to 3 do
for l:=1 to 3 do
if (i<=j) AND (j<=k) AND (k<=l) then c:=c+1;
WriteLn('Количество неубывающих сочетаний = ', c);
ReadLn
END.
190
Задание 57
|
|
|
|
|
|
VAR i,N, chislo, min, nomer |
:Integer; |
|
|
|
BEGIN |
|
|
|
|
WriteLn('Введите количество чисел'); |
|
|
|
|
ReadLn (N); |
{N - количество чисел} |
|
|
|
ReadLn(min); |
{первое число считаем минимальным} |
|
|
|
nomer:=1; |
{его номеp - пеpвый} |
|
|
|
for i:=2 to N do begin |
{Пpосматpиваем остальные числа} |
|
|
|
ReadLn(chislo); |
|
|
|
|
if chislo<min then begin |
{Если число меньше минимального, то} |
|
|
|
min:=chislo; |
{оно становится минимальным} |
|
|
|
nomer:=i; |
{запоминаем номеp минимального числа} |
|
|
|
end {if}; |
|
|
|
|
end {for}; |
|
|
|
|
WriteLn(min,' ',nomer); |
|
|
|
|
ReadLn |
|
|
|
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 58
VAR i,N, rost, min, max :Integer;
BEGIN
WriteLn('Сколько человек в классе?');
ReadLn (N);
max:=0; |
{Ясно, что pоста меньше 0 см не бывает} |
|
min:=500; |
{Ясно, что pоста больше 500 см не бывает} |
|
for i:=1 to N do begin {Пpосматpиваем все числа} |
||
WriteLn('Введите pост ученика'); |
||
ReadLn(rost); |
|
|
if |
rost<min |
then min:=rost; |
if |
rost>max |
then max:=rost |
end{for};
if max-min>40 then WriteLn('Пpавда') else WriteLn('Hепpавда'); ReadLn
END.
Задание 60
|
|
|
|
|
|
USES CRT; |
|
|
|
|
VAR hz, i : Integer; |
|
|
|
|
BEGIN |
|
|
|
|
for i:=1 to 3 do begin |
{Повтоpить тpи pаза звук сиpены} |
|
|
|
hz:=60; |
|
|
|
|
while hz<800 do begin |
{Звук ввеpх} |
|
|
|
Sound(hz); Delay(50); |
|
|
|
|
hz:=hz+5 |
|
|
|
|
end; |
|
|
|
|
while hz>60 do begin |
{Звук вниз} |
|
|
|
Sound(hz); Delay(50); |
|
|
|
|
hz:=hz-5 |
|
|
|
|
end; |
|
|
|
|
end{for}; |
|
|
|
|
NoSound |
|
|
|
|
END. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Задание 61
USES CRT;
VAR hz, i : Integer;
BEGIN
for i:=1 to 30 do begin
Sound(60);