![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
помогите доделать.задание такое нужно вывести таблицу значений истинности для заданной функции.
я вот уже почти написал прогу я работаю в ней только со строками в начале в заданной функции вывожу все возможные варианты значений тоесть допустим функция A*B я доделал задачу до того этапа что она должна выводить вот это 0*1 1*0 1*1 0*0 тоесть перебирает все возможные варианты но тут и возникает проблема прога почемуто выводит 0*0 0*0 0*0 0*0 и я не могу понять почему вродебы все правильно мнеб только исправить это а дальше я знаю как делать вот прога {colichestvo perem}
function findvar(s:string):string;
var
result:string;
ch:char;
begin
result:='';
for ch:='A' to 'Z' do
if pos(ch,s)>0 then
result:=result+ch;
findvar:=result;
end;
{perevod v 2 sis}
function inttobin(n,k:longint):string;
var
s,d: String;
i,c:integer;
const
radix=2;
digit: string[10]='0123456789';
begin
s:='';
D:='';
{if N<K then
begin
c:=K-n;
for i:=1 to c do
d:=d+'0';
end;}
repeat
s:=digit[(n mod radix)+1]+s;
n:=n div radix;
until n=0;
if k-length(s)>0 then
begin
c:=k-length(s);
for i:=1 to (c-1) do
d:=d+'0';
end;
d:=d+s;
inttobin:=d;
end;
{zamena v stroke}
procedure replase(sold,snew:string;var s:string);
var n:integer;
begin
while pos(sold,s)>0 do
begin
n:=pos(sold,s);
delete(s,n,length(sold));
insert(snew,s,n);
end;
end;
{colichestvo vozmoghnih znaheniy}
function voz(k:integer):integer;
var
q,c:integer;
begin
c:=1;
for q:=1 to K do begin
C:=c*2;
end;
voz:=c;
end;
{osnovnaya programma}
var
s,x,z,svar:string;
I,k,e,j:integer;
begin
writeln('ўўҐ¤ЁвҐ дгЄжЁо');
readln(s);
z:=s;
svar:='';
x:=findvar(s);
K:=voz(length(X));
for i:=0 to (K-1) do
begin
svar:=inttobin(i,k);
for j:=1 to length(X) do
begin
replase(x[j],svar[j],z);
writeln(z);
end;
end;
{replase('A','0',s);
writeln(s);}
readln;
end.
помогите пожалуйстя ![]() Код function inttobin(n,k:longint):string; var s,d: String; i,c:integer; const radix=2; digit: string[10]='0123456789'; begin s:=''; D:=''; {if N<K then begin c:=K-n; for i:=1 to c do d:=d+'0'; end;} repeat s:=digit[(n mod radix)+1]+s; n:=n div radix; until n=0; if k-length(s)>0 then begin c:=k-length(s); for i:=1 to (c-1) do d:=d+'0'; end; d:=d+s; inttobin:=d; end; Сообщение отредактировано: blackhard - 12.11.2007 22:59 |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Замени:
svar:=inttobin(i,k);
наsvar:=inttobin(i,length(x));
а то выравнивается не на кол-во переменных, а на хз что ![]() |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
blackhard, посмотри здесь:
http://volvo71.narod.ru/tasks.htm#bool_func_table |
blackhard |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
спасибо все оказалось просто сделал у себя как вэтой проге для дополнения нулями отдельную функцию и все заработало ![]() |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 13:38 |