Ayudaa!!! comparar cadenas de caracteres

Iniciado por judithmateos, 17 Diciembre 2016, 16:19 PM

0 Miembros y 1 Visitante están viendo este tema.

judithmateos

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 (cpp) [Seleccionar]
#include <iostream>
#include <string.h>
#include <cstdlib>

using namespace std;

 string cadena1,cadena2;

bool iguales (string cadena1, string cadena2){


    if (cadena1==cadena2)
       return true;
       else
             return false;



}
int main (int argc, char *argv[]){


   cout<<"introduce la primera cadena"<<endl;
   getline(cin,cadena1);
   system("pause");
   cout<<"introduce la segunda cadena"<<endl;
   getline(cin,cadena2);



   }



Mod: Los códigos deben ir en etiquetas GeSHi

engel lex

en C++ es <cstring>  no string.h (eso es C)






Código (cpp) [Seleccionar]
int main (int argc, char *argv[]){


    cout<<"introduce la primera cadena"<<endl;
    getline(cin,cadena1);
    system("pause");
    cout<<"introduce la segunda cadena"<<endl;
    getline(cin,cadena2);



    }


no devuelve nada porque nunca lo llamaste
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

judithmateos

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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

judithmateos

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

crack81

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

bool iguales (string cadena1, string cadena2)
{
   return cadena1==cadena2;
}

int main (int argc, char *argv[])
{
   string cadena1,cadena2;

   cout<<"introduce la primera cadena"<<endl;
   getline(cin,cadena1);

   cout<<"introduce la segunda cadena"<<endl;
   getline(cin,cadena2);

   if(iguales(cadena1,cadena2))
   {
       cout<<"Son iguales"<<endl;
   }
   else
   {
       cout<<"Son diferentes"<<endl;
   }
}


Se llama asi  ::)
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

judithmateos

#6
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;



}

crack81

Código (cpp) [Seleccionar]
#include <iostream>
#include<cstring>

using namespace std;

int comparar (string cadena1, string cadena2)
{
    return cadena1.compare(cadena2);
}

int main (int argc, char *argv[])
{
    string cadena1,cadena2;

    cout<<"introduce la primera cadena"<<endl;
    getline(cin,cadena1);

    cout<<"introduce la segunda cadena"<<endl;
    getline(cin,cadena2);

    if(comparar(cadena1,cadena2)==0)//Son iguales
    {
        cout<<"0"<<endl;
    }
    else if(comparar(cadena1,cadena2)>0)// es mayor
    {
        cout<<"1"<<endl;
    }
    else
    {
         cout<<"-1"<<endl;
    }
}


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

Si C/C++ es el padre de los lenguajes entonces ASM es dios.