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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 14:56   #1
The riddle
Пользователь
 
Аватар для The riddle
 
Регистрация: 31.05.2009
Сообщений: 18
Вопрос Длинное целое

Люди добрые,помогите пожалуйста програмкой вычитания единицы из очень длинного целого(DELPHI)Не могу разобраться,со смещением((
The riddle вне форума Ответить с цитированием
Старый 09.06.2009, 15:16   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Есть тип Int64 (-2^63..2^63-1)
Это вроде самое длинное целое.
Для данного типа, самое большое число это - 999999999999999999
Вот пример уменьшения на единицу:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 n: Int64;
begin
 n := StrToInt64(edit1.Text);
 dec(n);
 edit2.Text := IntToStr(n);
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 09.06.2009, 15:32   #3
The riddle
Пользователь
 
Аватар для The riddle
 
Регистрация: 31.05.2009
Сообщений: 18
По умолчанию

Спасибо за код,но это ОченьДлиноеЦелое – это целое число с очень большим количеством знаков (>200) так что операции с этим числом не соответствуют ни одному из существующих стандартных числовых типов.
The riddle вне форума Ответить с цитированием
Старый 09.06.2009, 16:08   #4
Vedrus
ИСККОНный хакер
Форумчанин
 
Аватар для Vedrus
 
Регистрация: 08.11.2007
Сообщений: 195
По умолчанию

Если меньше 255 знаков, то можно на строках сделать программу, если больше - лучше файлами. Первый вариант у меня есть на Delphi, второй - на ассемблере. Если нет желания писать самому - уступлю за дорого. Если есть желание писать самому - могу помочь бесплатно. Пиши.
#define QUESTION bb || !bb
Vedrus вне форума Ответить с цитированием
Старый 09.06.2009, 16:33   #5
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Значит надо использовать число как строку.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 n: string;
 Last: byte;
 NNulls: integer;
 i: integer;
 indexLastNull: integer;
begin
 NNulls := 0;
 n := Edit3.Text;
 for i := Length(n) downto 1 do
  if n[i] = '0' then
  begin
   inc(NNulls);
   indexLastNull := i;
  end;
 if NNulls <> 0 then
 begin
  Delete(n, indexLastNull, NNulls);
  Last := StrToInt(n[Length(n)]);
  dec(Last);
  Delete(n, Length(n), 1);
  n := n + IntToStr(Last);
  for i := 0 to NNulls - 1 do
   n := n + '9';
  Edit4.Text := n;
 end
 else
 begin
  Last := StrToInt(n[Length(n)]);
  dec(Last);
  Delete(n, Length(n), 1);
  n := n + IntToStr(Last);
  Edit4.Text := n;
 end;
end;
Такой огромный код, потому что идет проверка на нули в конце числа.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 13.06.2009, 15:45   #6
The riddle
Пользователь
 
Аватар для The riddle
 
Регистрация: 31.05.2009
Сообщений: 18
По умолчанию

Огромное спасибо,я дописала оставшиеся кусочки программыРаботает
The riddle вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длинное целое The riddle Помощь студентам 0 07.06.2009 11:06
Очень Длинное Целое Моряк Помощь студентам 2 07.06.2009 10:51
case и 64битное целое? MOROZ_FX Общие вопросы C/C++ 0 09.05.2009 14:09
проверить корректно ли введено целое число slips Общие вопросы C/C++ 3 22.04.2009 09:23
Очень длинное целое Mango Помощь студентам 3 08.09.2008 22:13