Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Dayleap

#1
Hola muy buenas tengo una duda con un metodo y no se como resolverla ni si es posible

Quiero que el metodo haga lo siguiente:

Tengo un personas.txt el cual contiene informacion de una serie de personas : Monitores o Usuarios. Lo que hago es leer este fichero e ir rellenando dos HashMap uno que contiene  los monitores ( HashMap<Integer, Monitor>) y otro a los usuarios (HashMap<Integer,Usuario>)  la key de los HashMap es el id de cada persona

1                                               //id
monitor                                      //tipo
Jose Carlos                                 //nombre
Alvarez Perez                              //apellidos
07/09/1976                               //fechaNacimiento
14                                            //horasAsignables
1 1;1 2; 1 3; 1 4; 2 1; 2 3; 4 6   //GruposImpartidos idActividad idGrupo; <--- ESTA
***************************************
4                                                //id
usuario          
Susana                                       //nombre
Rodriguez Estevez                       //apellidos
15/01/1998                              //fechaNacimiento
6/10/2015                               //fechaIngreso
                                            //actividadesCursadasAnteriores
90,5                                      //saldo
1 [1]; 2 [3];                           //actividadesActuales


La cuestion es la siguiente , quiero que al final de ejecutar un metodo el cual añade un grupo impartido: public static void asignaMonitorGrupo(HashMap<Integer, Monitor> monitores, int idMonitor){}   coja la nueva linea de GruposImpartidos y sustituya a la del fichero personas.txt  
#2
Hola muy buenas tengo que creo que es de teoria.

Tengo un metodo llamado imprimePersonas(); el cual lo que va a  hacer como su nombre dice es imprimir personas en un fichero siguiendo un formato especifico , para ello quiero que el metodo tenga 3 parametros de entrada:
public static void imprimePersonas(String tipoPersona, String nombreFichero, Arraylist<Personas> listPersonas)

bien la pregunta consiste en ¿Hay alguna manera de pasar un arraylist por parametro sin especificar que tipo de dato trabaja el ArrayList?? es decir yo tengo dos tipos de personas Unas son monitores y las otras usuarios ( ambas heredan de una clase llamada persona) entonces  quiero saber si hay alguna manera de pasar el arraylist sin especificar si se trata de   ArrayList<Monitor>  o ArrayList<Usuario>
#3
Seguridad / Primeros pasos en seguridad ?
3 Abril 2017, 21:49 PM
Hola muy buenas a todos !

Estoy aquí porque me gustaría saber por donde empezar en la seguridad informática , es un ambito que me llama mucho y me encantaría aprender. Soy estudiante de teleco y aun no he tenido la asignatura de seguridad informática .Se que no es fácil y que no es para todo el mundo pero me gustaría que me ayudaseis a poder empezar y que me dieseis consejos sobre  que leer , que practicar , que ver ..... todas esas cosas serán de ayuda! Lo máximo que he conseguido ha sido conseguir la clave wifi de la casa de mi amigo  con wifislax así que ... tengo muuuuucho que aprender
#4
Java / Herencia java
3 Abril 2017, 14:27 PM
Hola muy buenas a todos!! tengo un problema en este programa que estoy realizando ahora mismo  el cual mediante la lectura de un fichero que contiene personas y sus datos, va a ordenarlas en función de si son monitores o usuarios en dos HashMaps diferentes ( Monitores y Usuarios). El problema está en que las clases monitores y usuarios heredan de la clase personas un identificador( idPersona) el nombre, los apellidos y la fecha de nacimiento. Esos 4 datos a la hora de imprimir los HashMap de Personas y Monitores me dice que son null y no deberia de ser asì , a parte cuando intento imprimir un hashmap con todas las personas , me dice la ruta donde se encuentra la clase personas . Os adjunto el codigo! muchas gracias!

MI PREGUNTA: ¿Porque cuando relleno el HashMap de Usuarios y Monitores , no me rellena los campos de  id nombre apellidos fecha de nacimiento? ¿ Porque cuando imprimo el hashmap de personas me imprime el paquete donde se encuentra ?
ejemplo:

{1=es.uvigo.pii.instalacionesdeportivas.main.Persona@6d06d69c, 2=es.uvigo.pii.instalacionesdeportivas.main.Persona@7852e922, 3=es.uvigo.pii.instalacionesdeportivas.main.Persona@15db9742}

Código (java) [Seleccionar]


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import es.uvigo.pii.instalacionesdeportivas.main.Persona;

public class FicheroPersonas {

public static void main(String[] args) {

// TODO Auto-generated method stub

HashMap<Integer,Persona> Personas= new HashMap<Integer,Persona>();
HashMap<Integer,Usuario> Usuarios= new HashMap<Integer,Usuario>();
HashMap<Integer,Monitor> Monitores= new HashMap<Integer,Monitor>();

String[] datos=new String[10];
int i=0;
int idsOcupados=0;
FileReader fr = null;
BufferedReader br = null;
BufferedWriter bw;

String rutaPersonas = "personas.txt";
File personas = new File(rutaPersonas);

try {
// Apertura del fichero y creacion de BufferedReader para poder
// hacer una lectura comoda (disponer del metodo readLine()).

fr = new FileReader(personas);
br = new BufferedReader(fr);

// Lectura del fichero
String linea;
while ((linea = br.readLine()) != null) {

if(linea.startsWith("*")!=true){

datos[i]=linea; // guardo la linea
i++;

}


if(linea.startsWith("*")==true){

if(datos[1].equalsIgnoreCase("usuario")){
System.out.println(datos[0]+datos[1]);

Usuario usuario=new Usuario(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4],datos[5],datos[6],Float.parseFloat(datos[7]),datos[8]);


Usuarios.put(Integer.parseInt(datos[0]), usuario);


Persona persona=new Persona(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4]);

Personas.put(Integer.parseInt(datos[0]), persona);

}
if(datos[1].equalsIgnoreCase("monitor")){
System.out.println(datos[0]+datos[1]);

Monitor monitor=new Monitor(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4],Integer.parseInt(datos[5]),datos[6]);
Monitores.put(Integer.parseInt(datos[0]), monitor);

Persona persona=new Persona(Integer.parseInt(datos[0]),datos[2],datos[3],datos[4]);

Personas.put(Integer.parseInt(datos[0]), persona);
}
i=0;
idsOcupados ++;
}

}
if(datos[1].equalsIgnoreCase("usuario")){
System.out.println(datos[0]+datos[1]);
idsOcupados ++;
}
if(datos[1].equalsIgnoreCase("monitor")){
System.out.println(datos[0]+datos[1]);
idsOcupados ++;
}
System.out.println(Monitores);
System.out.println(Usuarios);
System.out.println(Personas);

} catch (Exception e) {
e.printStackTrace();
} finally {
// En el finally cerramos el fichero, para asegurarnos
// que se cierra tanto si todo va bien como si salta
// una excepcion.
try {
if (null != fr) {

fr.close();

}
} catch (Exception e2) {
e2.printStackTrace();
}
}

}


}


public class Usuario extends Persona{

public int idUsuario;
public String nombre;
public String apellidos;
public String fechaNacimiento;
public String fechaAlta;
public String actividadesPrevias;
public float saldo;
public String actividadesActuales;

public Usuario(int idUsuario,String nombre,String apellidos,String fechaNacimiento,String fechaAlta,String actividadesPrevias, float saldo, String actividadesActuales){
super(idUsuario,nombre,apellidos,fechaNacimiento);

this.fechaAlta=fechaAlta;
this.actividadesActuales=actividadesActuales;
this.saldo=saldo;
this.actividadesPrevias=actividadesPrevias;
}

//GETTERS & SETTERS




@Override
public String toString() {
return "Usuario [nombre=" + nombre + ", apellido=" + apellidos+", fechaNacimiento=" + fechaNacimiento
+ ", fechaAlta=" + fechaAlta + ", actividadesPrevias=" + actividadesPrevias + ", saldo=" + saldo
+ ", actividadesActuales=" + actividadesActuales + "]";
}







public String getFechaAlta() {
return fechaAlta;
}

public void setFechaAlta(String fechaAlta) {
this.fechaAlta = fechaAlta;
}

public String getActividadesPrevias() {
return actividadesPrevias;
}

public void setActividadesPrevias(String actividadesPrevias) {
this.actividadesPrevias = actividadesPrevias;
}

public float getSaldo() {
return saldo;
}

public void setSaldo(float saldo) {
this.saldo = saldo;
}

public String getActividadesActuales() {
return actividadesActuales;
}

public void setActividadesActuales(String actividadesActuales) {
this.actividadesActuales = actividadesActuales;
}

}


public class Monitor extends Persona{

public int idMonitor;
public String nombre;
public String apellidos;
public String fechaNacimiento;
public int horasAsignables;
public String GruposImpartidos;

public Monitor(int idMonitor,String nombre, String apellidos, String fechaNacimiento, int horasAsignables, String GruposImpartidos){
super(idMonitor,nombre,apellidos,fechaNacimiento);


this.horasAsignables=horasAsignables;
this.GruposImpartidos=GruposImpartidos;


}
   


@Override
public String toString() {
return "Monitor [nombre=" + nombre + ", apellidos=" + apellidos + ", fechaNacimiento=" + fechaNacimiento
+ ", horasAsignables=" + horasAsignables + ", GruposImpartidos=" + GruposImpartidos + "]";
}




public int getHorasAsignables() {
return horasAsignables;
}

public void setHorasAsignables(int horasAsignables) {
this.horasAsignables = horasAsignables;
}

public String getGruposImpartidos() {
return GruposImpartidos;
}

public void setGruposImpartidos(String gruposImpartidos) {
GruposImpartidos = gruposImpartidos;
}


}


public class Persona {

public int idPersona;
public String nombre;
public String apellidos;
public String fechaNacimiento;

public Persona(int idPersona, String nombre, String apellidos,String fecha){
super();

this.idPersona=idPersona;
this.nombre=nombre;
this.apellidos=apellidos;
this.fechaNacimiento=fechaNacimiento;

}
//GETTERS & SETTERS
public int getIdPersona() {
return idPersona;
}

public void setIdPersona(int idPersona) {
this.idPersona = idPersona;
}

public String getNombre() {
return nombre;
}



public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

public String getFechaNacimiento() {
return fechaNacimiento;
}

public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}





}


#5
Hola muy buenas, y gracias a todos los que me ayuden!

el problema es el siguiente: tenia un adware en el pc el cual no conseguia eliminar de ninguna manera, este lo que hacia era cambiar la pagina de inicio de google chrome asi como el motor de busqueda a otros motores como amisites por ejemplo. Desde que esto pasó el portatil comenzo a ir mas lento asi que como no tenia mucha informacion en el pc decidí formatearlo y reinstalar W10 pro.

Para reinstalar W10 pro lo hago desde un USB Booteable , he usado tanto windows media creation tool como Rufus para poder hacerlo booteable. Hasta aqui todo bien, el problema esta en que tengo dos ISO diferentes, la original descargada de microsoft y la otra descargarda de un post en fiuxy.com

Cuando utilizo la oficial instala crea el proceso de instalacion y cuando llega al siguiente paso despues de preparando los dispositivos  pone preparando y el circulo de puntos dando vueltas durante horas lo he tenido mas de 20 horas y no acaba nunca.

En cambio cuando no utilizo la oficial me salta el error 0xc0000255

alguien me puede ayudar?? Gracias!
#6
 ; esto forma parte de un programa mayor ; el porblema esta en que cuando lo ejecuto y le introduzco por teclado un valor tal que resp pasa a ser igual a ... por ejemplo '3f', es decir: resp[0]=3 resp[1]=f entonces me deberia de volver a pedir que escoja un nuevo nivel de dificultad pero no lo hace. Lo que hace es retornarme la parte entera del array y , si no tiene parte entera me devuelve un 0; LO QUE QUIERO QUE HAGA ES QUE SI INTRODUZCO UN CARACTER ME LO DETECTE Y ME DIGA QUE VUELVA A INTRODUCIR LA DIFICULTAD. MUCHAS GRACIAS  ;D
int main(){
int control=0,n,i,dif;
char resp[4];
printf("Nivel actual %i \n", dificultad);

do{
printf("Elige el nuevo nivel[1..100]: \n");
fflush(stdin);
scanf(" %s",  &resp);

n=strlen(resp);          //COMPROBACIONES
if(n<1||n>=4){control=1;}

for(i=0;i<n;i++){   //letras
if(resp[i]<'0'&& resp[i]>'9'){
control=2;}}
switch(control){
case 1:
printf("\nHas seleccionado un n\243mero no v\240lido\n\n");break;
case 2:
printf("El numero ha de contener solo digitos\n");break;
case 0:
dif=atoi(resp);
if(dif>=1&&dif<=100){
printf("\nHas establecido numero de intentos máximo como: %i \n\n", dif);control=0;}
else{printf("\nHas establecido un n\243mero no v\240lido\n\n");
control==1;
}
}
}while(control==3 || control==2 || control==1);
return 0;}
#7
Hola buenas, os pido ayuda con este programa. Lo que quiero es ordenar unos caracteres de tal manera que primero se impriman '*' , luego '|' y final mente' _ '. Para eso tiene que  comparar un array predefinido con valor= 1234 , con otro que introducimos por teclado. Si estos dos son iguales el programa para de ejecutarse; sino sigue. Si el valor es correcto ha de escribir ****. Si un numero esta escrito en el array pero esta en una posicion incorrecta | y si no esta en el array una _. Por ejemplo : introducimos 1245 y nos devuelve **|_ , otro ejemplo; introducimos 3524 y devuelve *||_
Muchas gracias!!Y tened paciencia por favor , soy nuevo en programacion.

ADEMAS si no fuera mucho pedir podriais decirme a que se debe este fallo en concreto:

si escribimos cualquier numero mayor de 4 lo da por bueno, cuando deberia de escribir una barra baja ya que en el array solo hay numeros  menores de 4.

#include<stdio.h>
#include<time.h>
#include<ctype.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>

int main (){
char cad[5]="1234";
char resp[5];
char resul[5];
char correc[5]="****";
int asteriscos=0, barras=0, bajas=0, intentos=0, controlador=0,i,j,k,q;
  do{
 
 
intentos ++;
printf("Escribe una cadena de 4 numeros + ENTER: ");
scanf("%s", &resp);
for(i=0;i>4;i++){
if(resp[i]<'0'||resp[i]>'9'){
printf("No pueden ser caracteres, tienen que ser numeros");}
else continue;}
if (strlen(resp)!=4 ){//si la cadena escrita es demasiado larga o corta
printf("Error de longitud de cadena ");}




for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){


if (i == j && cad[i]==resp[j]){
asteriscos=asteriscos+1;j==4;}

if(i != j && cad[i]==resp[j]){
barras=barras+1;j==4;}

else {
bajas=bajas+1;j==4;
}
}
}



for(q=0;q<asteriscos;q ++){
resul[q]='*';}
for(q=asteriscos; q<asteriscos+barras; q++){
resul[q]='/';}
for(q=asteriscos+barras; q<4; q++){
resul[q]='_';}
for(k = 0; k<4; k++){
printf("%c", resul[k]);}

printf("\n");

if(strcmp(resul,cad)==0){
intentos==100;}
}while(intentos<100);return 0;}


MOD EDIT: Titulo y etiqueta GeSHi corregidos.
#8
Hola a todos abrí este tema ya que necesito ayuda urgente con este programa. Estoy estudiando telecomunicaciones y me han mandado hacer el juego mastermind en lenguaje c. No estan definidas todas las funciones principales del juego aun , tan solo NivelDificultad, MENU, JugarPartida, impresionCARATULA... en fin; la duda es la siguiente: Al ejecutar la función NivelDificultad, se supone que la variable dificultad tendria que cambiar su valor de 100 por el valor que devuelve la funcion NivelDificultad. Eso lo que haíia sería que al ejecutar seguidamente JugarPartida limitar el numero de intentos que se puede jugar. Pero no lo hace, no guarda el valor devuelto con la funcion NivelDificultad. Algun consejo por favor? todos seran bien recibidos; soy nuevo en esto asi que  tener piedad  ;D :rolleyes:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>


//FUNCIONES CREADAS:

void impresionCARATULA();
void JugarPart(int dificultad, int intentos);
void Gene_Num_Aleatorios();
int NivelDificultad(int dificultad);
int MENU(int *dir_opcion, int dificultad, int control, int intentos);



int main(){
int opcion, num_adivinar[4],num_jugador,  control,  dificultad, intentos;
control=1;

impresionCARATULA();
dificultad=100;
do{

control=MENU(&opcion,  dificultad,  control, intentos);}while(control==1);


}

//CODIGO DE LAS FUNCIONES CREADAS:


void impresionCARATULA(){//imprimir la caratula intentar que sea lo mas corto posible.
int i;
int aste;
int linea=0;
do{
linea ++;
if(linea != 4){
for(aste=0; aste<80;aste ++){// LINEA DE ASTERISCOS
printf("*");}
printf("\n");}
else{
for(aste=0;aste<32;aste ++){printf("*");}printf(" MASTER MIND ");for(aste=0;aste<35;aste ++){printf("*");}printf("\n");//Linea mastermind
}}while(linea<7);}


int MENU(int *dir_opcion, int dificultad, int control, int intentos){//imprimir el menú
printf("\n1) Jugar partida \n2) Jugar partida de prueba\n3) Establecer nivel de dificultad\n4) Listar historial de partidas\n0) Salir\n\n ¿Siguiente operacion?\t");
scanf("%i", dir_opcion);

switch(*dir_opcion){
case 1:
control=1;
JugarPart(dificultad, intentos);
break;

case 2:
control=1;
break;

case 3:
control=1;
NivelDificultad( dificultad);
break;
case 4:
control=1;
printf("Has selecionado Listar historial de partidas\n");
break;
case 0:
printf("Has seleccionado Salir\n");
control=0;
break;
default:
control=1;
printf("Has seleccionado una opcion no valida\n");
break;

}return control;
}
int NivelDificultad(int dificultad){
int c1=0;
do{
printf("Seleccione un numero de 1 a 100 para establecer el numero de intentos: \t");
scanf("%i", & dificultad);
if(1<dificultad && dificultad<100){
printf("Has establecido numero de intentos máximo como: %i \n\n", dificultad);
c1=0;}
else{printf("Has selecionado un numero no valido\n");c1=1;}}while(c1!=0);return dificultad;}

void Gen_Num_Aleatorio_y_Comp(int adivinar[],int n){

int i;
    int bande;
    int j;
int cont;
srand (time(NULL));
do{
for(cont=0; cont<4; cont++){
adivinar[cont]=(rand() %10); //del 0 al 10
for(j=0;j<4;j ++){
for(i=j+1;j<3;i++){
if(adivinar[j]==adivinar[i]){
bande=1;

}
else continue;
}
}

}}while(bande!=1);
printf("correcto");}


void JugarPart(int dificultad, int intentos){
    printf("Has seleccionado Jugar Partida con dificultad %i \n", intentos);

do{
intentos++;
printf("2f\t", dificultad);
}while(intentos<dificultad);
}
#9
Hola a todos abrí este tema ya que necesito ayuda urgente con este programa. Estoy estudiando telecomunicaciones y me han mandado hacer el juego mastermind en lenguaje c. No estan definidas todas las funciones principales del juego aun , tan solo NivelDificultad, MENU, JugarPartida, impresionCARATULA... en fin; la duda es la siguiente: Al ejecutar la función NivelDificultad, se supone que la variable dificultad tendria que cambiar su valor de 100 por el valor que devuelve la funcion NivelDificultad. Eso lo que haíia sería que al ejecutar seguidamente JugarPartida limitar el numero de intentos que se puede jugar. Pero no lo hace, no guarda el valor devuelto con la funcion NivelDificultad. Algun consejo por favor? todos seran bien recibidos; soy nuevo en esto asi que  tener piedad  ;D :rolleyes:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>


//FUNCIONES CREADAS:

void impresionCARATULA();
void JugarPart(int dificultad, int intentos);
void Gene_Num_Aleatorios();
int NivelDificultad(int dificultad);
int MENU(int *dir_opcion, int dificultad, int control, int intentos);



int main(){
int opcion, num_adivinar[4],num_jugador,  control,  dificultad, intentos;
control=1;

impresionCARATULA();
dificultad=100;
do{

control=MENU(&opcion,  dificultad,  control, intentos);}while(control==1);


}

//CODIGO DE LAS FUNCIONES CREADAS:


void impresionCARATULA(){//imprimir la caratula intentar que sea lo mas corto posible.
int i;
int aste;
int linea=0;
do{
linea ++;
if(linea != 4){
for(aste=0; aste<80;aste ++){// LINEA DE ASTERISCOS
printf("*");}
printf("\n");}
else{
for(aste=0;aste<32;aste ++){printf("*");}printf(" MASTER MIND ");for(aste=0;aste<35;aste ++){printf("*");}printf("\n");//Linea mastermind
}}while(linea<7);}


int MENU(int *dir_opcion, int dificultad, int control, int intentos){//imprimir el menú
printf("\n1) Jugar partida \n2) Jugar partida de prueba\n3) Establecer nivel de dificultad\n4) Listar historial de partidas\n0) Salir\n\n ¿Siguiente operacion?\t");
scanf("%i", dir_opcion);

switch(*dir_opcion){
case 1:
control=1;
JugarPart(dificultad, intentos);
break;

case 2:
control=1;
break;

case 3:
control=1;
NivelDificultad( dificultad);
break;
case 4:
control=1;
printf("Has selecionado Listar historial de partidas\n");
break;
case 0:
printf("Has seleccionado Salir\n");
control=0;
break;
default:
control=1;
printf("Has seleccionado una opcion no valida\n");
break;

}return control;
}
int NivelDificultad(int dificultad){
int c1=0;
do{
printf("Seleccione un numero de 1 a 100 para establecer el numero de intentos: \t");
scanf("%i", & dificultad);
if(1<dificultad && dificultad<100){
printf("Has establecido numero de intentos máximo como: %i \n\n", dificultad);
c1=0;}
else{printf("Has selecionado un numero no valido\n");c1=1;}}while(c1!=0);return dificultad;}

void Gen_Num_Aleatorio_y_Comp(int adivinar[],int n){

int i;
   int bande;
   int j;
int cont;
srand (time(NULL));
do{
for(cont=0; cont<4; cont++){
adivinar[cont]=(rand() %10); //del 0 al 10
for(j=0;j<4;j ++){
for(i=j+1;j<3;i++){
if(adivinar[j]==adivinar[i]){
bande=1;

}
else continue;
}
}

}}while(bande!=1);
printf("correcto");}


void JugarPart(int dificultad, int intentos){
   printf("Has seleccionado Jugar Partida con dificultad %i \n", intentos);

do{
intentos++;
printf("2f\t", dificultad);
}while(intentos<dificultad);
}