М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Дария2403
Дария2403
22.03.2021 12:57 •  Информатика

Разобраться что не так с кодом. программа считает факториал 40 и 20, после чего выводит значение формулы: 40! /(20! * должно получиться 137846528820, но выводит 0.

👇
Ответ:
Groza11
Groza11
22.03.2021

Давайте кое-что проясним.

Если факториал 20 ещё вмещается в возвращаемый тип long, то факториал 40 уже не влезет.Вы делаете лишний вызов функции Factorial только из-за того, что не делаете проверку, является ли n равным 1. Это никак не помешает работе программы, но лучше о таких вещах заботиться ещё на уровне составления алгоритма.Так как long является типом int64, то n1 и n2 - целочисленные переменные.Первый пункт

мы можем решить только путём изменения типов переменных n1 и n2 на float или double.

Второй пункт

решается добавлением в условие проверки на равенство единице:

if (n == 0 || n == 1)

А также лучше позаботиться о вводе отрицательных чисел. Но я не стану отнимать хлеб у преподавателя и у Вас в том числе, поэтому думайте сами, как решить эту и другие проблемы :)

Третий пункт

стоит показать на примере:

int i = 10; int j = 20; Console.WriteLine(i / j); // output: 0

Почему так происходит? Мы делим 10 на 20 и хотели бы получить 0.5, но тут требуется посмотреть на тип. Он априори не может хранить в себе числа после запятой. Это целочисленный тип. То есть после такого деления отбрасывается .5 и ответ получается равен нулю.

Более правильный код

(скриншот)


Разобраться что не так с кодом. программа считает факториал 40 и 20, после чего выводит значение фор
4,4(85 оценок)
Открыть все ответы
Ответ:
stanstan199
stanstan199
22.03.2021
В позиционной системе каждый разряд стоит на своей позиции.
Например, в 10-ной системе, число 235 означает, что в нем 2 сотни, 3 десятка и 5 единиц.
В 2-ной системе число 10010 означает, что в нем 1 число 2^4 = 16 и
1 число 2^1 = 2. Таким образом, эта запись означает число 16 + 1 = 18.
В непозиционной системе разные единицы могут быть в разных местах, а их значение определяется взаимным расположением.
Самая известная непозиционная система - это римские цифры.
Запись IV означает 5 - 1 = 4, запись VI означает 5 + 1 = 6.
Запись IX означает 10 - 1 = 9, запись XI означает 10 + 1 = 11.
То есть значение значка I означает то +1, то -1, в зависимости от того, стоит он перед или после более старшего значка.
4,6(44 оценок)
Ответ:
Mary2304Cat
Mary2304Cat
22.03.2021
uses crt,graph; type mas=array[1..500] of Pointtype; var gd,gm,i,j,k,n:integer;     a:mas; begin randomize; gd:=0; initgraph(gd,gm,''); for i:=1 to 500 do  begin   a[i].x:=random(getmaxX);   a[i].y:=random(getmaxY);   circle(a[i].x,a[i].y,2);  end; k:=0;n:=0; repeat k:=k+1; delay(200); setcolor(0); for i:=1 to 500 do circle(a[i].x,a[i].y,2); for i:=1 to 500 do  begin   if a[i].y>getmaxY-n-10 then a[i].y:=1   else a[i].y:=a[i].y+3;   if a[i].x<0 then a[i].x:=getmaxX   else a[i].x:=a[i].x-1;  end; setcolor(15); for i:=1 to 500 do circle(a[i].x,a[i].y,2); if k mod 20=0 then  begin   n:=n+1;   line(0,getmaxY-n,getmaxX,getmaxY-n);  end; until keypressed; readln end.
4,7(32 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ