Pregunta..Comparación de registro

Iniciado por SojatDotar, 3 Diciembre 2015, 04:17 AM

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

SojatDotar

Buenas, tengo la siguiente duda, puedo comprar dos registro? es decir si quiero ver si son iguales dos registro se puede?

crack81

#1
En c++ no se pueden comparar dos registros nativamente asi que tienes varias opciones una de ellas es crear una funcion que compare dos registros como acontinuacion

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

typedef struct{
   int entero;
   float decimal;
   string cadena;
} Registro;

//la funciona compara dos registros del tipo Registro si son iguales retorna true sino dara false
bool compararRegistros(Registro r1,Registro r2){

  return ((r1.cadena==r2.cadena) && (r1.entero==r2.entero) && (r1.decimal==r2.decimal));

}

int main()
{
  Registro r1;
  r1.cadena="hola mundo";
  r1.entero=34;
  r1.decimal=4.444;

  Registro r2;
  r2.cadena="otra cosa";
  r2.entero=3333;
  r2.decimal=222.222;


  if(compararRegistros(r1,r2)){
    cout<<"son iguales"<<endl;
  }
  else{
    cout<<"No son iguales "<<endl;
  }

  //copiamos el contenido de regitros uno al registro dos
  r2=r1;
   //volvemos a comparar
  if(compararRegistros(r1,r2)){
    cout<<"son iguales"<<endl;
  }
  else{
    cout<<"No son iguales "<<endl;
  }

   return 0;
}


[MOD] Al publicar código usar las etiquetas GeSHi.
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

ivancea96

Si hablamos de clases os estructuras en C++, existe el operador ==.

Código (cpp) [Seleccionar]
class T{
public:
   int data;
   bool operator==(const T& t){return t.data==data;}
};

int main(){
   T a,b;
   if(a==b) ...
}


Si hablamos de C, habría que hacer una función externa a la estructura como comenta crack81.

SojatDotar

Muchas gracias, si la pregunta era en torno a C++ ;D