0 / 0 / 0
Регистрация: 31.12.2009
Сообщений: 26
1

Вычитание длинных чисел

02.05.2012, 18:15. Показов 1751. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Помогите с реализацией вычитания длинных чисел, есть ошибка, не знаю как исправить
примеры: 122-98=24 считает правильно, а вот 100-9=1-11 тут уже плохо.

PHP
1
2
3
4
5
6
7
8
9
10
11
for ($i=$k-1; $i>=0; $i--)
{
    if ($chisloa[$i]<$chislob[$i])
  { $chisloc[$i] = ((10+$chisloa[$i])-$chislob[$i])-$p;
  $p=1;
 
  }
 else  {$chisloc[$i] = ($chisloa[$i]-$chislob[$i])-$p;
 
 $p=0;}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2012, 18:15
Ответы с готовыми решениями:

Умножение и деление длинных чисел
Добрый день! Помогите, пожалуйста, с реализацией умножения и деления длинный чисел. Числа...

Вычитание длинных чисел
нужно вычесть два длинных числа. код есть, но не могу найти ошибку: var a,b,c:array of integer;...

Вычитание двух длинных чисел
доброго времени суток ... задали задачку ... только не знаю как её решить ... если не будет...

Сложение и вычитание очень длинных чисел
Помогите написать прогу на ассемблере для сложения и вычитания очень длинных чисел (мах. 400...

3
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
02.05.2012, 18:26 2
может поясните код , я так понял $к у нас лимит , число А ,Б ,Ц вообще хрен знает что там в них - что это за массив ,что за $p ?

PHP
1
2
3
4
5
6
7
8
#никаких проблем
set_time_limit (0);
$k = 9999999;
for ($i=$k-1; $i>=0; $i--)
{
  $rand = mt_rand(0,999999999);
  echo "$i - $rand = " . ($i - $rand) . '</br>';
}
1
0 / 0 / 0
Регистрация: 31.12.2009
Сообщений: 26
02.05.2012, 18:33  [ТС] 3
извиняюсь, поторопился. Вычитание столбиком
$k - лимит.
$chisloa - массив хранящий первое число(из которого вычитаем)
$chislob - массив хранящий второе число
$chisloc - массив хранящий ответ
$p - "число в уме"
0
2430 / 2281 / 593
Регистрация: 27.05.2011
Сообщений: 7,796
02.05.2012, 18:54 4
так теперь понял вы разбиваете числа на массивы цифор .
кроч неуспал разобратся , надо бежать , вот нобльшой дебаг , где описывается каждый шаг , может поймете
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$chisloa = array( 0 , 0 , 1);
$chislob = array( 9 , 0 , 0);
$chisloc = array();
$k = sizeof($chisloa);
$p = 0;
 
for ($i=$k-1; $i>=0; $i--)
{
  if ($chisloa[$i]<$chislob[$i])
  { 
    echo "A {$chisloa[$i]} < B {$chislob[$i]} </br>";
    echo "в уме P = $p</br>";
    $chisloc[$i] = ((10+$chisloa[$i])-$chislob[$i])-$p;
    echo "10+A =" .(10+$chisloa[$i]) ."</br> (A+10) - B = " .((10+$chisloa[$i])-$chislob[$i]) . "</br> (A+10) - B - p = {$chisloc[$i]}</br>";
    $p=1; 
    echo "в уме P = $p</br>";
    echo "------------end of step---------</br>";
  }
 else  
 {
  echo "A{$chisloa[$i]} > B{$chislob[$i]} </br>";
   echo "в уме P = $p</br>";
  $chisloc[$i] = ($chisloa[$i]-$chislob[$i])-$p;
  echo "B - A = ".($chisloa[$i]-$chislob[$i])." , and -P = {$chisloc[$i]}</br>";
  $p=0;
  echo "в уме P = $p</br>";
  echo "------------end of step---------</br>";
  }
 
}
var_dump($chisloc);
A1 > B0
в уме P = 0
B - A = 1 , and -P = 1
в уме P = 0
------------end of step---------
A0 > B0
в уме P = 0
B - A = 0 , and -P = 0
в уме P = 0
------------end of step---------
A 0 < B 9
в уме P = 0
10+A =10
(A+10) - B = 1
(A+10) - B - p = 1
в уме P = 1
------------end of step---------
array(3) { [2]=> int(1) [1]=> int(0) [0]=> int(1) }
0
02.05.2012, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2012, 18:54
Помогаю со студенческими работами здесь

Длинная арифметика(вычитание длинных целых чисел)
Добрый вечер! Очень нужна помощь. Мне нужно написать программы для сложения больших целых...

Как реализовать хранение длинных чисел, их сложение и вычитание?
Бесконечно длинных чисел.

Сделать сложение, вычитание, умножение и деление длинных чисел
В общем, задача такая, что надо сделать сложение, вычитание, умножение и деление длинных чисел....

Сложение и вычитание длинных чисел без длинной арифметики
Напишите процедуры для сложения и вычитания длинных чисел (не используя «длинную арифметику»...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru