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,
#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
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
#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;
}
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
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
eso fue por no decir
if (cadena1.compare(cadena2) != 0)
XD