Buenas, soy nuevo en el foro y en cuanto coja nivel espero ayudar en todo lo que pueda!!!(Espero que no sea mucho lo que pido por ser nuevo
)
Estoy haciendo una practica y aparte de que no se si lo estoy haciendo bien.. tengo un problema y no se que hacer.Dejo el el codigo entero porque se necesita coger datos de otra clase y no se como ponerlo.
El primer problema me surje en que no se si cuando en el metodo de la segunda clase, el de activar satelite, si el Iden.ComprobarIdentidad esta bien usado para llamar y si es asi, entonces en el ultimo metodo que tengo que mostrar el Login que se haya puesto y la contraseña con los astericos(primera clase) Estoy mostrandolo bien o no, estoy liado con eso de utilizar metodos de una clase en otra!!!![:-( :-(](https://forum.elhacker.net/Smileys/navidad/cry.gif)
Por cierto lo que estoy intentando hacer es lo siguiente(queda mas por hacer pero no pudo avanzar si no saco esto...):
Los atributos de la clase Satélite son:
Identificacion Iden: Atributo que contiene la clave de activación y desactivación del Satélite.
int Estado: Valor entero que indica el estado de Satélite, que puede ser:
-1 El satélite no ha sido Identificado. Esto significa que el satélite no ha sido
inicializado con los valores correctos de Login de activación, Nombre,
Fabricante, y Número de Serie.
0 El satélite está Identificado (sus atributos tienen información) pero no está
activo (no puede operar), es decir los métodos MostrarEstado, GetToma,
SetToma y Rellenar no funcionan correctamente, no hacen nada.
1 El satélite está Identificado y además está activo, luego puede operar con
normalidad.
Cadena Nombre: Contiene el nombre del Satélite.
Cadena Fabricante: Contiene el Fabricante del Satélite.
int NSerie: Número de serie de fabricación.
float Tomas[NMESES][NDIAS]: Vector de temperaturas tomada una vez al día durante 12 meses.
Métodos
Los métodos de la clase tienen la siguiente funcionalidad:
Satelite(): Constructor de la clase que inicializa los atributos de la clase. En concreto la tabla Tomas ha de inicializarse con el valor -1000 (constante TOMA_ERRONEA) que indica que dicha toma de temperatura no ha sido realizada, y el Estado a -1 indicando que no ha sido Identificado el Satélite.
bool EstaIdentificado(): Este método inline ya implementado devuelve true si el satélite está identificado.
bool EstaActivado(): Este método inline ya implementado devuelve true si el satélite está identificado y activado.
bool Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre, Cadena pFabrica, int pNSerie): Método que inicializa los atributos del satélite para que pueda ser utilizado.Además se indica el Login y el password de administración. Como ya se ha dicho, el password del satélite se genera automáticamente a través del Login. El password de administración es "Admin901434". Si el password de administración no coincide con el dado, el satélite no puede ser identificado. Si la identificación es correcta devolverá true, en caso contrario false. Nota: Un
satélite solo puede ser identificado una vez, en caso de que se intente identificar un satélite más de una vez devolverá false.
bool Activar(Cadena pLogin, Cadena pPasswd): Método que activa el satélite siempre y cuando se cumpla que el satélite esté identificado, que no esté activado previamente y que coincidan el Login y el Password pasados por parámetro con los que posee el satélite. En caso de que se verifiquen dichas condiciones el método devolverá true, en caso contrario false.
bool Desactivar(Cadena pLogin, Cadena pPasswd): Método que desactiva el satélite siempre y cuando se verifique que esté activado previamente y que coincidan el Login y el Password pasado por parámetro con los que posee el satélite. En caso de que se verifiquen dichas condiciones el método devolverá true, en caso contrario false.
void MostrarEstado(): Método que muestra por pantalla el estado del satélite, siempre y cuando esté identificado previamente. Si el satélite está identificado mostrará un texto como:
Nombre: Norte Fabricante: Hispasat Estado: Identificado y Activado
Login: Jos1267. Password: ********
El estado podrá ser Identificado y Activado o Identificado y No Activado. En ningún caso un
satélite no identificado podrá mostrar su información, solo mostrará:
**** SATELITE NO IDENTIFICADO ****
Saludos!
![;D ;D](https://forum.elhacker.net/Smileys/navidad/grin.gif)
Estoy haciendo una practica y aparte de que no se si lo estoy haciendo bien.. tengo un problema y no se que hacer.Dejo el el codigo entero porque se necesita coger datos de otra clase y no se como ponerlo.
Código [Seleccionar]
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define pause system("pause");
using namespace std;
typedef char Cadena[100];
class Identificacion
{
Cadena Login;
Cadena Password;
public:
Identificacion();
void setLogin(Cadena pLogin);
bool ComprobarIdentidad(Cadena pLogin, Cadena pPasswd);
void GetInformacion(Cadena pLogin, Cadena pPasswd);
};
Identificacion::Identificacion()
{
Login[0]='\0';
Password[0]='\0';
}
void Identificacion::setLogin(Cadena pLogin)
{
int a;
int j=0; //contador
int i=0;
Cadena contra;
a=strlen(pLogin)-1;
for(i=a;i>=0;i--)
{
contra[j]=pLogin[i];
j++;
}
strcpy(Login,pLogin);
strcpy(Password,contra);
}
bool Identificacion::ComprobarIdentidad(Cadena pLogin, Cadena pPasswd)
{
int b;
int c;
b=strcmp(pLogin,Login);
c=strcmp(pPasswd,Password);
return(b==0 && c==0);
}
void Identificacion::GetInformacion(Cadena pLogin, Cadena pPasswd)
{
int d;
int e=0;
strcpy(pLogin,Login);
d=strlen(Password)-1;
for(e=0;e<=d;e++)
{
pPasswd[e]='*';
}
pPasswd[d+1]='\0'; //pones el barra cero para que no cojas basura
}
#define NMESES 12
#define NDIAS 30
#define TOMA_ERRONEA -1000
#define NSATELITES 5
class Satelite
{
Identificacion Iden;
Cadena Nombre;
Cadena Fabricante;
int NSerie;
int Estado;
float Tomas[NMESES][NDIAS];
public:
Satelite();
bool EstaIdentificado (){return Estado>=0;};
bool EstaActivado(){return Estado==1;};
bool Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre,
Cadena pFabrica, int pNSerie);
bool Activar(Cadena pLogin, Cadena pPasswd);
bool Desactivar(Cadena pLogin, Cadena pPasswd);
void MostrarEstado();
float GetToma(int pMes, int pDia);
void SetToma(int pMes, int pDia, float pTemp);
void Rellenar(int Porcen=90);
Satelite operator+(Satelite pSat);
};
Satelite::Satelite()
{
int a=0;
int b=0;
for(a=0;a<=NMESES;a++)
{
for(b=0;b<=NDIAS;b++)
{
Tomas[a][b]=TOMA_ERRONEA;
}
}
Estado=-1;
}
bool Satelite::Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre, Cadena pFabrica, int pNSerie)
{
strcpy(Nombre,pNombre);
strcpy(Fabricante,pFabrica);
NSerie=pNSerie;
int c=0;
c=strcmp(pMaster,"Admin901434");
if(c==0 && Estado==-1 && pLogin!='\0')
{
Iden.setLogin(pLogin);
Estado=0;
return true;
}
else
{
return false;
}
}
bool Satelite::Activar(Cadena pLogin, Cadena pPasswd)
{
if(Estado==0)
{
if(Iden.ComprobarIdentidad(pLogin, pPasswd)==true)
{
return true;
}
}
return false;
}
bool Satelite::Desactivar(Cadena pLogin, Cadena pPasswd)
{
if(Estado==1)
{
if(Iden.ComprobarIdentidad(pLogin, pPasswd)==true)
{
return true;
}
}
return false;
}
void Satelite::MostrarEstado()
{
if(Estado==1)
{
cout<<"Nombre: "<<Nombre<<"\nFabricante: "<<Fabricante<<"\nEstado Identificado y no Activado"<<endl;
cout<<"Login: "<<Iden.setLogin(pLogin)<<"\nPassword: "<<Iden.GetInformacion(pPasswd)<<endl;
}
else if(Estado==2)
{
cout<<"Nombre: "<<Nombre<<"\nFabricante: "<<Fabricante<<"\nEstado Identificado y Activado"<<endl;
cout<<"Login: "<<Iden.setLogin(Login)<<"\nPassword: "<<Iden.GetInformacion(pPasswd)<<endl;
}
else if(Estado==-1)
{
cout<<"****SATELITE NO IDENTIFICADO****"<<endl;
}
}
El primer problema me surje en que no se si cuando en el metodo de la segunda clase, el de activar satelite, si el Iden.ComprobarIdentidad esta bien usado para llamar y si es asi, entonces en el ultimo metodo que tengo que mostrar el Login que se haya puesto y la contraseña con los astericos(primera clase) Estoy mostrandolo bien o no, estoy liado con eso de utilizar metodos de una clase en otra!!!
![:-( :-(](https://forum.elhacker.net/Smileys/navidad/cry.gif)
Por cierto lo que estoy intentando hacer es lo siguiente(queda mas por hacer pero no pudo avanzar si no saco esto...):
Los atributos de la clase Satélite son:
Identificacion Iden: Atributo que contiene la clave de activación y desactivación del Satélite.
int Estado: Valor entero que indica el estado de Satélite, que puede ser:
-1 El satélite no ha sido Identificado. Esto significa que el satélite no ha sido
inicializado con los valores correctos de Login de activación, Nombre,
Fabricante, y Número de Serie.
0 El satélite está Identificado (sus atributos tienen información) pero no está
activo (no puede operar), es decir los métodos MostrarEstado, GetToma,
SetToma y Rellenar no funcionan correctamente, no hacen nada.
1 El satélite está Identificado y además está activo, luego puede operar con
normalidad.
Cadena Nombre: Contiene el nombre del Satélite.
Cadena Fabricante: Contiene el Fabricante del Satélite.
int NSerie: Número de serie de fabricación.
float Tomas[NMESES][NDIAS]: Vector de temperaturas tomada una vez al día durante 12 meses.
Métodos
Los métodos de la clase tienen la siguiente funcionalidad:
Satelite(): Constructor de la clase que inicializa los atributos de la clase. En concreto la tabla Tomas ha de inicializarse con el valor -1000 (constante TOMA_ERRONEA) que indica que dicha toma de temperatura no ha sido realizada, y el Estado a -1 indicando que no ha sido Identificado el Satélite.
bool EstaIdentificado(): Este método inline ya implementado devuelve true si el satélite está identificado.
bool EstaActivado(): Este método inline ya implementado devuelve true si el satélite está identificado y activado.
bool Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre, Cadena pFabrica, int pNSerie): Método que inicializa los atributos del satélite para que pueda ser utilizado.Además se indica el Login y el password de administración. Como ya se ha dicho, el password del satélite se genera automáticamente a través del Login. El password de administración es "Admin901434". Si el password de administración no coincide con el dado, el satélite no puede ser identificado. Si la identificación es correcta devolverá true, en caso contrario false. Nota: Un
satélite solo puede ser identificado una vez, en caso de que se intente identificar un satélite más de una vez devolverá false.
bool Activar(Cadena pLogin, Cadena pPasswd): Método que activa el satélite siempre y cuando se cumpla que el satélite esté identificado, que no esté activado previamente y que coincidan el Login y el Password pasados por parámetro con los que posee el satélite. En caso de que se verifiquen dichas condiciones el método devolverá true, en caso contrario false.
bool Desactivar(Cadena pLogin, Cadena pPasswd): Método que desactiva el satélite siempre y cuando se verifique que esté activado previamente y que coincidan el Login y el Password pasado por parámetro con los que posee el satélite. En caso de que se verifiquen dichas condiciones el método devolverá true, en caso contrario false.
void MostrarEstado(): Método que muestra por pantalla el estado del satélite, siempre y cuando esté identificado previamente. Si el satélite está identificado mostrará un texto como:
Nombre: Norte Fabricante: Hispasat Estado: Identificado y Activado
Login: Jos1267. Password: ********
El estado podrá ser Identificado y Activado o Identificado y No Activado. En ningún caso un
satélite no identificado podrá mostrar su información, solo mostrará:
**** SATELITE NO IDENTIFICADO ****
Saludos!