Jump to content

Comparar vector de caracteres!


speaker87
 Share

Recommended Posts

Boas

A minha dúvida é a seguinte!

Tenho 2 strings que pretendo comparar!

bool jogo::Compara()
{		


	size_t length;
	char m_palavra[5];
	char buffer[5];
	cout << "Jogador 1 Introduza uma palavra:" << endl;
	cin >> m_palavra [N];

	length=Matrizj2[0].copy(buffer,5,0);

	buffer[length]='\0';
	cout << "A palavra e: " << buffer << "\n";
	int quantos=0;

	for(int i=0;i<length;i++)
	{
		strcmp(m_palavra[i],buffer[i]);
		quantos++;

	}
	cout << "acertou" << quantos << endl;



	return true;


}

Quero comparar posicao a posicao dos vectores de caracteres e no fim ter a contagem dos caracteres iguais nas strings!

Ja revirei tudo o que é lado e nada!

Se comparar os 2 chars nao tenho problemas, mas nao consigo comparar posicao a posicao!

Agradecia se pudessem ajudar!

Link to comment
Share on other sites

Consegues compilar esse código? Estás a tentar passar duas variáveis do tipo char à função strcmp quando ela aceita duas do tipo char*.

Esse é o problema mais grave, por não permitir compilar o código, por ser um problema de compilação. Pelo menos aqui não permitiu.

Estás a declarar dois arrays de char com 5 posições. Isso vai permitir-te pedir palavras com no máximo 4 caracteres (mais o terminador), tens a certeza que é isso que queres?

Em

cin >> m_palavra [N];

estás a extrair um único caracter do input, para o índice N do array, porque o tipo de m_palavra[N] é char. Não é isso que queres, usa

cin >> m_palavra;

para extrair um array de caracteres, que é o tipo de m_palavra.

Em

length=Matrizj2[0].copy(buffer,5,0);

não sei bem o que estás a fazer por não saber o tipo de Matrixj2, mas buffer não foi inicializado, e não sei o que está a ser colocado em length, nem se buffer serve de origem ou destino para o método copy. Isto afecta também as duas linhas seguintes.

Finalmente, dentro do for, se queres comparar caracter a caracter, não queres utilizar a função strcmp, que compara dois arrays de caracteres, mas sim comparar mesmo cada caracter, com

if (m_palavra[i] == buffer[i]) quantos++;

Não podes usar strings da STL? Facilitava um bocado.

Desaparecido.

Link to comment
Share on other sites

Não postei o resto do codigo!

So meti o metodo da classe jogo, que vai comparar os char's!

O copy utilizo-o para copiar o conteudo da string Matrizj1 que esta definida na classe jogo!

O buffer serve de variavel de destino para a copiar e de seguida comparar!

Sim percebi, utilizo o "==" para comparar posicao a posicao!

No cin vou fazer como tu dizes so o "m_palavra"!

Percebi tudo direitinho, obrigado pela ajuda!

Grande abraço

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.