Java で CNF 演算子を実行しようとしていますが、等式でエラーが発生します。
まず、ほとんどのソフトウェアを作成しましたが、完全には作成しませんでした。
私のコードはここにあります:
import acm.program.*;
public class split extends ConsoleProgram{
public void run()
{
String veri = "(p or q or s or t or k) and (p or q)";
String yeni = tekrarsil(parcala(veri));
int []sayilar = new int[yeni.length()];
for (int i = 0; i < yeni.length(); i++) {
sayilar[i] = readInt("give a number for "+yeni.charAt(i)+" :");
}
for (int i = 0; i < sayilar.length; i++) {
println(sayilar[i]);
}
}
public String parcala(String veri)
{
String yenistr = "";
String yeni[] = veri.split("and");
for (int j = 0; j < yeni.length; j++) {
String yveri[] = yeni[j].split("or");
for (int i = 0; i < yveri.length; i++) {
yveri[i] = yveri[i].trim();
if(i==0){
yenistr = yenistr.concat(yveri[i].substring(1));
}else if(i==yveri.length-1){
yenistr = yenistr.concat(yveri[i].substring(0,yveri[i].length()-1));
}else{
yenistr = yenistr.concat(yveri[i]);
}
}
}
return (yenistr);
}
public String tekrarsil(String S)
{
for (int i = 0; i < S.length(); i++)
for (int k = i+1; k <= S.length()-1; k++){
if (S.charAt(i) == S.charAt(k))
{
S = S.substring(0,k)+ S.substring(k+1,S.length());
k--;
}
}
return S;
}
}
問題は平等です。
プログラムは、変数がtrue
またはであることを確認する必要がありますfalse
。
例えば :
(p or q or s or t or k) and (q or p)
このプログラムは次のようになります。
p : 1 の数を与える (ユーザーは数字の 1 ( true
) またはゼロ ( false
)
を与える) q の数を
与える : 0 s の数を与える : 1
t の数を
与える : 0 k の数を与える : 0
(変数が複数使用する場合、プログラムは 1 回尋ねます)
これらの変数を見ると、(1 または 0 または 1 または 0 または 0) と (1 または 0) が true を返すことがわかりますが、これはできません。やり方がわかりません。
幸運をお祈りしています。