fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int i,j,choice;
  6. int nt[]={0,1};
  7. int x1[]={0,0,1,1};
  8. int x2[]={0,1,0,1};
  9. int b,w1,w2,nw,ip,op;
  10. w1=w2=b=nw=0;
  11. int dw1,dw2,dnw,db;
  12. bool f[]={false,false,false,false};
  13. bool ch;
  14. cout<<"PERCEPTRON METHOD\n1-AND\n2-OR\n3-NOT\nEnter your choice: ";
  15. cin>>choice;
  16. switch(choice)
  17. {
  18. case 1:
  19. {
  20. cout<<"x1\t"<<"x2\t"<<"b\t"<<"t\t"<<"i/p\t"<<"o/p\t"<<"dw1\t"<<"dw2\t"<<"db\t"<<"nw1\t"<<"nw2\t"<<"nb\t"<<endl;
  21. int t[]={0,0,0,1};
  22. do
  23. {
  24. for(i=0;i<4;i++)
  25. {
  26. ip=x1[i]*w1+x2[i]*w2+b;
  27. if(ip>=0)
  28. op=1;
  29. else
  30. op=0;
  31. if(t[i]==op)
  32. {
  33. f[i]=true;
  34. dw1=dw2=db=0;
  35. }
  36. else
  37. {
  38. dw1=(t[i]-op)*x1[i];
  39. dw2=(t[i]-op)*x2[i];
  40. db=t[i]-op;
  41. }
  42. w1+=dw1;
  43. w2+=dw2;
  44. b+=db;
  45. cout<<x1[i]<<"\t"<<x2[i]<<"\t"<<1<<"\t"<<t[i]<<"\t"<<ip<<"\t"<<op<<"\t"<<dw1<<"\t"<<dw2<<"\t"<<db<<"\t"<<w1<<"\t"<<w2<<"\t"<<b<<"\t\n";
  46. }
  47. ch=true;
  48. for(j=0;j<4;j++)
  49. {
  50. if(f[j]==false)
  51. ch=false;
  52. f[j]=false;
  53. }
  54. cout<<"\n";
  55. }while(!ch);
  56. cout<<"End w1 w2 b: "<<w1<<" "<<w2<<" "<<b;
  57. }break;
  58. case 2:
  59. {
  60. cout<<"x1\t"<<"x2\t"<<"b\t"<<"t\t"<<"i/p\t"<<"o/p\t"<<"dw1\t"<<"dw2\t"<<"db\t"<<"nw1\t"<<"nw2\t"<<"nb\t"<<endl;
  61. int t[]={0,1,1,1};
  62. do
  63. {
  64. for(i=0;i<4;i++)
  65. {
  66. ip=x1[i]*w1+x2[i]*w2+b;
  67. if(ip>=0)
  68. op=1;
  69. else
  70. op=0;
  71. if(t[i]==op)
  72. {
  73. f[i]=true;
  74. dw1=dw2=db=0;
  75. }
  76. else
  77. {
  78. dw1=(t[i]-op)*x1[i];
  79. dw2=(t[i]-op)*x2[i];
  80. db=t[i]-op;
  81. }
  82. w1+=dw1;
  83. w2+=dw2;
  84. b+=db;
  85. cout<<x1[i]<<"\t"<<x2[i]<<"\t"<<1<<"\t"<<t[i]<<"\t"<<ip<<"\t"<<op<<"\t"<<dw1<<"\t"<<dw2<<"\t"<<db<<"\t"<<w1<<"\t"<<w2<<"\t"<<b<<"\t\n";
  86. }
  87. ch=true;
  88. for(j=0;j<4;j++)
  89. {
  90. if(f[j]==false)
  91. ch=false;
  92. f[j]=false;
  93. }
  94. cout<<"\n";
  95. }while(!ch);
  96. cout<<"End w1 w2 b: "<<w1<<" "<<w2<<" "<<b;
  97. }break;
  98. case 3:
  99. {
  100. cout<<"x\t"<<"b\t"<<"t\t"<<"i/p\t"<<"o/p\t"<<"dw\t"<<"db\t"<<"nw\t"<<"nb\t\n";
  101. int t[]={1,0};
  102. do
  103. {
  104. for(i=0;i<2;i++)
  105. {
  106. ip=nt[i]*nw+b;
  107. if(ip>=0)
  108. op=1;
  109. else
  110. op=0;
  111. if(t[i]==op)
  112. {
  113. f[i]=true;
  114. dnw=db=0;
  115. }
  116. else
  117. {
  118. dnw=(t[i]-op)*nt[i];
  119. db=t[i]-op;
  120. }
  121. nw+=dnw;
  122. b+=db;
  123. cout<<nt[i]<<"\t"<<1<<"\t"<<t[i]<<"\t"<<ip<<"\t"<<op<<"\t"<<dnw<<"\t"<<db<<"\t"<<nw<<"\t"<<b<<"\t\n";
  124. }
  125. ch=true;
  126. for(j=0;j<2;j++)
  127. {
  128. if(f[j]==false)
  129. ch=false;
  130. f[j]=false;
  131. }
  132. cout<<"\n";
  133. }while(!ch);
  134. cout<<"End w b: "<<nw<<" "<<b;
  135. }break;
  136. default:
  137. cout<<"WRONG INPUT";
  138. }
  139. }
  140.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
PERCEPTRON METHOD
1-AND
2-OR
3-NOT
Enter your choice: WRONG INPUT