Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: judithmateos en 31 Agosto 2017, 19:51 PM

Título: comparar cadenas
Publicado por: judithmateos en 31 Agosto 2017, 19:51 PM
Muy buenas estoy el 1º de ingeneria informatica, y me piden un ejercicio de comparar dos cadenas, simplemente decir si son iguales o no, y n se que me esta fallando que siempre me devuelve falso, alguien podria ayudarme por favor? mil gracias (me estoy volviendo loca :P)por cierto todo en c++
escribo el codigo abajo,
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
using namespace std;
/*declaracion de funciones*/
bool iguales (string cadena1,string cadena2);

int main (void){

string cadena1,cadena2;


cout<<"escriba la primera palabra: "<<endl;
getline(cin,cadena1);
cout<<"escriba la segunda palabra: "<<endl;
getline(cin,cadena2);





}
/*funcion iguales*/
bool iguales (string cadena1,string cadena2){

if (cadena1==cadena2){

   return true;}
   else
       return false;
}


Engel Lex: Los codigos deben ir en etiquetas GeSHi
Título: Re: comparar cadenas
Publicado por: De{M}iuM en 31 Agosto 2017, 20:01 PM
Buenas tardes judith.

Lo que debes hacer es comparar en primer lugar si tienen la misma longitud y a continuación comparar carácter a carácter

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
using namespace std;

/*declaracion de funciones*/
bool iguales (string cadena1,string cadena2);

int main (void){

string cadena1,cadena2;

cout<<"escriba la primera palabra: "<<endl;
getline(cin,cadena1);
cout<<"escriba la segunda palabra: "<<endl;
getline(cin,cadena2);

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

return 0;
}

/*funcion iguales*/
bool iguales (string cadena1,string cadena2){
if (strlen(cadena1) == strlen(cadena2)) {
for (int i=0; i<strlen(cadena2); i++) {
if (cadena1[i] != cadena2[i]) {
return false;
}
}
return true;
}
return false;
}
Título: Re: comparar cadenas
Publicado por: engel lex en 31 Agosto 2017, 20:03 PM
las cadenas son arrays, si hacer cadena1==cadena2 en realidad estás comparando los punteros base de ellas... es decir solo estás viendo si están en la misma dirección de memoria o no...

para comparar cadenas debes usar de la librería string
strcmp(cadena1,cadena2)

si es 0 son iguales, si no es 0, no son iguales
Título: Re: comparar cadenas
Publicado por: De{M}iuM en 31 Agosto 2017, 20:05 PM
que está aprendiendo cohone!! no le digas que use strcmp o no descubrirá que los arrays nos rodean jajajaja y con los punteros lo va a flipar  ;D
Título: Re: comparar cadenas
Publicado por: engel lex en 31 Agosto 2017, 20:10 PM
eso fue por no decir

Código (cpp) [Seleccionar]
if (cadena1.compare(cadena2) != 0) XD