Написать программу ** Паскале, которая считает произведение чисел, которые больше...

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

Написать программу на Паскале, которая считает произведение чисел, которые больше введенного числа, до 100. Числа только положительные.


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

100 включительно?

Дано ответов: 2
0 голосов

Var  s: real; 
a,x:integer;
begin 
writeln('введите целое число'); 
readln(a); 
s := 1; 
a := a + 1; 
for x := a to 100 {или 99, зависит от того, включается 100 или нет} do   begin   
s := s * a; 
 a := a + 1;
end; 
writeln(s);
end.

(10.6k баллов)
0

Вы хоть свою программу тестировали? Попробуйте ввести числа, меньше 85. Ваша программу будет считать неверно, ибо произведение числе от x до 100 достаточно велико и не вмещается ни в один тип, тем более 4-байтовый  integer. Мой вариант с длинной арифметикой был верный, а ваш, к сожалению, нет. 

0

Исправила, спасибо что заметили, сейчас программа выдает значения со степенью. Вроде бы, всё верно.

0

Сейчас программа считает верно, но теряется некоторая точность. Хотя не думаю, что автору понадобятся все цифры числа)

0 голосов
Решение с использование длинной арифметики.
var
  i, j, n, len, rem: integer;
  a: array[1..200] of byte;
begin
  write('Введите число: ');
  read(n);
  len := 1;
  a[1] := 1;
  for i := n + 1 to 99 {100} do
  begin
    for j := 1 to len do
    begin
      rem := a[j] * i + rem;
      a[j] := rem mod 10;
      rem := rem div 10;
    end;
    while rem > 0 do
    begin
      inc(len);
      a[len] := rem mod 10;
      rem := rem div 10;
    end;
  end;
  writeln('Произведение чисел из интервала (', n, '; 100): ');
  for i := len downto 1 do write(a[i]);
end.
Пример работы программы:
Введите число: 1
Произведение чисел из интервала (1; 100):
1948348720420644788695888257080283249381963823594360049498643927185579338215778728274424636079639781709574621897447185108592230400000000000000000000


(13.3k баллов)
0

Была опечатка в программе, исправил