comparar cadenas

Iniciado por judithmateos, 31 Agosto 2017, 19:51 PM

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

judithmateos

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

De{M}iuM

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;
}

engel lex

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
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.

De{M}iuM

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

engel lex

eso fue por no decir

Código (cpp) [Seleccionar]
if (cadena1.compare(cadena2) != 0) XD
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.