• Решить задачи Паскаль
    1) Переменные x,y,i,k описаны как
    var i, k: integer; x,y: real;
    Верна ли запись
    k:= 81; y:= 1;
    for i:= 1 to sqrt (k) do y:= 2*y;
    Ответ обосновать
    2)Сколько раз выполняется цикл, и что будет выводится на печать?
    var i, k: char;
    k:= 'z';
    for i:= 'a' to 'b' do
    if k write(k);
    3)Сколько раз выполняется цикл, и что будет выводится на печать?
    var f, g: boolean;
    begin
    g:= false;
    for f:= false to g do g:= not f; writeln(g)end.

Ответы 1

  • 1. Запись НЕ ВЕРНА.В операторе цикла for i:= 1 to sqrt(k) do значение, возвращаемое функцией sqrt имеет тип real, а в этом операторе все значения должны приводиться к целочисленному типу. Автоматическое приведение типа real к integer в языке Паскаль невозможно, его нужно осуществлять явно при помощи функции Trunc() или Round().2. НИ РАЗУ И НИЧЕГО НЕ БУДЕТ НАПЕЧАТАНО. Программа не откомпилируется из-за ошибок, которых в операторе if k write(k); сразу две.Первая - после k пропущено ключевое слово then.Вторая состоит в том, что после if должно следовать логическое выражение, а k имеет тип char, но не boolean.3. ОДИН РАЗ, БУДЕТ ВЫВЕДЕНО True.В цикле должны быть значения порядкового типа и тип boolean этому требованию удовлетворяет. При входе в цикл f=false, цикл выполняется, затем f=true и цикл завершается. При однократном проходе по циклу выполнится оператор g:= not f и g получит значение true. Это значение и будет выведено.
    • Автор:

      chewie
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years