Var a,d:integer; b,c,p:real;
begin
write('A=');readln(a);
write('B=');readln(b);
write('C=');readln(c);
write('Разговоров за месяц: ');readln(d);
if d<=a then p:=b*d else p:=b*a+c*(d-a);
writeln('Плата за телефон=',p:5:2);
<span>end.
Пример:
A=20
B=1.70
C=1.90
</span>Разговоров за месяц: 25
Плата за телефон=43.50
№1
var a:array[20] of byte; - это объявление недопустимо.
По синтаксису языка в [...] указывается тип данных элементов массива.
20 - это не тип.
ответ в)
№2
n:=2;
p:
[email protected];
p^:=1;
Writeln('n=', n);
Это тема, которую в Паскале понимают не очень многие - работа с указателями.
n:=2 - тут все понятно. Константа 2 засылается в область памяти, которую называли n.
P:
[email protected]; - здесь применена операция @, называемая "взятие адреса". Т.е. @n - это не значение n (которое у нас равно 2) , а тот самый адрес области памяти, где это значение размещено. И этот адрес будет помещен в переменную с именем p.
p^:=1; - если операция @ дает адрес, то операция ^ дает доступ к содержимому, находящемуся по указанному адресу. Мы записали в p адрес области памяти, в котором расположено содержимое n (оно равно 2), а теперь при помощи р^ получаем доступ к этому содержимому и меняем его на 1.
Вся эта "кухня равнозначна тому, что мы записали в n единичку. Она и будет выведена. Точнее будет выведена строка n=1.
Ответ a)
Program n_1;
var m,k: integer;
begin
if (m>0) and (k>0) then
begin
m:=m*10;
k:=k*10;
end;
if ((m>0) and (k<0)) or ((m<0) and (k>0) then
begin
m:=m*100;
k:=k*100;
end;
if (m<0) and (k<0) then
begin
m:=m*1000;
k:=k*1000;
end;
writeln(m);
writeln(k);
end.