С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
dimon2
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 6
1

Найти сумму пяти двоичных чисел. Найдите ошибку

25.12.2012, 13:03. Просмотров 471. Ответов 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
uses crt;
var n1,n2,n3,n4,n5: word;
    s: string;
 
function Dec2Bin(a:integer):string;
var
   i:integer;
   as,j:string;
begin
     as:='';
     while a<>0 do
           begin
                i:=a mod 2;
                str(i,j);
                as:=j+as;
                a:=a div 2;
           end;
     Dec2Bin:=as;
end;
 
function Bin2Dec(B : string) : Word;
var
  Power, D : Word;
  I : Byte;
begin
  Power := 1;
  D := 0;
  for I := Length(B) downto 1 do
  begin
    if B[I] = '1' then D := D + Power;
    Power := 2 * Power;
  end;
  Bin2Dec := D;
end;
 
procedure summ(a,b:string; var c:string);
var
   vume:string;
   i,n:integer;
begin
     c:='';
     vume:='0';
     while length(a)<>length(b) do
           begin
                if length(a)>length(b) then
                   b:='0'+b;
                if length(a)<length(b) then
                   a:='0'+a;
     end;
 
     for i:=length(a) downto 1 do
         begin
              if (a[i]='0') and (b[i]='0') then
                 begin
                      c:=vume+c;
                      vume:='0';
                 end
              else
                 if (a[i]='1') and (b[i]='1') then
                    begin
                      c:=vume+c;
                      vume:='1';
                    end
                 else
                     if (a[i]='1') or (b[i]='1') then
                        begin
                             if vume='0' then
                                c:='1'+c
                             else
                                 c:='0'+c;
                        end;
         end;
   c:=vume+c;
   while length(c)<>8 do
         begin
              if length(c)<8 then
                 c:='0'+c;
              if length(c)>8 then
                 delete(c,1,1);
         end;
end;
 
begin
 clrscr;
  write('пїЅпїЅпїЅпїЅпїЅпїЅ 1-пїЅ пїЅб«®: ');
  readln(n1);
  write('пїЅпїЅпїЅпїЅпїЅпїЅ 2-пїЅ пїЅб«®: ');
  readln(n2);
  write('пїЅпїЅпїЅпїЅпїЅпїЅ 3-пїЅ пїЅб«®: ');
  readln(n3);
  write('пїЅпїЅпїЅпїЅпїЅпїЅ 4-пїЅ пїЅб«®: ');
  readln(n4);
  write('пїЅпїЅпїЅпїЅпїЅпїЅ 5-пїЅ пїЅб«®: ');
  readln(n5);
  summ(dec2bin(n1),dec2bin(n2),s);
  summ(s,dec2bin(n3),s);
  summ(s,dec2bin(n4),s);
  summ(s,dec2bin(n5),s);
  writeln('�㬬� 5 �ᥫ = ',s);
 
 readln;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 13:03
Ответы с готовыми решениями:

Подскажите ошибку :Найти сумму квадратов всех целых чисел от 10 до 50:
На Паскале; Program Pr; Uses crt; var a,s integer ; begin clrscr; Fоr...

Найти меньшее из пяти чисел, используя процедуру нахождения меньшего из трёх чисел
4. Даны пять натуральных чисел b1,b2,b3,b4,b5. Найти МЕНЬШЕЕ из них, используя...

Введите 10 чисел с клавиатуры, найдите сумму и количество отрицательных чисел
Введите 10 чисел с клавиатуры, найдите сумму и количество отрицательных чисел.

найти сумму первых пяти элементов массива
найти сумму первых пяти элементов массива

Найти сумму и количество компонент файла, кратных пяти.
Создать файл целых чисел. Найти сумму и количество компонент кратных пяти. Я...

1
dimon2
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 6
25.12.2012, 14:42  [ТС] 2
Нужно дописать что бы складывать не 2 двоичных чисел, а сразу 5
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
var
  sr, sf, ss: string;
function BinAdd(s1, s2: string): string;
var
  s: string;
  l, i, d, carry: byte;
begin
  if length(s1) > length(s2) then
    while length(s2) < length(s1) do
      s2 := '0' + s2
  else
    while length(s1) < length(s2) do
      s1 := '0' + s1;
  l := length(s1);
  s := '';
  carry := 0;
  for i := l downto 1 do
  begin
    d := (ord(s1[i]) - ord('0')) + (ord(s2[i]) - ord('0')) + carry;
    carry := d div 2;
    d := d mod 2;
    s := char(d + ord('0')) + s;
  end;
  if carry <> 0 then
    s := '1' + s;
  BinAdd := s;
end;
begin
  writeln('введите 1-е двоичное число:');
  readln(sf);
  writeln('введите 2-е двоичное число:');
  readln(ss);
  sr := BinAdd(sf, ss);
  writeln('результат сложения = ', sr);
end.

 Комментарий модератора 
dimon2, прекращайте нарушать правила форума, дублируя темы.
считайте это последним предупреждением.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 14:42

Найдите сумму четных чисел от 1 до n
Найдите сумму четных чисел от 1 до n, где n &lt;=100 и вводится с клавиатуры.

Найдите сумму четных чисел ряда
Не понимаю в паскале,поэтому прошу помочь мне с решением этих задач: Введите...

Определить максимум из пяти чисел.Найти произведение 4-ех остальных
Умножает максимум вместе с остальными числами, а умножать не должен как...


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

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

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