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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 02:52   #1
0479
Форумчанин
 
Аватар для 0479
 
Регистрация: 27.09.2009
Сообщений: 153
По умолчанию Delphi цифры 100!

Доброго времени суток. Если кто то может то помогите пожалуйста с написанием программы.Точнее программа написано, правда где то некорректно срабатывает.Быть может кому то известен более лёгкий алгоритм.Задача в том чтобы нати все цифры числа 100!.Как известно калькулятор не выводит число полностью, а нужна именно полная запись числа.Свои наработки выкладываю.
Прикрепляю проект чтобы удобней было просматривать.


Код:
// Ручная функция нахождения суммы
function summ(s_str1,s_str2:string):string;
var summa:string;
x:variant;d,cifra:variant;sch,i:integer;
begin
for i:=0 to Length(s_str1)-1 do
begin
if i= Length(s_str1)-1 then
if Length(s_str1)= Length(s_str2)
then sch:=1
else
begin
sch:=Length(s_str2)-i;
d:=StrToInt(Copy(s_str1,0,1))+StrToInt(Copy(s_str2,0,sch))+x;
summa:=IntToStr(d)+summa;
continue;
end;
d:=StrToInt(Copy(s_str1,Length(s_str1)-i-1,1))+StrToInt(Copy(s_str2,Length(s_str2)-i-1,1))+x;
cifra:=d mod 10;
x:=d/10;
summa:=IntToStr(cifra)+summa;
end;
summ:=summa;
end;


//Функция для умножения
function mnog1(s:string ;i:variant):string;
var
  m, res: string;
  Str: string;
  Pl: string;
  Ost: Integer;
  j: Integer;
begin
  Ost := 0;
  for j:=Length(s) downto 1  do
  begin
    Str := Copy(s,j,1);
    Str := IntToStr(StrToInt(Str) * i+Ost);
    Pl := Str[Length(Str)];
    m := Copy(Str,1,Length(Str)-1);
    if m = '' then
      m := '0';
    Ost := StrToInt(m);
    res := Pl+res;
  end;
  if m = '0' then
    m := '';
  Result := m + res;
end;

//Процедура нахождения факториала
procedure TForm1.Button4Click(Sender: TObject);
var s_str1,s_str2,res,s:string;
i:integer;
begin
s:='99';
for i:=98 downto 2 do
begin
if i<10 then
begin
s:=mnog1(s,i);
continue;
end;
if i mod 10 <> 0 then
begin
s_str1:=mnog1(s,i mod 10);
s_str2:=mnog1(s,i div 10);
res:= summ(s_str1, s_str2 + '0');
end;
if i mod 10=0 then
begin
s_str2:=mnog1(s, i div 10) + '0';
res:=s_str2;
end;
s:=res;
end;
Edit7.Text:=s+'00';
end;
Заранее благодарен.
Вложения
Тип файла: rar 100!.rar (172.7 Кб, 8 просмотров)
0479 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воплотить идею: for i:=0 to 100 Edit[i].text:=random(100) tigr1991 Общие вопросы Delphi 6 29.09.2010 18:53
Найти произведение всех чётных чисел от -100 до 100. Makcumqa Помощь студентам 8 18.03.2010 22:31
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42
заполнить файл целыми числами из отрезка [—100; 100] с помощью датчика случайных чисел. ALEX-7-7-7 Паскаль, Turbo Pascal, PascalABC.NET 4 05.04.2009 14:51