elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cadenas de caracteres. Función para comparar una cadena ignorando signos. C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cadenas de caracteres. Función para comparar una cadena ignorando signos. C++  (Leído 3,682 veces)
seryioo

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Cadenas de caracteres. Función para comparar una cadena ignorando signos. C++
« en: 12 Agosto 2015, 13:44 pm »

Hola a todos. Esta vez traigo una duda con ejercicios de cadenas de caracteres.
Tengo que hacer una función que compare 2 cadenas ignorando las mayúsculas y minúsculas y me devuelva si son o no iguales.

Había pensado en hacerme una función "void aMayuscula (TCadena cad)" que convirtiera toda la cadena a mayuscula para implementarla en otra función y comparar las 2 cadenas pasadas a mayúscula. Pero para hacer esto tendría o que crear una cadena nueva copiando el contenido de la original  ya en mayúscula o sobrescribir la original, cosa que no puedo porque en la pLantilla que me dan me pasan las cadenas como "const"
Lo que he hecho al final es una función "char aMayuscula (TCadena cad, unsigned pos)" que va dentro de un while que recorre las 2 cadenas y compara una a una las letras devueltas por la función "char aMayuscula".

Código
  1. char aMayuscula(TCadena cad, unsigned pos){
  2.    char a;
  3.    if(cad[pos]!='\0'){
  4.        if(cad[pos]>='a' and cad[pos]<='z'){
  5.            a=cad[pos]-32;
  6.        }//end if
  7.    }//end if
  8.    return a;
  9. }
  10.  

A continuación, la función que compara las cadenas:

Código
  1. bool iguales_ignorando_tipo(const TCadena cad1, const TCadena cad2){
  2.    unsigned i=0;
  3.    bool es=true;
  4.    while(es && cad1[i]!='\0'&& cad2[i]!='\0' ){
  5.        if(aMayuscula(cad1,i)!=aMayuscula(cad2,i)) es=false;
  6.        ++i;
  7.    }
  8.    return es;
  9. }
  10.  


Al compilar me da error "invalid conversion from 'const char*' to 'char*'" Y no entiendo por qué sale.


¿Qué tengo mal?


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Cadenas de caracteres. Función para comparar una cadena ignorando signos. C++
« Respuesta #1 en: 12 Agosto 2015, 13:50 pm »

Código
  1. char aMayuscula(TCadena cad, unsigned pos)
  2.  
  3. if(aMayuscula(cad1,i)!=aMayuscula(cad2,i))
  4.  

Estás pasándole a una función que pide un TCadena, una variable const TCadena.

Lo que debes hacer, es ponerle const TCadena a aMayuscula(). Siempre que una variable que sea un puntero o una referencia no se vaya a modificar, conviene ponerle const.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines