Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Need help translating code

  1. Jan 30, 2005 #1
    I wrote an (small) AI script for twenty questions in perl, however i need the code translated into C++ (i ahve some knowledge of C++, but not enough to write this program). Thanx for the help:

    Code (Text):

    use warnings;

    $ans = 0;
    $qnumber = 1;

    while (($ans == 0)&& ($qnumber < 20)) {
        print "Ask a question: \n";
        $_ = <STDIN>;
        if (/end/ && /vowel/ && (/everything/ || /anything/)){
        print "You got it right!\n";
        $ans = 1;
        } elsif (/a$/ or /e$/ or /i$/ or /o$/  or /u$/ or /a\?$/ or /e\?$/ or /i\?$/ or /o\?$/  or /u\?$/ ) {
        print "Yes\n";
        } else {
        print "No\n";
        $qnumber ++ ;
        if ($qnumber == 20){
        print "You've run out of questions.  Better luck next time!\n";
  2. jcsd
  3. Jan 31, 2005 #2
    Or at least direct me to a resource that would cover everything needed to write this in C++?
  4. Jan 31, 2005 #3
  5. Jan 31, 2005 #4
    yeah the C++ tutorial here doesn't cover regular expressions and patterns, i already checked that. The code checks for a vowel at the end of whatever string is input into it.
  6. Jan 31, 2005 #5
    You don't need to use regular expressions in c in order to find substrings and characters.
    You can use the c functions strstr and strchr.

    By the way, the line in your perl program:

    Code (Text):
    elsif (/a$/ or /e$/ or /i$/ or /o$/  or /u$/ or /a\?$/ or /e\?$/ or /i\?$/ or /o\?$/  or /u\?$/ ) {
    would be better written:

    Code (Text):
  7. Jan 31, 2005 #6
    I'm rather new to perl, but yeah i have condensed it quite a bit from what i posted here.

    I have a very limited knowledge of C++ (i can write a program to solve equations, but thats about all). HOw do you use those functions?
  8. Jan 31, 2005 #7

    You don't need to use c++ to write a program like that. You can stick with plain c.
  9. Jan 31, 2005 #8
    most of the program is easy to change, but the checking for the expressions needs some more work. I do not know what the Perl expressions mean, especially (/everything/ || /anything/) seems mysterious to me, but anyway here is the C++ translation without the conditionals:

    Code (Text):

    #include <iostream>
    #include <string>
    using namespace std;

    int main()
      int ans = 0;
      int qnumber = 1;
      string question;

      while (ans == 0 && qnumber < 20) {
        cout << "Ask a question: " << endl;
        cin >> question;
        if (........){
        cout << "You got it right!" << endl;
        ans = 1;
        } elsif (........) {
        cout << "Yes" << endl;
        } else {
        cout << "No" << endl;
        if (qnumber == 20){
        cout << "You've run out of questions.  Better luck next time!" << endl;
    You can do that with:
    Code (Text):
    char c = question[strlen(question) - 1];

    if (c == 'a' || c == 'e' || c == 'u' || c == 'o' || c == 'i')
  10. Jan 31, 2005 #9
    Well, if it helps, this is not class work.

    It was a late night replacement for sleep (my insomnia is that bad). But i wanted to send it to a friend for him to toy around with, but i didn't know C++ well enough to write this (its the only language he's learned so far), so i had to write it in Perl.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook