Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Факториал, больших чисел 
:(
    Опции темы
Athlete
  Дата 4.3.2006, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



В паскале проблем написать программу факториала больших чисел не составило труда. Но возникли трудности для написания её на С++.
В билдере только 2 недели работаю, очень тяжело.
Код

Const n=1000;
Type
    lon=longint; masiv=array[1..n] of lon;
Var
   mas: masiv; x: lon;
Procedure help(x:lon; var mas: masiv);
Var t, i:lon; help1, help2: masiv;
Begin
if mas[n]>9 then
For i:=n downto 1 do begin
                      t:=mas[i];
                          mas[i]:=t mod 10;
                              mas[i-1]:=mas[i-1]+t div 10;
                                  end;
If x mod 10 <> 0 then
   For i:=n downto 1 do
          help1[i]:=mas[i]*(x mod 10);
If x div 10 <> 0 then
  For i:=n downto 1 do
      help2[i-1]:=mas[i]*(x div 10);
For i:=n downto 1 do
    begin
    if i>=2 then begin
                     t:=help1[i];
                        help1[i]:=t mod 10;
                            help1[i-1]:=help1[i-1]+t div 10;
                                end;
    if i>=3 then begin
                     t:=help2[i-1];
                         help2[i-1]:=t mod 10;
                             help2[i-2]:=help2[i-2]+t div 10;
                                 end;
    end;
For i:=n downto 1 do
    mas[i]:=help1[i]+help2[i];
For i:=n downto 1 do begin
                      t:=mas[i];
                          mas[i]:=t mod 10;
                              mas[i-1]:=mas[i-1]+t div 10;
                                  end;
End;

Procedure factor(var mas: masiv);
Var i: integer;
Begin
For i:=mas[n]-1 downto 2 do
    help (i, mas);
end;
Procedure vivod(mas: masiv);
Var i: lon;
    b: boolean;
Begin
b:=false;
For i:=1 to n do
  if mas[i]<>0 then  begin
                         write(mas[i]);
                             b:=true;
                                 end
  else  if b then
            write(mas[i]);
End;
Begin
readln(mas[n]);
if mas[n]=0 then  writeln ('0')
else begin
     factor(mas);
      vivod(mas);
       end;
readln;
end.

Помогите чем сможете. Заранее благодарю.
PM MAIL   Вверх
tigger
Дата 8.3.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



В смысле код что ли перевести и куда в Builder или просто в С++ smile


--------------------
user posted image
PM MAIL   Вверх
Athlete
Дата 8.3.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



Превести нужно в Билдер. Самая сложность заключается в написании процедуры, чтобы она выводила массив, а также вводила.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.