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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2008, 13:37   #1
Mango
Пользователь
 
Аватар для Mango
 
Регистрация: 08.09.2008
Сообщений: 20
По умолчанию Очень длинное целое

Здравствуйте, пожалуйста помогите решить задачу в Delphi7, уже всю голову сломала, без понятия, с чего начать, что делать

Задание: Написать программу, реализующую решение задания по варианту. ОченьДлиноеЦелое – это целое число с очень большим количеством знаков (>200) так что операции с этим числом не соответствуют ни одному из существующих стандартных числовых типов. Решение оформить в виде функции. Ввод числа организовать в виде чтения из текстового файла. Результат работы программы сохранить в текстовый файл.
Условие: Данное ОДЦ возвести в степень k (целое).

Заранее очень благодарна...

Последний раз редактировалось Mango; 08.09.2008 в 13:41.
Mango вне форума Ответить с цитированием
Старый 08.09.2008, 13:54   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

В инете нарыл какой то модуль для работы с большими числами. Посмотрите может что полезного найдёте
Вложения
Тип файла: zip huge.zip (27.7 Кб, 42 просмотров)
SERG1980 вне форума Ответить с цитированием
Старый 08.09.2008, 14:39   #3
Mango
Пользователь
 
Аватар для Mango
 
Регистрация: 08.09.2008
Сообщений: 20
По умолчанию

Дело в том, что я учусь в университете, и нам это нужно сделать используя какую-то функцию, как я поняла нужно работать со строками..только вот не понимаю какой тут должен быть алгоритм
Mango вне форума Ответить с цитированием
Старый 08.09.2008, 22:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

смотрите, у Вас операция возведения в степень K (причём К - целое - это важно!).
помните, из математики, что такое число N в степени K ?
Это число N к-раз умноженнное самое на себя.
Теперь по поводу "длинной" арифметики: есть несколько способов реализации. в частности, один из них - использование строки. Вам нужно описать функцию
function MultiplyLong(const A, B : string) : string;
в столбик умножать умеете? вот, в одной строчке одно число, в другой - второе. выравниваете их по правому краю и умножаете крайние разряды, учитываете число, которое нужно перенести... потом следующая пара разрядов. и т.д. пока одно из чисел не закончится.
всё. Вы получили результат умножения!
ну и вычислить степень уже совсем просто будет:
Код:
function PowerLong(const A : string; K : integer) : string;
var
   B : string;
   i  :  integer;
begin
  if K<0 then PowerLong := '###Error###'
  else begin
    if K=0 then PowerLong := '1'
    else begin
      B:= '1';
      for i:=1 to K do
         B := MultiplyLong(A, B);
      PowerLong := B;   
    end;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 15:56
Сколь угодно большое целое число 1nd1g0k1d Общие вопросы C/C++ 3 29.02.2008 18:15
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 17:37