Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

agj

Comparação de string

Recommended Posts

sou eu denovo hehe

 

tenho um programa e preciso comparar o conteudo de duas strings....na meu caso s1 e s3....

a comparação eh da seguinte forma......se algum caracter da string s3 não estiver na estring s1 deve mostrar uma mensagem de erro....

 

Mas eu não estou conseguindo fazer isso...eu coloco os mesmos caracters nas duas strings mas mesmo assim ele esta mostrando erro.....

 

esse eh o codigo

do	{		fun = true;		for (pl=0; pl<=s3.size(); pl++)		{			plv = s3[pl];			cont = 0;			for (k=0; k<=s1.size(); k++)			{				if( s1[k]!= plv)				{					cont++;				}				if (cont == s1.size())				{					cout << endl;					cout << "ERRO: Palavra nao existe... " << endl;					system("PAUSE");					fun = false;				}				}		}	}while (fun == true);

alguem pode me dizer o que esta errado???

 

valew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

minha dúvida em questão eh a seguinte....ela compara as duas strings como um todo ou ela compara caracter por caracter??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

ela compara as duas strings como um todo ou ela compara caracter por caracter??????

strcmp(STR1 , STR2)Vai compara as strings como um todo e retornar 0 caso elas sejam iguais caso contrário retorna não-zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por exemplostring1 = abcdstring = bdcausando o strcmp, a comparação dessas strings são iguais ou não???

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta ok entendi.....mas para mim o strcmp não serve....eu preciso comparar caracter por caracter.....neste caso string1 = abcdstring2 = dcbatem que ser verdadeiromas neste casostring1 = abcdstring2 = bcdawneste caso tem que ser falso....deem uma olhada no codigo que coloquei logo no inicio......eu tentei fazermas naum esta dando certo...o que tem de errado???ou alguem tem alguma outra sugestão para o meu problema????obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa eu ser um pouco mais claro...o usuario informa varios caracters no inicio do programa, e eu armazeno numa string.....em uma outra parte do progrma o usuario vai informar alguma palavra, que eu armazeno em uma outra string.....o problema eh o seguinte, ele soh pode formar esta palavra com os caracters que ele informou no inicio do programa, caso ele digite um caracter nao informado o programa deve informar...por isso que eu preciso da comparacao de duas strings caracter por caracter....se alguem tiver alguma dicaagradeçoobrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tomando por base que uma string eh um vetor de caracteres.. você pode comparar caractere por caractere como se fosse um vetor..

igual = 1;for(i=0;i<s1.size();i++)   if(s1[i] != s3[i]){	   igual = 0;	   break;   }if(igual == 0)  cout<<"Não são iguais!!";
apenas comparei como se fossem dois vetores quaisquer...

 

caso naum fiq claro posta ai..

Compartilhar este post


Link para o post
Compartilhar em outros sites

bool ehAnagrama( string s1, string s2 ) {	string* maior;	string* menor;	bool ehAnagrama = true;	// Vamos simplificar...	if( s1 >= s2 ) {		maior = &s1;		menor = &s2;	} else {		maior = &s2;		menor = &s1;	}		// percorre a string maior	for( int i = 0; i < maior->size(); i++ ) {		bool bateu = false;				// percorre a string menor, verificando se algum dos		// seus caracteres bate com o caractere corrente na string maior		for( int j = 0; j < menor->size(); j++ ) {			if( (*maior)[i] == (*menor)[j] ) {				bateu = true;			}		}		// se após percorrer toda string menor o caractere não bateu		// as strings não são anagrams e o algoritmo pode parar.		if( !bateu ) {			ehAnagrama = false;			break;		}	}	return ehAnagrama;}

Não testei, mas deve funcionar para o que quer.

Se der erro e não conseguir resolver, poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.