Gioco dell'impiccato

di il
4 risposte

Gioco dell'impiccato

Allora il codice è qst e praticamente qnd provo ad inserire la parola mi dice direttamente k ho sbagliato senza farmi inserire la parola... Perchè????????
#include<iostream>
#include<cstring>

using namespace std;

void parola (char[],char[],int, int&);

void lettera (char A[], char B[], int max, int& count) {
	if (count!=7) {
	cout<<"Inserisci la lettera "<<endl;
	char x;
	cin>>x;
	count++;
	for (int i=0;i<max;i++) {
		if (A[i]==x)
		B[i]=x;
	}
	cout<<B<<endl;
	cout<<"Premi 1 se vuoi tentare una lettera ancora o 2 per provare la parola ";
	int y;
	cin>>y;
	if (y==1)
	lettera (A,B,max,count);
	else if (y==2)
	parola (A,B,max,count);
	else 
	cout<<"Scelta sbagliata ";
	} else {
		cout<<"Hai perso ";
	}
}

void parola (char A[], char B[], int max, int& count) {
	if (count!=7) {
		cout<<"Inserisci la parola "<<endl;
		char C[max];
		cin.getline(C,max);
		count++;
		int a;
		a=strcmp(A,C);
		if (a==0)
		cout<<"Hai vinto!";
		else
		cout<<"Sbagliato ";
	}
	else
	cout<<"Hai perso ";
}

	
	

int main () {
	int max=100;
	int count=0;
	char A[max];
	char B[max];
	cin.getline(A,max);
	max=strlen(A);
	for (int i=0;i<max;i++) {
		B[i]='_';
	}
	cout<<B;
	cout<<"Premi 1 per provare una lettera o 2 per indovinare la parola ";
	int x;
	cin>>x;
	if (x==1)
	lettera(A,B,max,count);
	else if (x==2)
	parola(A,B,max,count);
	else 
	cout<<"Scelta non valida "<<endl;
	return 0;
}

4 Risposte

  • Re: Gioco dell'impiccato

    Ciao, puoi provare a stampare il contenuto di A e C per vedere dove sono le differenze nelle 2 stringhe. Per sicurezza ti conviene anche vedere che valore restituisce la strcmp. Se vuoi una mano posta il contenuto di queste stampe e vediamo di trovare il problema
  • Re: Gioco dell'impiccato

    @veget

    Il problema è che cin lascia il carattere '\n' nel iostream e getline (dopo la cin) se lo becca come fosse un input.
    Esempio:
    
    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int main (void)
    {
      
      string str;
      int x;
      
      cout << "Enter the number :";
      cin >> x;
      cout << "Enter the string :";
      getline (cin, str);
    
      cout << "the number is: "<<x<<endl;
      cout << "the string is: "<<str<<endl;
      
    }
    
    Per risolvere il problema è sufficiente pulire il buffer prima di usare la getline con cin.ignore();

    ~Max~
  • Re: Gioco dell'impiccato

    Mah, in teoria le funzioni di c++ dovrebbero essere più usabili rispetto a quelle di c .. Meglio usare le vecchie e consolidate scanf ihihih
  • Re: Gioco dell'impiccato

    Grazie ragà ora funziona......
Devi accedere o registrarti per scrivere nel forum
4 risposte