Предмет: Информатика, автор: tatianabichuren

Приведен фрагмент программы на паскале:
readln(a);
b:=30;
a=-a-3*b;
if a<b then c:=b+45
else
c:=b-50; 
При каком наибольшем числе а после выполнения программы с будет равно -20?

С решением, пожалуйста

Ответы

Автор ответа: archery
0
код программы
var
    a: integer;

function c(a: integer): integer;
var
    b: integer;
begin
    b := 30;
    a := -a - 3 * b;
   
    if a < b then
        c := b + 45
    else
        c := b - 50;
end;

begin
    for a := 1000 downto -1000 do
        if c(a) = -20 then begin
            writeln('a=', a, ' c(a)=', c(a));
            break;
        end;
end.

Вывод
a=-120 c(a)=-20

Аналитическое решение.
Видно что c:=b - 50 = 30 - 50 = -20 при a>=b
-a-3*b>=b
-a-3*30>=30
-a-90>=30
-a>=120
a<=-120

Похожие вопросы