Det jag skulle göra är nog att sätta varje '?' som en variabel och sedan jämföra gissningen med varje variabel och därefter sätta variabeln = den rätta bokstaven.
Ett annat sätt skulle vara att sätta hela '?????' som en string och sedan köra en for-sats som söker igenom ordet efter hur många bokstäver det fins( l i ditt fall) och sedan sätta den bokstaven på rätt plats i stringen
Har testat detta men kört fast. Min lärare tipsade om att använda
string find och string replace, och göra en for sats som söker igenom stringen flera gånger(ifall det finns flera av samma) men har som sagt inte lyckats med det. Nån som vet hur man gör?
Ursäkta om jag är lite korkad med jag förstod inte riktigt vad du gjorde, men om det skall kunna göra en return måste man väl ha det i en egen funktion?
Men är nybörjare på programering så
Ursprungligen inskrivet av Rikard.J Ursäkta om jag är lite korkad med jag förstod inte riktigt vad du gjorde, men om det skall kunna göra en return måste man väl ha det i en egen funktion?
Men är nybörjare på programering så
Nja, om du alltså kör
std::string s = "hallå";
int a, b, c;
a = s.find('l');
b = s.find('l', 3);
c = s.find('l', 4);
så kommer a, b och c innehålla 2, 3 och std::string::npos. Detta kan man till exempel använda för att med en loop hitta alla förekomster av ett tecken...
Här har du ett fungerande skal för hangman.
Jag gjorde det så enkelt jag kunde för jag antar att du är nybörjare inom c++.
Jag föreslår att du sätter dig och kollar igenom koden ordentligt och lär dig vad som händer, om detta är en skoluppgift som du ska klara av så kommer du inte långt utan hjälp om du bara förlitar dig på andra
#include <iostream>
#include <String>
using namespace std;
int main()
{
//Det rätta ordet
string answer = "hello";
string result;
int count;
//Sätter in frågetecken i det "okända" ordet
for(int i=0; i<answer.length(); i++)
result.push_back('?');
char guess = 'x';
while(true)
{
system("cls");
cout << "The word:" << result <<endl;
cout << "Input guess: ";
//Frågar efter din gissning
cin >> guess;
//Ersätter alla '?' med din gissning om den stämmer överens med svaret
for(int i=0; i<answer.length(); i++)
{
if(answer.at(i) == guess)
{
result.at(i) = guess;
}
}
count = 0;
//Kollar om det finns några frågetecken kvar i strängen
for(int i=0; i<result.length(); i++)
{
if(result.at(i) == '?')
count++;
}
//Om det inte gör det så avslutas spelet
if(count == 0)
{
system("cls");
cout << "The word was: " << result << endl;
cout << "You won the game!" << endl;
system("pause");
break;
}
}
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout<<"V\x84lkommen till h\x84nga gubbe."<<endl <<"Mata in ditt hemliga ord: ";
string hemligtOrd;
char gissning;
int ratt;
cin >>hemligtOrd;
string utOrd(hemligtOrd.length(),'?');
system("CLS");
int fel=0;
int klar=0;
while(fel<11&&klar==0){
cout<<utOrd<<endl<<"Mata in din gissning:";
cin>>gissning;//matar in gissningen
system("CLS");
std::string s = hemligtOrd;
int a=0, n=0, j=0;
while(a!=-1){
a = s.find(gissning, n);
utOrd[a]= gissning;
n=a;
n++;
j++;
}
if (j==1&&a==-1){
fel++;
cout<<"Du har gissat fel "<<fel<<" g\x86nger: " <<endl;
}
if(utOrd==hemligtOrd){
cout<<"Grattis du har gissat r\x84tt"<<endl;
klar=1;
}
if(fel==11){
cout<<"tyv\x84rr du har gissat fel för många g\x86nger"<<endl;
}
}
system("PAUSE");
return 0;
}