Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите доделать задачу на булевские функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
blackhard
помогите доделать.задание такое нужно вывести таблицу значений истинности для заданной функции.
я вот уже почти написал прогу я работаю в ней только со строками в начале в заданной функции вывожу все возможные варианты значений тоесть допустим функция 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.


помогите пожалуйстя smile.gif проблема в этой функции а именно с добавлением нулей ночето не получается исправить
Код
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;
Malice
Замени:
svar:=inttobin(i,k);
на
svar:=inttobin(i,length(x));

а то выравнивается не на кол-во переменных, а на хз что smile.gif
volvo
blackhard, посмотри здесь:
http://volvo71.narod.ru/tasks.htm#bool_func_table
blackhard
Цитата(volvo @ 12.11.2007 23:12) *

blackhard, посмотри здесь:
http://volvo71.narod.ru/tasks.htm#bool_func_table

спасибо все оказалось просто сделал у себя как вэтой проге для дополнения нулями отдельную функцию и все заработало smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.