Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 24
1

Факториал числа в процедурах

28.11.2013, 13:39. Показов 2475. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пользователь вводит натуральное число. Требуется найти факториал введенного числа, при условии что в числе есть 3йка. Использовать процедуры и функции.

Написал нечто, но оно считает лишь обычный факториал:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 var p,n,i,x,s:integer;
      factorial: longint;
      q, w: byte;
  procedure k (x:integer; var s:integer; var q:byte);
  var m:integer;
  begin
  while x<>0 do
  begin
  s:=0;
  m:=q mod 10;
  if m=3 then
  s:=s+1;
  q:=q div 10;
  end;
  end;
  procedure m(y:integer; var p:integer);
  var i:integer;
  begin
  p:=1;
  for i:=1 to y do
  p:=p*i;
  end;
  begin
  write('vved.chislo = '); readln(q);
  factorial := 1;
  for w:=2 to q do
  factorial := factorial * w;
  writeln('n! = ', factorial);
  k(n,s,q);
  m(s,p);
  readln;
  end.
Буду очень благодарен за ответ.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2013, 13:39
Ответы с готовыми решениями:

Определить во сколько раз факториал числа n! больше факториала числа m!
Определить во сколько раз факториал числа n! больше факториала числа m!

Определить во сколько раз факториал числа n больше числа m
Определить во сколько раз факториал числа n больше числа m

Найти все такие N(N<100),что у числа N!(факториал) сумма цифр-квадрат целого числа
Без этой задачи мне не ставят зачет и я не могу выйти на сэссию=( &quot;&quot;Найти все такие N(N&lt;100),что...

Факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx
Хочу сделать код факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx и...

3
908 / 756 / 833
Регистрация: 06.09.2013
Сообщений: 1,561
28.11.2013, 14:27 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function k(var q: byte): boolean;
var
  m, s: integer;
begin
  result := false; //нет тройки
  while q > 0 do
  begin
    s := 0;
    m := q mod 10;
    if m = 3 then begin
      s := s + 1;
      result := true; //есть тройка
      break //выходим из цикла
    end;
    q := q div 10;
  end;
end;
 
procedure factorial(const y: integer; var p: real);
var
  i: integer;
begin
  p := 1;
  for i := 2 to y do
    p := p * i;
end;
 
var
  p: real; //факториал описываем как вещественную переменную (чтобы небыло переполнения)
  q, w: byte;
  
begin
  write('vved.chislo = '); 
  readln(q);
  if k(q) then begin //если есть тройка
    factorial(q, p); //то вызываем процедуру по вычислению факториала
    writeln('n! = ', p)
  end
  else write('В числе нет тройки.');
  //readln;
end.
1
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 24
29.11.2013, 00:43  [ТС] 3
а можете еще комментарий написать к каждой строчке???
буду очень благодарен!!!
0
908 / 756 / 833
Регистрация: 06.09.2013
Сообщений: 1,561
29.11.2013, 04:01 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
///Функция возвращает True, если число q содержит цифру 3, и False в противном случае
function k(var q: byte): boolean;
var
  m: integer;
begin
  result := false; //сначала нет тройки
  while q > 0 do 
  begin
    m := q mod 10; //находим цифру числа
    if m = 3 then begin //если цифра равна 3
      result := true; //значение функции равно True (есть тройка)
      break //выходим из цикла (дальше не имеет смысла продолжать)
    end;
    q := q div 10; //удаляем последнюю цифру числа
  end;
end;
 
///процедура вычисляет факториал числа y и записывает результат в p
procedure factorial(const y: integer; var p: real);
var
  i: integer;
begin
  p := 1; //начальное значение факториала
 { Находим факториал: умножаем числа от 2 до y }
  for i := 2 to y do
    p := p * i;
end;
 
var
  p: real; //факториал описываем как вещественную переменную (чтобы небыло переполнения)
  q, w: byte;
  
begin
  write('vved.chislo = '); 
  readln(q); //вводим число q
  if k(q) = True then begin //если есть тройка (функция возвращает True)
    factorial(q, p); //то вызываем процедуру по вычислению факториала (передаем параметр q, а на выходе получим p)
    writeln('n! = ', p) //выводим значение факториала
  end
  else write('В числе нет тройки.'); //если k(q) = False, то выводим сообщение
  //readln;
end.
1
29.11.2013, 04:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2013, 04:01
Помогаю со студенческими работами здесь

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала...

Факториал числа
Скажи пожалуйста, существуют ли ещё способы нахождения n! в Pascal, кроме самого простого var...

факториал числа
Препод дал задание на джава, Найти факториал числа N. Не могу ничего понятного найти, так как джава...

Факториал числа
Написал программу, которая считает факториал числа. Но считает она до максимального значения типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru