Решаем задачи Абрамян на Паскале. Series26

Series26. Даны целые числа $$K$$, $$N$$ и набор из $$N$$ вещественных чисел: $$A_1, A_2, …, A_N$$. Вывести $$K$$-e степени чисел из данного набора: $$(A_1)^K, (A_2)^K, …, (A_N)^K$$.

Решение:

Другие задачи из раздела Series можно посмотреть здесь.

Комментарии:

Комментарии 12

  • По ходу, ты по ошибке вставил не то решение.
    У меня как-то так получилось:

  • Было:

    Стало:

  • В решении Кирилла не учтен вариант arr[i]<0 и K mod 20

  • Извиняюсь за оффтоп, почему в pascalABC.net вот этот код выполняется? Результат N равно нулю. Должна же быть ошибка переполнения переменной? Есть какой-то способ чтоб выводило ошибку?

    • Из описания PascalABC.net
      «Автоопределение типов
      Тип переменной определяется по типу значения при описании
      с инициализацией. Это компактно записывается и очевидно
      для восприятия»
      То есть ответ на ваш вопрос …походу ни как…тип переменной автоматически расшириться, когда вам это станет нужным. (Тьфу..)
      То есть они превратили Pascal из строго типизированный языка в какой то байсик…
      И если вы хотите понять что такое типы данных… вам наверно больше подойдёт «Старый Паскаль»(термин из описания к языку PascalABC.net там целый абзац почему «Стандартный Паскаль» равно «Старый Паскаль») . Примеры «старых Паскалей», которые не придумывают за вас что вы хотите это Free Pascal и Borland Pascal.

    • А не я ошибся не дочитал комент, не всё так плохо… у вас переполнение переменной 🙂
      Эта штука не предсказуема ни в одном языке. 🙂 у вас всё пошло по кругу.
      Для того что бы появилась ошибка, нужно писать исключения… ошибка могла бы возникнуть, если бы вы разделили число на N.

  • В смысле делить на ноль K := 1/N? В pabs-e нет ошибки при делении на ноль, там бесконечность, предел =).
    А вот freepascal при переполнении переменной выдает ошибку (при включенном контроле диапазонов), правда на стадии запуска программы из среды freepascal. Т.е. первоначальная компиляция происходит успешно, exe создает.

    • ну в общем это везде индивидуально… кто как обработал эту ситуацию. Вообще при написании кода стараются не допускать выхода за пределы диапазона. Это может привести к неожиданным последствиям в зависимости от компилятора. Как в общем то вы и убедились. Вы молодец 🙂

    • я бы порекомендовал почитать про try except end; Но у вас ситуация другая… у вас в ошибку не уходит 🙂 не знаю как помочь 🙂 вы пытаетесь пользоваться инструментом, в котором в острых углах по напихали подушки… и вы такой вот здесь острый угол должен быть.. бац туда… а там мягко 🙂 ну здесь подушки оторвать трудно и бесполезно 🙂 легче взять штуку где хардкор 🙂

    • Ну и лично я предпочитаю языки где компилятор не пытается найти мне тип данных и пытается обработать корректно деление на ноль… именно так и можно понять что там происходит 🙂 а так потом будешь делить на ноль и не доумевать почему не делиться 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *