Другие языки программирования и технологии

Программирование на Паскале

Привет, помогите срочно решить задачу, друг на экзамене сидит! Вот условие - задать два массива, состоящих из 0 и 1. сформировать третий массив по правилам сложения двоичных чисел
Не стандартный метод конечно, но работает правильно:

var a,b,c:array[1..100] of integer;
k,n,tmp:integer;
begin
randomize;
write('vvedite chislo elementov: ');readln(n);
for k:=1 to n do
begin
a[k]:=random(2);
b[k]:=random(2);
end;
tmp:=n;
for k:=1 to n do
begin
c[k]:=a[k]+b[k];
if c[k]=2 then tmp:=tmp+1 else if c[k]=3 then tmp:=tmp+2
end;
for k := 1 to n do
write(a[k]);writeln;
for k := 1 to n do
write(b[k]);writeln;
for k := 1 to tmp do
begin
if c[k]=2 then begin c[k]:=0; inc(c[k+1]); end else if c[k]=3 then begin
c[k]:=1;inc(c[k+1]);inc(c[k+2]);
end;
write(c[k]);
end;
readln
end.
Евгений Горенко
Евгений Горенко
1 049
Лучший ответ
var
A, B, C : array [0..7] of Byte;
N, P : Byte;
begin
Write('Введите через пробел 8 значений 0/1 массива A: '); ReadLn(A[7], A[6], A[5], A[4], A[3], A[2], A[1], A[0]);
Write('Введите через пробел 8 значений 0/1 массива B: '); ReadLn(B[7], B[6], B[5], B[4], B[3], B[2], B[1], B[0]);
for N := 0 to 7 do if Not(A[N] in [0, 1]) or Not(B[N] in [0, 1]) then begin WriteLn('Неверные данные. Нужно вводить только 0 или 1.'); Halt; end;
P := 0;
for N := 0 to 7 do begin P := P + A[N] + B[N]; C[N] := P mod 2; P := P div 2; end;
Write('Результат сложения: '); for N := 7 downto 0 do Write(C[N]:2); WriteLn;
if P > 0 then WriteLn('Переполнение: ', P);
end.
Антон Литвинов
Антон Литвинов
82 601