В случае с усложнённым заданием теперь программа не только будет ПРОСИТЬ пользователя...

0 голосов
74 просмотров

В случае с усложнённым заданием теперь программа не только будет ПРОСИТЬ пользователя ВВЕСТИ ЧИСЛО ДЛЯ ВОЗВЕДЕНИЯ В СТЕПЕНЬ и саму степень... Программа будет должна осуществлять дополнительную проверку на то больше результат по модулю, чем число 2147483647 или нет, если да, то предупреждать об этом пользователя («Опасность! Результат больше чем … »)Комментарий по ходу выполнения программы давать вразумительный и обязательный.


Пример работы программы такой:

На экране появляется фраза типа

«Введите целое число»

Введите его степень»

Юзер вводит два целых числа (пускай 5 и 30)

Программа сообщает:

«Внимание! Результат 5^30 выходит за пределы типа INTEGER, 2147483647!!! Тем не менее, Ваш результат равен ….»

Или если всё в порядке, то программа сообщит пользователю: «Всё ОК. Результат: …»


Информатика (70 баллов) | 74 просмотров
0

на каком языке прога?

Дано ответов: 2
0 голосов
Правильный ответ
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var (a,b):=ReadInteger2('Введите целые основание и показатель степени:');
  var bigA:=BigInteger(a);
  var r:=bigA**b;
  if r>integer.MaxValue then begin
    Write($'Внимание! Результат {a}^{b} выходит за пределы типа INTEGER, ');
    Writeln(integer.MaxValue, '!!!');
    Writeln('Тем не менее, Ваш результат равен ',r)
    end
  else
    Writeln($'Все ОК. Результат {a}^{b}={r}')
end.

Примеры
Введите целые основание и показатель степени: 12 6
Все ОК. Результат 12^6=2985984

Введите целые основание и показатель степени: 5 30
Внимание! Результат 5^30 выходит за пределы типа INTEGER, 2147483647!!!
Тем не менее, Ваш результат равен 931322574615478515625
(150k баллов)
0 голосов
//PascalABC.NET
//Версия 3.3, сборка 1634 (14.02.2018)

begin
  var (n,i):=ReadInteger2('Введите целое число и его степень->');
  If n**i>Integer.MaxValue 
  then WritelnFormat('Внимание! Результат {0}^{1} выходит за пределы типа INTEGER, 2147483647!!! Тем не менее, Ваш результат равен {2}',n,i,biginteger(n**i))
  else Println('Всё ОК. Результат:',n**i);
end.
(5.8k баллов)
0

Исправил, спасибо

0

О_о

0

В чем разница?

0

Результат всеравно biginteger, нет?