Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
byr3x
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 2
1

Длинная арифметика. Сложение. Вводятся два числа длиной 0<n<255 . Найти сумму этих чисел

12.10.2019, 22:55. Просмотров 76. Ответов 1
Метки нет (Все метки)

Помогите убрать ошибку
Pascal
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
program qq;  
 
  const 
 
  n = 255;  
 
var  
 
  s1, s2: string;  
 
  s,a,b: array[1..n] of integer;  
 
  i, k, st, st1, st2, d,c: integer;   
 
begin  
 
    readln(s1);  
 
    st1 := length(s1) div 2;  
 
    for i := 1 to st1 do   
 
    begin  
 
      c := a[i];  
 
      a[i] := a[length(s1) - i + 1];  
 
      a[length(s1) - i + 1] := c;  
 
    end;  
 
  begin  
 
    readln(s2);  
 
    st2 := length(s2) div 2;  
 
    for i := 1 to st2 do   
 
       c := b[i];  
 
      b[i] := b[length(s2) - i + 1];  
 
      b[length(s2) - i + 1] := c;  
 
  end;    
 
    if length(s1) >= length(s2) then st := length(s1) else st := length(s2); 
 
    k := 0;  
 
    for i := 1 to st do  
 
    begin 
 
      a[i] := ord(s1[i]) - ord('0');  
 
    b[i] := ord(s2[i]) - ord('0');  
 
    k := k + a[i] + b[i];  
 
    s[i]:=k mod 10; 
 
    k:=k div 10; 
 
    end; 
 
    s[st+1]:=k; 
 
    for i:=1 to st do 
 
write(s[i]); 
 
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2019, 22:55
Ответы с готовыми решениями:

С клавиатуры вводится N целых чисел a1, a2,….,aN. Найти сумму этих чисел. Найти номер первого четного числа последовательности чисел.
Решить задачу 3 способами: 1. Используя метки и оператор goto (не используя никакой цикл) 2....

Длинная арифметика. Сложение чисел
Есть у меня массив в каждой ячейке записано 1 или 0, т.е число в двоичном коде. Необходимо...

Сложение больших чисел (длинная арифметика)
Есть две строки string с числами, не получается сделать их суммирование с помощь, не могу понять...

Сложение двух чисел (длинная арифметика)
Нужно реализовать длинную арифметику (сложение двух больших чисел), но на экран выводятся не...

Длинная арифметика. Сложение длинных чисел
Здравствуйте! Впервые за все время изучения C++ решил реализовать длинную арифметику, используя...

1
ValentinNemo
953 / 230 / 141
Регистрация: 15.01.2019
Сообщений: 819
13.10.2019, 04:56 2
Pascal
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
program qq;
const
  n = 255;
var
  s1, s2, st1, st2: string; // Переменные для хранения информации строкового типа.
  s,a,b: array[1..n] of integer;  // Переменные для хранения массивов с преобразованными цифрами.
  i: integer;    // Вспомогательная переменная для организации циклов.
  k, st, e: integer;  // Промежуточные переменные для преобразования символов в цифры.
begin
  writeln('Введите первое число: ');
  readln(st1);
  for i:= length(st1) downto 1 do  // Переворот строки из символов цифр.
    s1:= s1 + st1[i];
  writeln('Введите второе число: ');
  readln(st2);
  for i:= length(st2) downto 1 do  // Переворот строки из символов цифр.
    s2:= s2 + st2[i];
  e:= abs(length(s1)-length(s2));  // Вычисляется разница в строках из символов цифр.
  if length(s1) >= length(s2) then
    begin
      st:= length(s1);
      for i:= 1 to e do    // Добавляются нули в строку из символов цифр которое меньше по длине.
        s2:= s2 + '0';
    end
  else
    begin
      st:= length(s2);
      for i:= 1 to e do    // Добавляются нули в строку из символов цифр которое меньше по длине.
        s1:= s1 + '0';
    end;
  k:= 0;
  for i:= 1 to st do
    begin
      a[i]:= ord(s1[i]) - ord('0'); // Символ преобразуется в цифру
      b[i]:= ord(s2[i]) - ord('0');
      k:= k + a[i] + b[i];          // Цифры суммируются и к ним добавляются цифры, что вышли в старшие разряды.
      s[i]:= k mod 10;             // Полученный результат заносится в массив.
      k:= k div 10;
    end;
  e:= 0;
  if k <> 0 then     // Условие для дополнительного разряда числа собранного из элементов массива.
    begin
     s[st+1]:= k;
     e:= 1;
    end;
  writeln('Сумма двух чисел: ');
  for i:= st + e downto 1 do // Сборка окончательного ответа из элементов массива.
    write(s[i]);
  Readln;
end.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2019, 04:56

Длинная арифметика: сложение и умножение чисел
Нужно реализовать сложение и умножение больших чисел. Есть идея, необходима помощь в реализации...

Длинная арифметика. Сложение длинных чисел
Добрый день, Киберфорум! Изучаю длинную арифметику и нашел вот такой простейший пример сложения...

Сложение огромных чисел. Длинная арифметика
Здравствуйте!Подскажите,пожалуйста,каким образом в паскале складывать огромные числа,которые...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.