Título: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: NikNitro! en 31 Enero 2013, 14:39 pm Buenass a todos.
Resulta que en clase de programación básica de C++, el tema de strings y arrays multidimensionales se me ha atascado. La profesora dice que nos busquemos la vida para resolver sus ejercicios (tranquilos, no os voy a pedir que me hagáis nada. Quiero aprender :) ) Aún no hemos usado clases. Solo procedimientos y funciones, y mi error está en una función que me devuelva un booleano diciendo si dos palabras (en mayúsculas) son o no son anagramas. (Son anagramas si cambiando las letras de orden de una de ellas podemos obtener la otra "caso y saco") (http://img46.imageshack.us/img46/4913/errorstrings1.jpg) (http://imageshack.us/photo/my-images/46/errorstrings1.jpg/) Lo que pretendo es crear dos arrays de 27 int que representen las 27 letras, y que con un bucle for vaya sumando 1 a cada posición cada vez que aparezca la letra. De esta manera acabo comparando los dos arrays y si son iguales, serán anagramas. Espero haberme explicado. El error lo pueden ver. Me trae loco aunque seguro será una tontería xD S@lu2 ;) PD: si tengo más dudas de la misma relación de ejercicios y que no encuentro en la net los pongo en este mismo post?? Creo que podría servir de ayuda a otros como yo ;) Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: amchacon en 31 Enero 2013, 15:41 pm Código
Esta sentencia no hace nada. Si lo que quieres es asignarle al array el valor de pall: Código
Lo mismo con el otro array. Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: 0xDani en 31 Enero 2013, 15:52 pm El problema esta en estas dos lineas:
Código
Para acceder al caracter que haya en un indice de un string debes usar el operador [], no (). Al usar los parentesis estas haciendo una llamada al constructor de la clase, de ahi el error. Saludos. Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: NikNitro! en 31 Enero 2013, 15:54 pm Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Aiss, toqueteando se me olvido poner el ++ al final antes de hacerle la foto para que sumara 1 -.-' Pero vamos, que me has dado la respuesta ^^ estaba utilizando paréntesis en vez de corchetes para definir la posición de los caracteres de la string xP Aquí está el trozo de código sin fallos: Código: if(pal1.size() == pal2.size()) { De camino lo he puesto con una variable para que se vea más claro :) S@lu2 y gracias ;) PD: si tengo más dudas de la misma relación de ejercicios y que no encuentro en la net los pongo en este mismo post?? Creo que podría servir de ayuda a otros como yo ;) Qué me decís de eso? EDITADO: @0xDani Así es. Gracias a ti también :) Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: Foxy Rider en 31 Enero 2013, 16:14 pm ¿No es más fácil pasar ambas cadenas a minúsculas, hacerles un sort y comparar resultados?
Si tiene las mismas letras, por ordenamiento numérico terminarían en el mismo lugar y las cadenas deberían ser "equivalentes". Grosero ejemplo: Código
Te olvidas completamente de los for anidados. Saludos. Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: NikNitro! en 31 Enero 2013, 18:51 pm La verdad es que si, pero como ya dije son ejercicios de clase, y aún no hemos dado métodos -.-, y de strings ha dicho que son cadenas de caracteres, que se pueden concatenar, comparar, acceder a terminos dentro de ellas y pasarlas por referencia en vez de por parametros... Tiene a la clase muy liada, la verdad :s
Título: Re: Error " no match for call to `(std::string) (unsigned int&)' " Publicado por: rir3760 en 4 Febrero 2013, 18:16 pm La verdad es que si, pero como ya dije son ejercicios de clase, y aún no hemos dado métodos El problema: ya los están utilizando al llamar a la función miembro "size" de los objetos "pal1" y "pal2".La mejor solución ya la dio Alex Mtx, si debido a los requisitos en clase solo deben utilizar arrays de caracteres deben tener cuidado con esto: Código Ello porque en el caso de los arrays (de cualquier tipo) cuando se utiliza el operador "==" no se comparan sus contenidos, se comparan sus direcciones en memoria, en tu caso esa comparación siempre resultara en el valor false. Un saludo |