Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ongelma hirsipuu pelissä

Blkout [11.02.2008 11:26:39]

#

Oli pakko pistää tämä tänne, koska en itse kyennyt korjaamaan virhettä. Ohjelma on vielä kesken, joten se ei toimi oikein vaikka menisi kääntäjästä läpi.
Tuli vahingossa 2 kertaa sama aihe, sori. -.-
eli virhe on seuraava:

35: error: invalid conversion from `char' to `char*'
35: error: initializing argument 1 of `std::string print(char*, std::string)'

mitä siis teen väärin?

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

string print(char usedcharacters[], string word);
string getrandomword(string word);
bool checkvalidcharacter(char character);
bool checkword(string gameword);

int main()
{
	const int maxsize = 100;
    int tries = 0;
    int characterN = 0;
    string word;
    string gameword;
    char character;
    char usedcharacters[maxsize];
    getrandomword(word);
    cout << "Welcome to hangman v.1.0" << endl;
    do
    {
        do
        {
            cout << "Give character (a-z): " << endl;
            cin >> character;
            checkvalidcharacter(character);
        }
        while(checkvalidcharacter == false);

        usedcharacters[characterN] = character;
        usedcharacters[characterN] + 1;
        print(usedcharacters[maxsize], word); <--- 35
        checkword(gameword);
    }
    while((checkword(gameword) == false) && (tries < 6));

    if(checkword(gameword) == true)
    {
        cout << "Congratulations! You have found the word!" << endl;
    }
    else if(tries >= 6)
    {
        cout << "Omg, you have killed the hangman" << endl;
    }
    return 0;
}

string print(char usedcharacters[],string word)
{
	string gameword;
    for(int a=0; a!='\0'; a++)
    {
        for(int b=0; b<word.length(); b++)
        {
            if(word[b] == usedcharacters[a])
            {
                cout << word[b];
            }

            else
            {
            cout << "-";
            }
        }
    }


	for(int c=0; c!='\0'; c++)
    {
        for(int d=0; d<word.length(); d++)
        {
            if(word[d] == usedcharacters[c])
            {
                gameword[d] = word[d];
            }

            else
            {
				gameword[d] = '-';
            }
        }
    }
    return gameword;
}

bool checkvalidcharacter(char character)
{
	char taulukko[26] = {'a','b','c','d', 'e','f','g','h', 'i','j','k','l', 'm','n','o','p', 'q','r','s','t', 'u','v','w','x', 'y','z'};
	for(int a=0; a<26; a++)
	{
		if(character == taulukko[a])
		{
			return true;
		}

	}
	return false;
}

string getrandomword(string word)
{
	int a  = rand() % 5;
	string  words[] = {"advanced", "professional", "advantageous", "programmer", "suitcase" };
	return words[a];
}

(Mod. Edit. Tolkkua rivien pituuksiin.)

TsaTsaTsaa [11.02.2008 11:40:35]

#

Ota tuosta 35 riviltä se [maxsize] pois, koska tarkoitus on välittää parametrina koko taulukko eikä suinkaan taulukon maxsize:s alkio, joka muutenkin ohi-indeksoisi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta