|
Mostrar Mensajes
|
Páginas: [1] 2
|
2
|
Programación / Programación C/C++ / Proyecto Analizador de Parentesis implementado con Puntero de Clase Pila
|
en: 8 Julio 2019, 18:02 pm
|
#include <iostream> #include <string.h> #include <stdlib.h> using namespace std; struct Nodo{ int Elemento; Nodo *Sig; }; class Pila{ private: Nodo *Tope; public: void Crear(); bool Vacia(); void Meter(int); void Sacar(int &); //int Cima(); void Mostrar(); void Analizar(); }; void Pila::Crear(){ Tope=NULL; } bool Pila::Vacia(){ return Tope==NULL; } //int Pila::Cima(){ //if(!Vacia()){ //return Tope->Elemento; //} //} void Pila::Meter(int E){ Nodo *aux=new Nodo(); if(aux!=NULL){ aux->Elemento=E; aux->Sig=Tope; Tope=aux; } } void Pila::Sacar(int &E){ if(!Vacia()){ Nodo *aux=Tope; E=Tope->Elemento; Tope=Tope->Sig; delete(aux); } } void Pila::Analizar(){ Pila p; char frase [30]; int x,c,d; p.Crear(); c=0; d=0; cout<<"Escriba un texto: "<<endl; cin>>frase; int i=0; while(frase[i]!='\0'){ if(frase[i]=='('){ p.Meter(frase[i]); c++; } if(frase[i]==')'){ p.Sacar(x); d++; } i++; } if(c==d) cout<<"Los parentesis estan correctos"<<endl; else cout<<"Los parentesis estan incorrectos"<<endl; } void Pila::Mostrar(){ Nodo *aux=Tope; if (!Vacia()) { while (aux!=NULL){ cout<<"||\t"; cout<<aux->Elemento; cout<<"\t ||\n"; aux=aux->Sig; } }else{ cout<<" ||\t \t||\n"; } } int main(){ bool menu=true;int i;Pila P; while(menu){ cout<<"\t\t*********************************"<<endl; cout<<"\t\t*\tMENU\t\t\t*"<<endl; cout<<"\t\t*********************************"<<endl; cout<<"\t\t*\t1.-Analizar Frase: \t*"<<endl; cout<<"\t\t*\t2.-Mostrar Pila\t\t*"<<endl; cout<<"\t\t*\t3.-Salir\t\t*"<<endl; cout<<"\t\t*********************************"<<endl; cin>>i; if(i==1){ P.Analizar(); }else{ if(i==2){ P.Mostrar(); }else{ if(i==3){ exit(0); } } } } return 0; }
|
|
|
3
|
Programación / Programación C/C++ / Re: LOGIN CON CONTRASEÑA cifrada CON EL USO DE CLASES HEREDADAS (en desarrollo)
|
en: 14 Diciembre 2018, 18:42 pm
|
// LOGIN CON HERENCIA #include<iostream> #include<windows.h> #include <fstream> #include<stdlib.h> #include<conio.h> #define MAX 4 #define MIN 1 using namespace std; char nombre1[10]; char apellido1[10]; char contrasenia1[100]; char cargo1[100]; char cumpleanio1[100]; char nombretxt[100]; void borrar_pantalla(); char vector1[4]; typedef char matriz[3][3]; class Registro_Usuario{ public://atributos string nombre,apellido,contrasenia,cargo,fecha_nacimiento; public://metodos Registro_Usuario();//constructor de la clase ~Registro_Usuario();//destuctor de la clase virtual void setregistro(string,string,string,string,string); string getregistronombre(); string getregistroapellido(); string getregistrocontrasenia(); string getregistrocargo(); string getregistrofecha_nacimiento(); }; //constructor, nos sirve para inicializar los atributos Registro_Usuario::Registro_Usuario(){ } //destructor de la clase Registro_Usuario::~Registro_Usuario(){ } //establecemos los valores a los atributos void Registro_Usuario::setregistro(string _nombre, string _apellido, string _contrasenia, string _cargo, string _fecha_nacimiento){ nombre = _nombre; apellido = _apellido; contrasenia = _contrasenia; cargo = _cargo; fecha_nacimiento = _fecha_nacimiento; cout<<"\n\tEscriba el nombre de usuario: "; gets(nombretxt); fstream archivo; archivo.open(nombretxt,ios::app); if(archivo.bad()){ cout<<"Mary te AMO <3"; exit(1); } archivo<<"BIENVENIDO A PROVIDENCIA "<<nombre1<<endl; archivo<<"Nombre y Apellido: "<<apellido1<<endl; archivo<<"Contraseña: "<<contrasenia<<endl; archivo<<"cargo: "<<cargo1<<endl; archivo<<"cumpleaños: "<<cumpleanio1<<endl; archivo.close(); } string Registro_Usuario::getregistronombre(){ return nombre; } string Registro_Usuario::getregistroapellido(){ return apellido; } string Registro_Usuario::getregistrocontrasenia(){ return contrasenia; } string Registro_Usuario::getregistrocargo(){ return cargo; } string Registro_Usuario::getregistrofecha_nacimiento(){ return fecha_nacimiento; } class cifrado : public Registro_Usuario{ private://atributos string vector; public://metodos cifrado(string,string,string,string,string,string);// contructor de la clase cifrado ~cifrado(); void setregistro(); }; //contructor de la clase cifrado cifrado::cifrado(string _nombre, string _apellido, string _contrasenia, string _cargo, string _fecha_nacimiento, string _vector):Registro_Usuario(){ vector = _vector; } //destructor de la clase cifrado::~cifrado(){ } void cifrado::setregistro(){ float v [3]; float r [3]; int longitud = 0; } int main(){ matriz m = {{1,2,1},{0-1,3},{2,1,0}}; const int tam = 4 ; int opcion_menu; char caracter; int i = 0; cout <<endl<<endl<< "\t\t\t BIENVENIDOS A PROVIDENCIA" << endl<<endl<<endl; cout << "------------------------------------------------------------------------------------------------------------------------------------" << endl; cout << "\t\t\t|1. Ingresar como Usuario |" << endl; cout << "\t\t\t|2. Registrarse |" << endl; cout << "\t\t\t|3. Ingrersar como Visitante |" << endl; cout << "\t\t\t|4. Salir del Programa. |" << endl; cout << "------------------------------------------------------------------------------------------------------------------------------------\n" << endl; cout << " Introduzca Opcion: "; cin >> opcion_menu; if((opcion_menu==1)||(opcion_menu==2)||(opcion_menu==3)||(opcion_menu==4)){ if(opcion_menu==2){ system("cls"); getch(); cout<<endl<<endl<<"\n\tBienvenido a PROVIDENCIA: \n";//INGRESAR COMO USUARIO" gets(nombre1); cout<<"\n\tDigite su Nombre y Apellido: ";//INGRESAR COMO USUARIO" gets(apellido1); cout<<"\n\tDigite su contrasenia: ";//INGRESAR COMO USUARIO" while (caracter=getch()){ if(caracter==13){ contrasenia1[i]='\0'; break; }else if (caracter==8){ i--; cout<<("\b \b"); }else cout<<("*"); contrasenia1[i]=caracter; i++; } cout<<endl<<"\n\tDigite su Cargo: ";//INGRESAR COMO USUARIO" gets(cargo1); cout<<"\n\tDigite su Fecha de nacimineto: ";//INGRESAR COMO USUARIO" gets(cumpleanio1); } if (opcion_menu==4){ system("cls"); cout<<endl<<(" El Programa CERRARA en Cualquier Momento"); Sleep(3000); exit(0); } } if((opcion_menu<MIN)||(opcion_menu>MAX)){ try { system("cls"); cout<<"\n\n\t ============================\n" <<"\n\n\t | ESTA OPCION ES INCORRECTA |\n" <<"\n\n\t ============================\n"; Sleep(1000); //SEGUNDO Y MEDIO QUE DURA LA PANTALLA, SE PUEDE AUMENTAR EL TIEMPO EN MILISEGUNDOS :v system("cls"); //LIMPIA TODO main();//Y VUELVE AL MENÚ } catch(...) {cout << "\n UN ERROR HA OCURRIDO " << endl;} } switch (opcion_menu){ case 2: Registro_Usuario usuario; cifrado codificar; //codificar.setcifrado(nombre1,apellido1,contrasenia1,cargo1,cumpleanio1,vector1); usuario.setregistro(nombre1,apellido1,contrasenia1,cargo1,cumpleanio1); break; } getch(); return 0; } /*void verificar_existencia_de_usuario(string nuevo_usuario) { ifstream archivo(string nuevo_usuario); if (!archivo) { cout<<"\n Nombre de Usuario DISPONIBLE\n"<<endl;Sleep(2500); } else { cout<<"\n Este Nombre de Usuario ya Existe.....INTENTELO DE NUEVO"<<endl; Sleep(2500); borrar_pantalla();main(); } } /*void Ingresar_PASS(password){ char caracter; int i = 0; cout << " Escriba su Nuevo PASS: " ; while (caracter=getch()){ if(caracter==13){ break; }else if (caracter==8){ i--; cout<<("\b \b"); }else cout<<("*"); p.PASS[i]=caracter; i++; } cout<<"\n SE HA REGISTRADO CORRECTAMENTE"<<endl; Sleep(2500); }*/ void borrar_pantalla() { system("CLS"); }
|
|
|
4
|
Programación / Programación C/C++ / LOGIN CON CONTRASEÑA CIFRADA CON EL USO DE CLASES HEREDADAS (en desarrollo)
|
en: 14 Diciembre 2018, 18:39 pm
|
Hola foro ya estoy devuelta por aqui y con un nuevo tema tengo una presentacion de este login en c++ para una tarea el ejercicio consiste en crear un login con encriptacion de la contraseña, la cual se la incripta por llevando la contraseña a un vector y el vector se multiplica con una matriz que nosotros eligamos en este caso la matriz es {{1,2,1},{0,-1,3},{2,1,0}} en el codigo dejo la matriz definida ya que nunca cambia solo el vector tiene que ser de 3 elementos si o si para poder multiplicar por la matriz, si ponemos un contraseña mas grande igual tenemos que llevarla a vector pero luego hay que cortar el vector en vectores de 3 elementos. todo esto debe ser diseñado con el uso de clase y herencia. estuve resolviendo este ejercicio por con la ayuda de getters y setters para los metodos de la clase pero me quede hasta donde tengo que heredar el atributo contraseña para poder usar el metodo cifrado de la clase cifrado alguien podria darme una mano con el tema de la herencia de la contraseña luego de hay todo es mas facil dejo mi 2 codigos uno con herencia y otro sin herencia HELP!!!!!! T_T T_T T_T //lOGIN SIN HERRENCIA #include<iostream> #include<windows.h> #include <fstream> #include<stdlib.h> #include<conio.h> #define MAX 4 #define MIN 1 using namespace std; char nombre1[10]; char apellido1[10]; char contrasenia1[100]; char cargo1[100]; char cumpleanio1[100]; char nombretxt[100]; void borrar_pantalla(); typedef char matriz[3][3]; typedef char alfabeto[27]; //typedef char palabra [100]; class Registro_Usuario{ public://atributos string nombre,apellido,contrasenia,cargo,fecha_nacimiento; public://metodos Registro_Usuario();//constructor de la clase ~Registro_Usuario();//destuctor de la clase void setregistro(string,string,string,string,string); string getregistronombre(); string getregistroapellido(); string getregistrocontrasenia(); string getregistrocargo(); string getregistrofecha_nacimiento(); }; //constructor, nos sirve para inicializar los atributos Registro_Usuario::Registro_Usuario(){ } //destructor de la clase Registro_Usuario::~Registro_Usuario(){ } //establecemos los valores a los atributos void Registro_Usuario::setregistro(string _nombre, string _apellido, string _contrasenia, string _cargo, string _fecha_nacimiento){ nombre = _nombre; apellido = _apellido; contrasenia = _contrasenia; cargo = _cargo; fecha_nacimiento = _fecha_nacimiento; cout<<"\n\tEscriba el nombre de usuario: "; gets(nombretxt); fstream archivo; archivo.open(nombretxt,ios::out); if(archivo.bad()){ cout<<"Mary te AMO <3"; exit(1); } archivo<<"BIENVENIDO A PROVIDENCIA "<<nombre1<<endl; archivo<<"Nombre y Apellido: "<<apellido1<<endl; archivo<<"Contraseña: "<<contrasenia<<endl; archivo<<"cargo: "<<cargo1<<endl; archivo<<"cumpleaños: "<<cumpleanio1<<endl; archivo.close(); } string Registro_Usuario::getregistronombre(){ return nombre; } string Registro_Usuario::getregistroapellido(){ return apellido; } string Registro_Usuario::getregistrocontrasenia(){ return contrasenia; } string Registro_Usuario::getregistrocargo(){ return cargo; } string Registro_Usuario::getregistrofecha_nacimiento(){ return fecha_nacimiento; } class cifrado : public Registro_Usuario{ private://atributos string contrasenia; public://metodos cifrado();// contructor de la clase cifrado ~cifrado(); void setcifrado(string); string getcifradocontrasenia(); }; //contructor de la clase cifrado cifrado::cifrado(){ } //destructor de la clase cifrado::~cifrado(){ } //establecemos valores a los atributos void cifrado::setcifrado(string _contrasenia){ contrasenia = _contrasenia; alfabeto alf = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; matriz m = {{1,2,1},{0,-1,3},{2,1,0}}; int longitud = 0; } string cifrado::getcifradocontrasenia(){ return contrasenia; } int main(){ const int tam = 4 ; int opcion_menu; char caracter; int i = 0; cout <<endl<<endl<< "\t\t\t BIENVENIDOS A PROVIDENCIA" << endl<<endl<<endl; cout << "------------------------------------------------------------------------------------------------------------------------------------" << endl; cout << "\t\t\t|1. Ingresar como Usuario |" << endl; cout << "\t\t\t|2. Registrarse |" << endl; cout << "\t\t\t|3. Ingrersar como Visitante |" << endl; cout << "\t\t\t|4. Salir del Programa. |" << endl; cout << "------------------------------------------------------------------------------------------------------------------------------------\n" << endl; cout << " Introduzca Opcion: "; cin >> opcion_menu; if((opcion_menu==1)||(opcion_menu==2)||(opcion_menu==3)||(opcion_menu==4)){ if(opcion_menu==2){ system("cls"); Sleep(1000); cout<<endl<<endl<<"\n\tBienvenido a PROVIDENCIA: \n";//INGRESAR COMO USUARIO" gets(nombre1); cout<<"\n\tDigite su Nombre y Apellido: ";//INGRESAR COMO USUARIO" gets(apellido1); cout<<"\n\tDigite su contrasenia: ";//INGRESAR COMO USUARIO" while (caracter=getch()){ if(caracter==13){ contrasenia1[i]='\0'; break; }else if (caracter==8){ i--; cout<<("\b \b"); }else cout<<("*"); contrasenia1[i]=caracter; i++; } cout<<endl<<"\n\tDigite su Cargo: ";//INGRESAR COMO USUARIO" gets(cargo1); cout<<"\n\tDigite su Fecha de nacimineto: ";//INGRESAR COMO USUARIO" gets(cumpleanio1); Sleep(1000); //SEGUNDO Y MEDIO QUE DURA LA PANTALLA, SE PUEDE AUMENTAR EL TIEMPO EN MILISEGUNDOS :v system("cls"); //LIMPIA TODO main(); } if (opcion_menu==4){ system("cls"); cout<<endl<<(" El Programa CERRARA en Cualquier Momento"); Sleep(3000); exit(0); } } if((opcion_menu<MIN)||(opcion_menu>MAX)){ try { system("cls"); cout<<"\n\n\t ============================\n" <<"\n\n\t | ESTA OPCION ES INCORRECTA |\n" <<"\n\n\t ============================\n"; Sleep(1000); //SEGUNDO Y MEDIO QUE DURA LA PANTALLA, SE PUEDE AUMENTAR EL TIEMPO EN MILISEGUNDOS :v system("cls"); //LIMPIA TODO main();//Y VUELVE AL MENÚ } catch(...) {cout << "\n UN ERROR HA OCURRIDO " << endl;} } switch (opcion_menu){ case 2: Registro_Usuario usuario; cifrado codificar; codificar.setcifrado(contrasenia1); usuario.setregistro(nombre1,apellido1,contrasenia1,cargo1,cumpleanio1); break; } getch(); return 0; } /*void verificar_existencia_de_usuario(string nuevo_usuario) { ifstream archivo(string nuevo_usuario); if (!archivo) { cout<<"\n Nombre de Usuario DISPONIBLE\n"<<endl;Sleep(2500); } else { cout<<"\n Este Nombre de Usuario ya Existe.....INTENTELO DE NUEVO"<<endl; Sleep(2500); borrar_pantalla();main(); } } /*void Ingresar_PASS(password){ char caracter; int i = 0; cout << " Escriba su Nuevo PASS: " ; while (caracter=getch()){ if(caracter==13){ break; }else if (caracter==8){ i--; cout<<("\b \b"); }else cout<<("*"); p.PASS[i]=caracter; i++; } cout<<"\n SE HA REGISTRADO CORRECTAMENTE"<<endl; Sleep(2500); }*/ void borrar_pantalla() { system("CLS"); }
|
|
|
5
|
Programación / Programación C/C++ / Re: RECURSION en su estado mas puro para invertir un vector!
|
en: 16 Septiembre 2018, 02:54 am
|
Nica estoy cero........... no se si notaron los codigos que subo al foro en la funcion main nunca coloco una operacion matematica para nada solo lo utilizo para llamar a otras funciones y las funciones predeterminadas son siempre de tipo void solo la funcion que muestra el vector es de tipo "int"........ bueno aqui nace un problema ya que en matrices tengo que crear un metodo que carge la matriz y en dev c++ cuando envio una matriz simpre debo limitar el numero de columnas SIEMPRE y es hay donde me pierdo completamente OJO los ejercicios los hago asi para tener mas orden y para que sean mas entendibles!. Posdata aqui dejo mi logica de cargar una matriz en modo modular en otras palabras de manera muy simple y vaga si lo puedo llamar asi XD #include <iostream> #include <cstdlib> #include <conio.h> #include <string> #include <ctime> using namespace std; int main(){ int numE; int f,c; cout<<"Ingrese el tamaño de la fila: ";cin>>f; cout<<"Ingrese el tamaño de la columna: ";cin>>c; int matriz [f][c]; srand(time(0)); for (int i=0;i<f;i++){ for (int j=0;j<c;j++){ numE=1+rand()% 9; matriz[i][j]=numE; } } for (int i=0;i<f;i++){ for (int j=0;j<c;j++){ cout<<matriz[i][j]<<" "; }cout<<endl; } getch(); return 0; }
Ahora solo hay que llevarlo a metodo recursivo un metodo dentro del main que llame a un metodo externo de tipo void que carge la matriz y un metodo de tipo "int" que muestre la matriz este de tipo entero porque tiene que devolver un valor real no como el void que no devuelve nada soy nuevo en Dev c++ esto ya lo tengo en c++ builder usando sus librerias de StringGrid pero yo quiero hacerlo libre ....... ¿Alguien que quiera participar O_0?
|
|
|
6
|
Programación / Programación C/C++ / Re: Ayuda con recursividad
|
en: 16 Septiembre 2018, 02:39 am
|
Estoy en la "U" 3 semestre recien comenzando, todo lo que avanzo de programacion y logica lo subo al foro para poder orientarme mas adelante si olvido algo, ademas es mi aporte a la comunidad EL CONOCIMIENTO ES LIBRE PARA TODOS
|
|
|
|
|
|
|