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.)
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.