Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2013, 14:42   #1
CrapPy
Новичок
Джуниор
 
Регистрация: 04.03.2013
Сообщений: 1
Восклицание Шалости факториала в Паскале

Доброго времени суток, уважаемые коллеги =) в общем, преподаватель на днях на паре дал задание - , где X надо вводить с клавиатуры, и предел точности должен быть до 0,000001. Вроде задание не сложное, конечно он показал и свой вариант программы, но в виду своего высокомерного эго, я в этот момент отвечал на сообщения в вк... В общем начал делать из своих соображений. И тут - каша в голове... Просмотрев работу учителя понял что программа его работает не верно, почему-то паскаль не верно считает факториал, начиная с 13... В общем долго мучился, но через терни страданий написал, так скажем полупрограмму. Короче, либо я дебил, либо паскаль надо мной издевается! Обратите внимание на тринадцатый факториал и после и ПОМОГИТЕ ПОЖАЛУЙСТА!!!


Код:
program p1;
uses crt;
var otvet:real;
    i,x,k,over,n,m,stepen,faktorial:integer;
function fact(n:integer):integer;  // процедура подсчета факториалов
begin
  if n=1 then fact:=1
         else fact:=fact(n-1)*n;
end;
begin
  writeln('Ââåäèòå àðãóìåíò Õ: ');  //просит икс ввести
  readln(x);
  over:=20;  //устанавливаем конец цикла(в идеале должен быть минимум 2000)
  faktorial:=1;  
  for i:= 1 to over do begin  //начинаем считать
  stepen:=1;
    for m:= 1 to i do  // возведение Х в степень К (почему-то на ^ паскаль матюкается)
      stepen:=stepen*x;
    faktorial:=fact(i); //обращение к функции факториал
    otvet:=stepen/faktorial; //находим слагаемое
    if otvet<=0.000001 then over:=i; //ждем конец (пока что для красоты)
    k:=k+1; //подсчет количества слагаемых
    writeln(k,'   ',faktorial,'   ',stepen,'   ',otvet);  // выводим слагаемые
  end;
  writeln(k);
end.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Изображения
Тип файла: jpg фвпфвпвф.jpg (12.4 Кб, 98 просмотров)

Последний раз редактировалось Serge_Bliznykov; 04.03.2013 в 15:25.
CrapPy вне форума Ответить с цитированием
Старый 04.03.2013, 15:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так пойдёт?

Код:
program p1;
uses crt;
const
  epsilon : extended  = 0.000001;

var otvet, element : extended;
    x, k : longint;
begin
  writeln('Введите X: ');  {//просит икс ввести }
  readln(x);

  element := x;
  otvet :=  element;
  k := 0;
  while element>epsilon do begin
    inc(k);
    element := element * x/k;
    otvet := otvet +  element
  end; 
  writeln(k, ' otvet = ',otvet:0:7);
  Readln
end.

p.s. в данном примере я использую реккурентное соотношение, когда каждый следущий член ряда вычисляется через предыдущий..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.03.2013, 15:37   #3
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

function fact(n:integer):integer;
Максимальное значение типа integer: 2147483647
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 04.03.2013, 15:49   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Я один заметил запись !k, интересно?
Abstraction вне форума Ответить с цитированием
Старый 04.03.2013, 20:05   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от CrapPy Посмотреть сообщение
...программа его работает не верно, почему-то паскаль не верно считает факториал, начиная с 13... В общем долго мучился, но через терни страданий написал, так скажем полупрограмму. Короче, либо я дебил, либо паскаль надо мной издевается! Обратите внимание на тринадцатый факториал и после и ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Паскаль здесь ни при чем.
Абсолютно.
Вам не хватает элементарных представлений о способах хранения чисел в компьютере.
Посмотрите в справке, каков диапазон представлений у чисел разных типов.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление факториала millepetrozza Общие вопросы C/C++ 6 24.09.2012 13:27
Вычисление факториала turtles Помощь студентам 1 22.09.2011 13:38
Нахождение факториала Hemul Общие вопросы C/C++ 4 31.10.2010 10:08
строковые шалости) Алёна Помощь студентам 7 05.05.2010 10:53
вычисление факториала в С++ mephistophel Помощь студентам 4 10.03.2010 12:43