Другие языки программирования и технологии
Программирование на Паскале
Привет, помогите срочно решить задачу, друг на экзамене сидит! Вот условие - задать два массива, состоящих из 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.
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.
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.
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.
Похожие вопросы
- Помощь по информатике. 9 класс. Программирование .Язык Паскаль. Ветвление
- Информатика, программирование на Паскале
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
- Задание_Кто соображает в программировании на паскале? Надо написать небольшую программу, а я в предмете плохо понимаю))
- Помогите с программированием на Паскаль!
- задача по программированию, ТУРБО ПАСКАЛЬ.
- Недавно начал изучать программирование с паскаля.Помогите сделать программу которой я ввел бы 3 числа или больше а она
- Язык программирования Фри Паскаль, какой оператор применить? см. далее
- программирование в паскале
- помогите решить задачи по программированию в ПАСКАЛЕ!!!