fork download
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. string S();
  8. string A();
  9. string B();
  10.  
  11. int main(){
  12.  
  13. int n;
  14. int i;
  15.  
  16. printf ("Program wypisujacy n lancuchow z jezyka opisanego za pomoca gramatyki bezkontekstowej: \n S->aB|bA A->a|As|bAA B->b|bS|aBB. \n");
  17.  
  18. printf ("Prosze podac ile lancuchow tej gramatyki bezkontekstowej ma wypisac program\n");
  19.  
  20. scanf ("%d", &n);
  21.  
  22. printf ("Program wypisze %d lancuch/y/ow",n);
  23.  
  24. for (i=1; i<=n; i++){
  25. printf ("%s\n",S().c_str());
  26. }
  27.  
  28. return 0;
  29. }
  30.  
  31. string S(){
  32. if (rand()%2){
  33. return "a"+B();
  34. }else{
  35. return "b"+A();
  36. }
  37. }
  38.  
  39. string A(){
  40. int choice;
  41. choice = rand()%3;
  42. if (choice == 0){
  43. return "a";
  44. }else if (choice ==1){
  45. return A()+"s";
  46. }else {
  47. return "b"+A()+A();
  48. }
  49. }
  50.  
  51. string B(){
  52. int choice;
  53. choice = rand()%3;
  54. if (choice == 0){
  55. return "b";
  56. } else if (choice ==1){
  57. return "b"+S();
  58. }else{
  59. return "a"+B()+B();
  60. }
  61. }
Success #stdin #stdout 0s 3436KB
stdin
5
stdout
Program wypisujacy n lancuchow z jezyka opisanego za pomoca gramatyki bezkontekstowej: 
 S->aB|bA  A->a|As|bAA   B->b|bS|aBB. 
Prosze podac ile lancuchow tej gramatyki bezkontekstowej ma wypisac program
Program wypisze 5 lancuch/y/owabababba
abbbbbabbassssababaasssbaassbaasss
aaababbaaaaababbasbbbaababaababbbbabbbabbaasbaasssasbbbbbaabbabbbbabaasssbaassabassbbbbbbbbbbbabbbaabbaassbaassbasasassbbbbabbbabaabbbbbbasbabaasssaaassbbabasbbbabbaabaasbbasasassasaaaaabbaassassabbassaasabbaaassbabbbasasbabbbaasbabbasbbabbabaassbaassssasasssasbbbbbasasssssssssbbbaassbaassbbabbbbabbbbbasbabassasaasassbbaasssssbaaasbaasassssbbbaassbbasasbbabaassassbbbaaabbbababbbaabbbbababaabbbaabbbasbaaasassassasbabaassabaassassbbbbbaabbbasbaassbaasasssbbbbaaabasbbbaassasbabbababbbabassbbabaassssbaasssssssssaassbbasbaaassasasasssbasaassasssbbbbasbbaaabaassbbbasbbbabasbabbaasasbbbbasbaassasssaasabbbaabaaasbbbbbaasasbassassssaasbbbaasaasassbbbbaaabababaassssssbbabbabaasasssasssasbaasassssbbabaabababaabbbaabbbbbbaasbbbasaabbasbaassasssbaaasbbbbabbbbbbbasssabaasbaabbaasaababbbbabbaasasabaassassa
abbbbababbaassbaassssa
bbbabasbabbasssasaas