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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 13:09   #1
MikaNika
Новичок
Джуниор
 
Аватар для MikaNika
 
Регистрация: 31.03.2012
Сообщений: 2
По умолчанию Задачи на массивы

Помогите, пожалуйста, с задачами по теме "обработка массива с использование операторов цикла с условием":
1. Получить последовательность десятичных цифр числа 2 в 100 степени
2. Дано натуральное число n. Определить количество различных цифр в нём.
3. Получить последовательность десятичных цифр числа 100!

Последний раз редактировалось MikaNika; 07.04.2012 в 20:44.
MikaNika вне форума Ответить с цитированием
Старый 08.04.2012, 21:53   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

МикаНика (классный ник, похоже на механику)), вот тебе простейший минимальный набор для работы с длинными числами. Тут реализовано по сути только сложение. Умножение на обычное целое производится посредством сложения - то есть, очень нерационально, но для твоей задачи этого вполне достаточно.

Решены две задачи из твоих трех. №2 попробуй сделать сама. Если не получится, а так же если есть вопросы - спрашивай, я постараюсь ответить.
Успехов тебе, МехаНика )).
Код:
const
  m= 1000;  // max num length
  base= 10; // the numeration base

type
  tNum= array[0..m-1] of byte;


function SumNumNum(a,b: tNum; var c: tNum): boolean;
var
  i,d: integer;
begin
  d:= 0;
  for i:=0 to m-1 do begin
    d:= a[i]+b[i]+d;
    c[i]:= d mod base;
    d:= d div base
  end;
  SumNumNum:= d=0
end;


function ProductNumInt(a: tNum; b: longint; var c: tNum): boolean;
begin
  FillChar(c,SizeOf(c),0);
  while (b>0) and SumNumNum(c,a,c) do dec(b);
  ProductNumInt:= b=0
end;


procedure ShowNum(a: tNum);
var
  i: integer;
begin
  i:= m-1;
  while (a[i]=0) and (i>0) do dec(i);
  for i:=i downto 0 do write(a[i])
end;

var
  a: tNum;
  i,n: integer;

begin
  n:= 100;
  FillChar(a,SizeOf(a),0);
  a[0]:= 1;
  for i:=1 to n do ProductNumInt(a,2,a);
  write('2^',n,' = ');
  ShowNum(a);
  writeln;

  writeln;
  FillChar(a,SizeOf(a),0);
  a[0]:= 1;
  for i:=2 to n do ProductNumInt(a,i,a);
  write(n,'! = ');
  ShowNum(a);
  writeln;
  readln
end.
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 08.04.2012 в 22:07.
TinMan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование операторов цикла. 555ALEXANDR555 Помощь студентам 2 10.01.2011 17:11
C# Обработка массива с использованием операторов цикла с условием Alexen Общие вопросы C/C++ 2 12.10.2010 16:32
Паскаль. использование условного оператора в теле операторов цикла с условием и после него машко Помощь студентам 1 22.06.2009 00:52
использование условного оператора после операторов цикла с условием машко Помощь студентам 8 21.06.2009 23:59
Использование операторов цикла кася Паскаль, Turbo Pascal, PascalABC.NET 3 02.05.2008 00:32