简体   繁体   中英

Why can't I successfully run the following hangman game console code? I could successfully run the same code in devc++

error message.png

These are the errors

1."message": "cannot open source file \"iostream\"",

2.#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (C:\Users\USER\first.cpp).

3.cannot open source file "cstdlib"

4.cannot open source file "ctime"

5.cannot open source file "string"

AND

This is my code

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

const int MAX_TRIES=5;

int letterFill (char, string, string&);

int main ()
{
    string name;
    char letter;
    int num_of_wrong_guesses=0;
    string word;
    string words[] =
    {
        "india",
        "pakistan",
        "nepal",
        "malaysia",
        "philippines",
        "australia",
        "iran",
        "ethiopia",
        "oman",
        "indonesia"
    };

    //choose and copy a word from array of words randomly
    srand(time(NULL));
    int n=rand()% 10;
    word=words[n];

    // Initialize the secret word with the * character.
    string unknown(word.length(),'*');

    // welcome the user
    cout << "\n\nWelcome to hangman...Guess a country Name";
    cout << "\n\nEach letter is represented by a star.";
    cout << "\n\nYou have to type only one letter in one try";
    cout << "\n\nYou have " << MAX_TRIES << " tries to try and guess the word.";
    cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

    // Loop until the guesses are used up
    while (num_of_wrong_guesses < MAX_TRIES)
    {
        cout << "\n\n" << unknown;
        cout << "\n\nGuess a letter: ";
        cin >> letter;
        // Fill secret word with letter if the guess is correct,
        // otherwise increment the number of wrong guesses.
        if (letterFill(letter, word, unknown)==0)
        {
            cout << endl << "Whoops! That letter isn't in there!" << endl;
            num_of_wrong_guesses++;
        }
        else
        {
            cout << endl << "You found a letter! Isn't that exciting!" << endl;
        }
        // Tell user how many guesses has left.
        cout << "You have " << MAX_TRIES - num_of_wrong_guesses;
        cout << " guesses left." << endl;
        // Check if user guessed the word.
        if (word==unknown)
        {
            cout << word << endl;
            cout << "Yeah! You got it!";
            break;
        }

    }
    if(num_of_wrong_guesses == MAX_TRIES)
    {
        cout << "\nSorry, you lose...you've been hanged." << endl;
        cout << "The word was : " << word << endl;
    }
    cin.ignore();
    cin.get();
    return 0;
}

/* Take a one character guess and the secret word, and fill in the
 unfinished guessword. Returns number of characters matched.
 Also, returns zero if the character is already guessed. */

int letterFill (char guess, string secretword, string &guessword)
{
    int i;
    int matches=0;
    int len=secretword.length();
    for (i = 0; i< len; i++)
    {
        // Did we already match this letter in a previous guess?
        if (guess == guessword[i])
            return 0;

        // Is the guess in the secret word?
        if (guess == secretword[i])
        {
            guessword[i] = guess;
            matches++;
        }
    }
    return matches;
}

Your compiler cannot find the header files that you're including, though since you're just including headers from the standard library, there's most likely something wrong with your installation, or your environment. It could be that you're just confusing a C compiler with a C++ compiler (such as clang and clang++), or perhaps you're using a compiler that doesn't actually ship with a standard library, as is also the case with clang on Windows, which uses MSVC's standard library.

You can figure that out by trying to include a header from the C standard library, such as "stdlib.h" , and see if the compiler can find it. If it can, then you're just using the wrong compiler, and if it can't, then you either lack a standard library, or your environment isn't set up properly and your compiler can't find it, but without knowing what compiler you're using, and how you're invoking it, I can't really give a detailed answer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM