Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: judithmateos en 17 Diciembre 2016, 16:19 pm



Título: Ayudaa!!! comparar cadenas de caracteres
Publicado por: judithmateos en 17 Diciembre 2016, 16:19 pm
Muy buenas, tengo un trabajo de clase, con lo cual soy muy novata en esto, estoy en 1º, pero seguro que para muchos de vosotros lo que os voy a plantear esta chupado, a ver... tengo que comparar dos cadenas y usar una funcion bool para que devuelva verdadero si son iguales y falso si son distintas, os paso lo que tengo hecho, compila bien pero el programa no funciona cuando pasa al condicional if no devuelve nada. muchas gracias por adelanrado.



Código
  1. #include <iostream>
  2. #include <string.h>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7.  string cadena1,cadena2;
  8.  
  9. bool iguales (string cadena1, string cadena2){
  10.  
  11.  
  12.     if (cadena1==cadena2)
  13.        return true;
  14.        else
  15.              return false;
  16.  
  17.  
  18.  
  19. }
  20. int main (int argc, char *argv[]){
  21.  
  22.  
  23.    cout<<"introduce la primera cadena"<<endl;
  24.    getline(cin,cadena1);
  25.    system("pause");
  26.    cout<<"introduce la segunda cadena"<<endl;
  27.    getline(cin,cadena2);
  28.  
  29.  
  30.  
  31.    }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: engel lex en 17 Diciembre 2016, 16:28 pm
en C++ es <cstring>  no string.h (eso es C)






Código
  1. int main (int argc, char *argv[]){
  2.  
  3.  
  4.    cout<<"introduce la primera cadena"<<endl;
  5.    getline(cin,cadena1);
  6.    system("pause");
  7.    cout<<"introduce la segunda cadena"<<endl;
  8.    getline(cin,cadena2);
  9.  
  10.  
  11.  
  12.    }

no devuelve nada porque nunca lo llamaste


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: judithmateos en 17 Diciembre 2016, 16:33 pm
introduce la primera cadena
ddd
Presione una tecla para continuar . . .
introduce la segunda cadena
sss

Process returned 0 (0x0)   execution time : 3.141 s
Press any key to continue.

sigue sin funcionar... me dice esto. ni false ni true


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: engel lex en 17 Diciembre 2016, 16:42 pm
yo no estoy modificando tu codigo, te estoy mostrando lo que hay (por si decides copiarlo y pegarlo sin siquiera leer a ver si es diferente)



si no llamas a iguales no haces nada, si no imprimes el resultado recibido de iguales no hará nada... si esta frase no significa la respuesta, te recomiendo leerte un tutorial de C++

en google y youtube consigues según tus gustos, este es uno cualquiera que agarré de google

https://codigofacilito.com/cursos/c-plus-plus (https://codigofacilito.com/cursos/c-plus-plus)


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: judithmateos en 17 Diciembre 2016, 16:51 pm
Como he puesto arriba estoy en primero, llevo 4 meses en la ingenieria, mis conocimientos no dan para tanto (de momento) he cambiado la libreria(gracias por la aclaracion no tenia ni idea) y sigue sin funcionar.... si lo estoy llamando o eso creeo yo


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: crack81 en 17 Diciembre 2016, 17:16 pm
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool iguales (string cadena1, string cadena2)
  6. {
  7.    return cadena1==cadena2;
  8. }
  9.  
  10. int main (int argc, char *argv[])
  11. {
  12.    string cadena1,cadena2;
  13.  
  14.    cout<<"introduce la primera cadena"<<endl;
  15.    getline(cin,cadena1);
  16.  
  17.    cout<<"introduce la segunda cadena"<<endl;
  18.    getline(cin,cadena2);
  19.  
  20.    if(iguales(cadena1,cadena2))
  21.    {
  22.        cout<<"Son iguales"<<endl;
  23.    }
  24.    else
  25.    {
  26.        cout<<"Son diferentes"<<endl;
  27.    }
  28. }

Se llama asi  ::)


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: judithmateos en 17 Diciembre 2016, 17:54 pm
mil gracias, ahora lo entiendo, aun estoy aprendiendo como van las funciones.



me pide tambien que con la funcion int iguales (string cadena1, string, cadena 2) si es mayor que devuleva un 1 si son iguales un 0 y si es menor un -1.esto es lo que tengo: y no funciona

 int comparar (string cadena1, string cadena2){

     if (cadena1>cadena2)
        cout<<"1"<<endl;
       else
        cout<<"-1"<<endl;
     if (cadena1==cadena2)
        cout<<"0"<<endl;



 }


Título: Re: Ayudaa!!! comparar cadenas de caracteres
Publicado por: crack81 en 18 Diciembre 2016, 03:59 am
Código
  1. #include <iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. int comparar (string cadena1, string cadena2)
  7. {
  8.    return cadena1.compare(cadena2);
  9. }
  10.  
  11. int main (int argc, char *argv[])
  12. {
  13.    string cadena1,cadena2;
  14.  
  15.    cout<<"introduce la primera cadena"<<endl;
  16.    getline(cin,cadena1);
  17.  
  18.    cout<<"introduce la segunda cadena"<<endl;
  19.    getline(cin,cadena2);
  20.  
  21.    if(comparar(cadena1,cadena2)==0)//Son iguales
  22.    {
  23.        cout<<"0"<<endl;
  24.    }
  25.    else if(comparar(cadena1,cadena2)>0)// es mayor
  26.    {
  27.        cout<<"1"<<endl;
  28.    }
  29.    else
  30.    {
  31.         cout<<"-1"<<endl;
  32.    }
  33. }
  34.  

Usa la funcon compare de la clase string http://www.cplusplus.com/reference/string/string/compare/