agj 0 Denunciar post Postado Junho 11, 2006 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
Marcelo Lipienski 9 Denunciar post Postado Junho 11, 2006 usa strcmp(str1,str2);num eskece de incluir a <string.h>^^ Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 11, 2006 essa função pra mim eh nova....como eu utilizo o strcmp ??? Compartilhar este post Link para o post Compartilhar em outros sites
Homero C. de Almeida 0 Denunciar post Postado Junho 11, 2006 strcmp é da biblioteca de C. Se estiver utilizando strings em C++ pode comparar os dois objetos utilizando o operador == mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 11, 2006 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
Homero C. de Almeida 0 Denunciar post Postado Junho 11, 2006 como assim?? O_o Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Junho 11, 2006 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
agj 0 Denunciar post Postado Junho 11, 2006 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
Homero C. de Almeida 0 Denunciar post Postado Junho 11, 2006 usando o strcmp, a comparação dessas strings são iguais ou não???não. Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 11, 2006 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
agj 0 Denunciar post Postado Junho 11, 2006 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
ricci ottadnot 4 Denunciar post Postado Junho 12, 2006 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
Homero C. de Almeida 0 Denunciar post Postado Junho 12, 2006 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
Homero C. de Almeida 0 Denunciar post Postado Junho 12, 2006 Acabei de ver... O código está errado, ele não responde corretamente se o "caractere estranho" estiver na string menor... =/ Compartilhar este post Link para o post Compartilhar em outros sites