Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2009, 11:27   #1
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
Стрелка TurboPascal: логические операции над целыми числами плюс перевод....

Доброго времени суток Вам.
1. Ввести операнды А, В, С побайтно в двоичном коде. Перевести их в 10-ичную систему счисления и выполнить операции: А*сложение по модулю 2*В*стрелка Пирса*С в базисах И-НЕ, ИЛИ-НЕ.
2. Результат представить в 2-ичном коде.
Очень интересная задача....
Тип boolean с помощью которого нужно выполнить операции невозможно перевести ни в одну СС, да что там перевести, даже при readln(A) выдает ошибку "Cannot read and write this type", а если взять longint или integer то как же над целыми числами выполнять логические операции...
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 21.10.2009, 11:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А причем тут Булеан?
Тебе нужно ввести (судя по заданию) строку 110010101, и потом е преобразовать в целое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2009, 11:51   #3
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

вот моя робкая попытка написать эту прогу...

Код:
program lr_3;
var
A,B,C,F,rez:longint;
x,y,z,t:longint;
s0,s1,s2,s3,s4,s5,s6,s7,
r0,r1,r2,r3,r4,r5,r6,r7,
d0,d1,d2,d3,d4,d5,d6,d7:longint;
begin
r0:=1; r1:=2; r2:=r1*r1; r3:=r2*r1;
r4:=r2*r2; r5:=r3*r2; r6:=r3*r3; r7:=r6*r2;
write('Vvedite A-> ');
readln(A);
x:=A;
d0:=x mod 10; x:=x div 10;
d1:=x mod 10; x:=x div 10;
d2:=x mod 10; x:=x div 10;
d3:=x mod 10; x:=x div 10;
d4:=x mod 10; x:=x div 10;
d5:=x mod 10; x:=x div 10;
d6:=x mod 10;x:=x div 10;
d7:=x mod 10;
x:=A;
rez:=d6*r6+d5*r5+d4*r4+d3*r3+d2*r2+d1*r1+d0*r0;
writeln(rez);
write('Vvedite B-> ');
readln(B);
y:=B;
d0:=y mod 10; y:=y div 10;
d1:=y mod 10; y:=y div 10;
d2:=y mod 10; y:=y div 10;
d3:=y mod 10; y:=y div 10;
d4:=y mod 10; y:=y div 10;
d5:=y mod 10; y:=y div 10;
d6:=y mod 10; y:=y div 10;
d7:=y mod 10;
y:=B;
rez:=d7*r7+d6*r6+d5*r5+d4*r4+d3*r3+d2*r2+d1*r1+d0*r0;
writeln(rez);
write('Vvedite C-> ');
readln(C) ;
z:=C;
d0:=z mod 10; z:=z div 10;
d1:=z mod 10; z:=z div 10;
d2:=z mod 10; z:=z div 10;
d3:=z mod 10; z:=z div 10;
d4:=z mod 10; z:=z div 10;
d5:=z mod 10; z:=z div 10;
d6:=z mod 10; z:=z div 10;
d7:=z mod 10;
z:=C;
rez:=d6*r6+d5*r5+d4*r4+d3*r3+d2*r2+d1*r1+d0*r0;
writeln(rez);
F:=A xor (not(B or C));
writeln(F);
t:=F;
s0:=t mod 2; t:=t div 2;
s1:=t mod 2; t:=t div 2;
s2:=t mod 2; t:=t div 2;
s3:=t mod 2; t:=t div 2;
s4:=t mod 2; t:=t div 2;
s5:=t mod 2; t:=t div 2;
s6:=t mod 2; t:=t div 2;
s7:=t mod 2;
t:=F;
writeln(s7,s6,s5,s4,s3,s2,s1,s0);
readln;
end.
но при вычислении он полный бред выдает, огромные числа с минусами...
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 21.10.2009, 11:54   #4
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

пыталась также делать с типом данных string и с массивом (вводя каждый элемент как 0 или 1), но в обоих случаях либо сам Паскаль выдает ошибки, либо в результате нереальные миллионы получаются...
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 21.10.2009, 12:00   #5
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

вот еще один код, как раз через string, тут с переводом всё шикарно, но я сильно сомневаюсь что паскаль захочет мне считать уравнение...

Код:
program lr_3;
var
A,B,C:string;
function Perevod(x:string):longint;
const d:array[0..1] of char=('0','1');
var
res, ves:longint;
i,j:byte;
begin
res:=0; ves:=1;
for i:=length(x) downto 1 do begin
j:=0;
while (d[j]<>x[i]) do inc(j);
res:=res+ves*j;
ves:=ves*2;
end;
Perevod:=res;
end;
Begin
write('Vvedite 2-ichnoe chislo A-> ');
readln(A);
writeln(Perevod(A) );
write('Vvedite 2-ichnoe chislo B-> ');
readln(B);
writeln(Perevod(B) );
writeln('Vvedite 2-ichnoe chislo C-> ');
readln(C);
writeln(Perevod(C) );
readln;
end.
з.ы.: надеюсь меня не забанят за такие огромные сообщения))))
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл f, компонент которого являются целыми числами... Наталья111 Общие вопросы Delphi 7 30.05.2011 15:34
Доступ к полям компонента TTable с большими целыми числами AleksP Общие вопросы Delphi 6 13.10.2008 18:41
Операции со сверхдлинными целыми JET_FLASH Помощь студентам 2 10.10.2007 17:06