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 - theluigy13etv

#1
Hola, saludos a todos. Espero que alguien que sepa sobre bases de datos me pueda aclarar algunas dudas. Ando estudiando sobre la creación de una base de datos a partir de cero comenzando desde el análisis y luego pasado por la fase de identificar las entidades y relaciones aplicando allí el diagrama entidad relación.
Luego de esto según encontré en los textos existe una teoría que permite convertir el Diagrama Entidad Relación al modelo Relacional con tablas. De esta forma si trato de modelar un proceso encontrando las entidades que participan y sus interrelaciones obtengo el Modelo Entidad Relación y luego a partir de allí mediante conversiones puedo obtener el Modelo Relacional y así poder implementar las tablas con sus respectivas llaves primarias, foráneas, etc.
Pero muy a parte, hay un tema llamado Normalización en donde a partir de documentos como Facturas, Boletas, Contrato de Servicios, etc se aplica un proceso de normalización (FN1, FN2, FN3) y se obtienen distintas tablas con sus respectivas llaves, osea ya todo el modelo relacional a partir de un solo documento.
¿Mi duda radica en que no sé si ambas técnicas que describo se complementan o son técnicas diferentes? En caso que se complementen, en qué orden se aplicaría? Tengo esa duda de cómo usar ambas técnicas para un mismo diseño de base de datos. Gracias
#2
Quisiera saber si conocen la herramienta de software que utilizaron para ofuscar el código de esa manera y si saben si de alguna manera se puede volver a la normalidad. Si me dieran algunas pistas o información me ayudarían mucho  :)


Muchas gracias  ;D
#3
¿Alguna herramienta para ofuscar código javascript?

A parte del packer, quisiera saber si existe alguna herramienta online o para descargar que permita ofuscar código javascript o JQuery y que genere algo como la siguiente imagen:



Muchas gracias  ;D
#4
Estaba en clase de introducción a la algoritmia y el profesor planteó un problema. Yo lo interpreté de una forma pero el profesor de otra forma. Aquí está el enunciado y la solución . Si alguien lo pudiera revisar y ver cuál de las dos soluciones cree que sea la correcta  ;D

Un club ha adquirido polos y gorras para sus socios con un descuento del 15% para los polos y de 5% para las gorras. Diseñe un algoritmo que determine, en total, el importe de la compra, el importe del descuento y el importe a pagar por la compra efectuada.


PRIMERA INTERPRETACIÓN

Datos de entrada:
* Precio unitario de cada polo: (precio_polo)
* Precio unitario de cada gorra: (precio_gorra)
* Cantidad de polos: (cant_polo)
* Cantidad de gorras: (cant_gorra)




Datos de salida:


* Importe de la Compra Total (ic)
* Importe del Descuento Total (id)
* Importe a pagar Total (ip)



Algoritmo:


SEGUNDA INTERPRETACIÓN

Datos de entrada:

* Importe a pagar del polo: (ipp)
* Importe a pagar de la gorra: (ipg)



Datos de salida:

* Importe de la Compra Total (ic)
* Importe del Descuento Total (id)
* Importe a pagar Total (ip)


Algoritmo:


El profesor dijo que la segunda respuesta era la correcta  :P
#5
http://extension.agarplus.io/v2.js

¿Está oculto? Quisiera saber el contenido ya que al parecer está oculto ._. Se supone que encontraría código javascript.



Gracias
#6
Verán que he creado una página JSF llamada registro.xhtml en donde tengo un formulario en el que ingreso los datos de una persona y las registro en un arrayList de mi ManagedBean y debajo del formulario una tabla donde voy mostrando la lista de las personas que han sido registradas.

Tengo dos ManagedBean, uno llamado Usuario.java y otro ListaUsuarios.java

Usuario.java
Código (java) [Seleccionar]

package ManagedBean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Usuario {
   private static int contador = 0;
   private int id;
   private String username;
   private String password;
   private String nombres;
   private String apellidoMaterno;
   private String apellidoPaterno;
   private int edad;
   private String sexo;
   private String ciudad;

   public Usuario() {
       this.setId(contador++);
   }

   public int getId() {
       return id;
   }

   public void setId(int id) {
       this.id = id;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   public String getNombres() {
       return nombres;
   }

   public void setNombres(String nombres) {
       this.nombres = nombres;
   }

   public String getApellidoMaterno() {
       return apellidoMaterno;
   }

   public void setApellidoMaterno(String apellidoMaterno) {
       this.apellidoMaterno = apellidoMaterno;
   }

   public String getApellidoPaterno() {
       return apellidoPaterno;
   }

   public void setApellidoPaterno(String apellidoPaterno) {
       this.apellidoPaterno = apellidoPaterno;
   }

   public int getEdad() {
       return edad;
   }

   public void setEdad(int edad) {
       this.edad = edad;
   }

   public String getSexo() {
       return sexo;
   }

   public void setSexo(String sexo) {
       this.sexo = sexo;
   }
 
   public String getCiudad() {
       return ciudad;
   }

   public void setCiudad(String ciudad) {
       this.ciudad = ciudad;
   }

   @Override
   public int hashCode() {
       int hash = 5;
       hash = 47 * hash + this.id;
       return hash;
   }

   @Override
   public boolean equals(Object obj) {
       if (obj == null) {
           return false;
       }
       if (getClass() != obj.getClass()) {
           return false;
       }
       final Usuario other = (Usuario) obj;
       if (this.id != other.id) {
           return false;
       }
       return true;
   }
}


ListaUsuarios.java
Código (java) [Seleccionar]

package ManagedBean;

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class ListaUsuarios {

   private List<Usuario> usuarios;
   private List<String> ciudades;
 
   public ListaUsuarios() {
       usuarios = new ArrayList<>();
     
       ciudades = new ArrayList<>();
       ciudades.add("Lima");
       ciudades.add("Arequipa");
       ciudades.add("Cusco");
       ciudades.add("Tacna");
       ciudades.add("Tumbes");
       ciudades.add("Madre de Dios");
   }

   public List<Usuario> getUsuarios() {
       return usuarios;
   }

   public void setUsuarios(List<Usuario> usuarios) {
       this.usuarios = usuarios;
   }
 
   public void agregaUsuario(Usuario usuario) {
       usuarios.add(usuario);
   }
 
   public void eliminaUsuario(Usuario usuario) {
       usuarios.remove(usuario);
   }

   public List<String> getCiudades() {
       return ciudades;
   }

   public void setCiudades(List<String> ciudades) {
       this.ciudades = ciudades;
   }    
}


El problema lo tengo en mi página JSF llamada registro.xhtml en donde si lo hago de esta manera no tengo ningún problema, los datos se van guardando y apareciendo correctamente en la pantalla:
Código (java) [Seleccionar]

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://xmlns.jcp.org/jsf/html"
     xmlns:f="http://xmlns.jcp.org/jsf/core">
   <h:head>
       <title>Data Table</title>
   </h:head>
   <h:body>
       <h:form>
           <h:panelGrid columns="2">
               <h:outputLabel for="txtValor" value="Valor:"/>
               <h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
             
               <h:outputLabel for="txtNombre" value="Nombre:"/>
               <h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
             
               <h:outputLabel for="btnAgregar"/>
               <h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
           </h:panelGrid>
       </h:form>
       <h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
           <h:column>
               <f:facet name="header">
                   <h:outputText value="valor"/>
               </f:facet>
               <h:outputText value="#{dato.valor}"/>
           </h:column>
           <h:column>
               <f:facet name="header">
                   <h:outputText value="Nombre"/>
               </f:facet>
               <h:outputText value="#{dato.nombre}"/>
           </h:column>
           <h:column>
               <h:form>
                   <h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
               </h:form>
           </h:column>
       </h:dataTable>
       <br/>
     
     
   </h:body>
</html>




Como se ve en el código de la página registro.xhtml primero hay un dataTable y segundo un formulario, pero si es que ahora cambio el orden de ambos controles, y primero pongo el formulario y luego el dataTable, el programa no funciona de forma correcta.

Si cambio a esto:
Código (java) [Seleccionar]

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://xmlns.jcp.org/jsf/html"
     xmlns:f="http://xmlns.jcp.org/jsf/core">
   <h:head>
       <title>Data Table</title>
   </h:head>
   <h:body>
       <h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
           <h:column>
               <f:facet name="header">
                   <h:outputText value="valor"/>
               </f:facet>
               <h:outputText value="#{dato.valor}"/>
           </h:column>
           <h:column>
               <f:facet name="header">
                   <h:outputText value="Nombre"/>
               </f:facet>
               <h:outputText value="#{dato.nombre}"/>
           </h:column>
           <h:column>
               <h:form>
                   <h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
               </h:form>
           </h:column>
       </h:dataTable>
       <br/>
     
       <h:form>
           <h:panelGrid columns="2">
               <h:outputLabel for="txtValor" value="Valor:"/>
               <h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
             
               <h:outputLabel for="txtNombre" value="Nombre:"/>
               <h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
             
               <h:outputLabel for="btnAgregar"/>
               <h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
           </h:panelGrid>
       </h:form>
   </h:body>
</html>



Se registran los usuarios pero sus datos están vacíos. No entiendo por qué de esta segunda forma no funciona. Además creo que el programa se vería mejor de la segunda forma pero así no funciona o.O
#7
Hola gente :) , estoy practicando el tema de polimorfimos en C++ y estoy usando el libro de Deitel titulado C++ Cómo programar 6ta edición. Como IDE utilizo el Dev C++ 5.11 y como sistema operativo Windows 7 Ultimate 64 bits.

Resulta que estoy en el capítulo 13 y he copiado los códigos tal y como salen en el libro y cuando lo compilo no hay problema, el error está cuando ejecuto el programa.

La idea es la siguiente. Declaro una clase llamada EmpleadoPorComision la cual será la clase padre o clase base. Luego declaro una clase hija llamada EmpleadoBaseMasComision la cual hereda de EmpleadoPorComision.
Ambas clases declaran el método imprimir el cual ha sido además declarado como virtual para poder dar uso del polimorfismo.

Dentro de la función main se crean los objetos correspondientes a las dos clases: empleadoPorComision y empleadoBaseMasComision.
Luego se declaran dos punteros: empleadoPorComisionPtr y empleadoBaseMasComisionPtr ,el primero del tipo de la clase padre y el segundo del tipo de la clase hija.
Luego se asigna al puntero empleadoPorComisionPtr el objeto de la clase padre empleadoPorComision y se intenta llamar al método imprimir de dicho objeto mediante el puntero:

empleadoPorComisionPtr = &empleadoPorComision ;
empleadoPorComisionPtr->imprimir();
                      // Desde aquí es donde se genera el error en tiempo de ejecución

Lo mismo se intenta hacer con empleadoBaseMasComisionPtr, que apunte al objeto de la clase hija empleadoBaseMasComision y luego llamar al método imprimir mediante el puntero:

empleadoBaseMasComisionPtr = &empleadoBaseMasComision ;
empleadoBaseMasComisionPtr->imprimir(); 
        // aquí también es donde se genera el error en tiempo de ejecución

Por último se intenta asignar la dirección del objeto empleadoBaseMasComision al puntero de la clase padre empleadoPorComisionPtr y llamar al método imprimir:

empleadoPorComisionPtr = &empleadoBaseMasComision;
empleadoPorComisionPtr->imprimir();


El código me parece que está bien porque es idéntico al que figura en el libro y el compilador no me marca ningún error de sintaxis pero sí el programa se para en tiempo de ejecución. El código es el siguiente:

EmpleadoPorComision.h
Código (cpp) [Seleccionar]

// EmpleadoPorComision.h

#ifndef COMISION_H
#define COMISION_H

#include <string>
using std::string;

class EmpleadoPorComision {

  public:

     EmpleadoPorComision(const string &, const string &, const string &,
        double = 0.0, double = 0.0);
     ~EmpleadoPorComision(); // destructor
     
     void setPrimerNombre(const string &);
     string getPrimerNombre() const;
     
     void setApellidoPaterno(const string &);
     string getApellidoPaterno() const;
     
     void setNumeroSeguroSocial(const string &);
     string getNumeroSeguroSocial() const;
     
     void setVentasBrutas(double);
     double getVentasBrutas() const;
     
     void setTarifaComision(double);
     double getTarifaComision() const;
     
     virtual double ingresos() const;
     virtual void imprimir() const;
     
  private:
     string primerNombre;
     string apellidoPaterno;
     string numeroSeguroSocial;
     double ventasBrutas;
     double tarifaComision;
};

#endif


EmpleadoPorComision.cpp
Código (cpp) [Seleccionar]
// EmpleadoPorComision.cpp
#include <iostream>
using std::cout;
using std::endl;

#include "EmpleadoPorComision.h"

// Constructor
EmpleadoPorComision::EmpleadoPorComision(
  const string &nombre, const string &apellido, const string &nss,
  double ventas, double tarifa)
  : primerNombre(nombre), apellidoPaterno(apellido), numeroSeguroSocial(nss) {
     
     setVentasBrutas(ventas);
     setTarifaComision(tarifa);
}

EmpleadoPorComision::~EmpleadoPorComision() {
}

void EmpleadoPorComision::setPrimerNombre(const string &nombre) {
  primerNombre = nombre;
}

string EmpleadoPorComision::getPrimerNombre() const {
  return primerNombre;
}

void EmpleadoPorComision::setApellidoPaterno(const string &apellido) {
  apellidoPaterno = apellido;
}

string EmpleadoPorComision::getApellidoPaterno() const {
  return apellidoPaterno;
}

void EmpleadoPorComision::setNumeroSeguroSocial(const string &nss) {
  numeroSeguroSocial = nss;
}

string EmpleadoPorComision::getNumeroSeguroSocial() const {
  return numeroSeguroSocial;
}

void EmpleadoPorComision::setVentasBrutas(double ventas) {
  ventasBrutas = (ventas < 0.0) ? 0.0 : ventas;
}

double EmpleadoPorComision::getVentasBrutas() const {
  return ventasBrutas;
}

void EmpleadoPorComision::setTarifaComision(double tarifa) {
  tarifaComision = (tarifa > 0.0 && tarifa < 1.0) ? tarifa : 0.0;
}

double EmpleadoPorComision::getTarifaComision() const {
  return tarifaComision;
}

double EmpleadoPorComision::ingresos() const {
  return getTarifaComision() * getVentasBrutas();
}

void EmpleadoPorComision::imprimir() const {
  cout << "empleado por comision: "
     << getPrimerNombre() << ' ' << getApellidoPaterno()
     << "\nnumero de seguro social: " << getNumeroSeguroSocial()
     << "\nventas brutas: " << getVentasBrutas()
     << "\ntarifa de comision: " << getTarifaComision();
}


EmpleadoBaseMasComision.h
Código (cpp) [Seleccionar]
// EmpleadoBaseMasComision.h
#ifndef BASEMAS_H
#define BASEMAS_H

#include <string>
using std::string;

#include "EmpleadoPorComision.h" // Declaración de la clase EmpleadoPorComision

class EmpleadoBaseMasComision : public EmpleadoPorComision {
  public:
     EmpleadoBaseMasComision(string const &, string const &, string const &,
        double = 0.0, double = 0.0, double = 0.0);
     ~EmpleadoBaseMasComision();
     
     void setSalarioBase(double);
     double getSalarioBase() const;
     
     virtual double ingresos() const;
     virtual void imprimir() const;
     
  private:
     double salarioBase;
};

#endif


EmpleadoBaseMasComision.cpp
Código (cpp) [Seleccionar]
// EmpleadoBaseMasComision.cpp
#include <iostream>
using std::cout;
using std::endl;

#include "EmpleadoBaseMasComision.h"

// Constructor
EmpleadoBaseMasComision::EmpleadoBaseMasComision(
  const string &nombre, const string &apellido, const string &nss,
  double ventas, double tarifa, double salario)
  // Llamada explícita al constructor de la clase base
  : EmpleadoPorComision(nombre, apellido, nss, ventas, tarifa) {
 
  setSalarioBase(salario);
}

// Destructor
EmpleadoBaseMasComision::~EmpleadoBaseMasComision() {
}

void EmpleadoBaseMasComision::setSalarioBase(double salario) {
  salarioBase = (salario < 0.0) ? 0.0 : salario;
}

double EmpleadoBaseMasComision::getSalarioBase() const {
  return salarioBase;
}

double EmpleadoBaseMasComision::ingresos() const {
  return EmpleadoPorComision::ingresos() + getSalarioBase();
}

void EmpleadoBaseMasComision::imprimir() const {
  cout << "con salario base ";
  // Invoca a la función imprimir de EmpleadoPorComision
  EmpleadoPorComision::imprimir();
 
  cout << "\nsalario base: " << getSalarioBase();
}


main.cpp
Código (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::endl;
using std::cin;
using std::fixed;

#include <iomanip> // setprecision
using std::setprecision;

// Incluye las definiciones de las clases

// #include "EmpleadoPorComision.h"; // Ya está incluído dentro de EmpleadoBaseMasComision.h
#include "EmpleadoBaseMasComision.h"

int main(int argc, char** argv) {
 
  // Crea el objeto de la clase base
  EmpleadoPorComision empleadoPorComision(
     "Sue", "Jones", "222-22-2222", 10000, .06);
     
  // Crea un apuntandor de la clase base
  EmpleadoPorComision *empleadoPorComisionPtr = 0; // 0
 
  // Crea un objeto de la clase derivada
  EmpleadoBaseMasComision empleadoBaseMasComision(
     "Bob", "Lewis", "333-33-3333", 5000, .04, 300);
     
  // Crea un apuntador de la clase derivada
  EmpleadoBaseMasComision *empleadoBaseMasComisionPtr = 0;
 
  // Establece el formato de salida de punto flotante
  cout << fixed << setprecision(2);
 
  // Imprime los objetos usando vinculación estática
  cout << "Invocando a la funcion imprimir en objetos de la clase base "
  << "\ny la clase derivada con vinculacion estatica\n\n";
  empleadoPorComision.imprimir(); // vinculación estática
  cout << "\n\n";
  empleadoBaseMasComision.imprimir(); // vinculación estática
 
  // Imprime los objetos usando vinculación dinámica
  cout << "\n\n\nInvocando a la funcion imprimir en objetos de la clase base "
  << "y la \nclase derivada con vinculacion dinamica";
 
  // Orienta el apuntador de la clase base al objeto de la clase base e imprime
  empleadoPorComisionPtr = &empleadoPorComision;
  cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
<< "\nde la clase base a un objeto de la clase base se invoca a la "
<< "funcion imprimir de la clase base:\n\n";
  empleadoPorComisionPtr->imprimir(); // Invoca a la función imprimir de la clase base
 
  // Orienta el apuntador de la clase derivada al objeto de la clase derivada e imprime
  empleadoBaseMasComisionPtr = &empleadoBaseMasComision;
  cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
<< "de la clase derivada\na un objeto de la clase base se invoca a "
<< "la funcion imprimir de la clase derivada:\n\n";
  empleadoBaseMasComisionPtr->imprimir(); // Invoca a la función imprimir de la clase derivada
 
  // Orienta un apuntador de la clase base a un objeto de la clase derivada e imprime
  empleadoPorComisionPtr = &empleadoBaseMasComision;
  cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador de la clase base"
     << "\na un objeto de la clase derivada se invoca a la funcion "
<< "imprimir de la clase derivada\n\n";

// Polimorfismo: invoca a la función imprimir de EmpleadoBaseMasComision;
// Apuntador de la clase base a un objeto de la clase derivada
  empleadoPorComisionPtr->imprimir(); // invoca a la función imprimir de la clase base. Manda el tipo del puntero
  cout << endl;
 
  cin.get();
  cin.get();
return 0;
}


El mensaje de error que recibo es el siguiente:


Pero no me explico por qué me sale dicho mensaje de error. Quisiera que por favor me ayuden a encontrar el error que estoy cometiendo porque yo no lo encuentro. Gracias
#8
Hola. Estoy practicando la conversión de modelos Entidad Relación al Modelo Relacional pero todavía tengo muchas dudas. El problema es el siguiente:

Tengo dos entidades: LIBRO y EDITORIAL. Sus atributos son:

Libro: isbn, título del libro
Editorial:  código de editorial, nombre de editorial

La llave primaria de la entidad Libro es isbn
La llave primaria de la entidad Editorial es código de editorial

La relación que pude encontrar es EDITA y la cardinalidad es de 1 a N (muchos). Un atributo de la relación es fecha de edición.

(1,1) : Cada libro es editado como mínimo por una editorial y como máximo por una editorial.
(1,N) : Cada editorial edita como mínimo un libro y como máximo muchos libros.

El modelo entidad relación sería el siguiente:


Ahora para pasarlo al Modelo Relacional la teoría dice que tengo dos opciones.

La primera opción es propagar la llave primaria de la entidad con cardinalidad 1 a la que tiene cardinalidad N formando parte de sus atributos no primos. También los atributos de la relación se propagan de esa forma. Con esta opción se desaparece la relación.

En mi caso la entidad con cardinalidad 1 es EDITORIAL así que tendría que propagar su llave primaria código de editorial a la entidad LIBRO que es la que tiene cardinalidad 1. También el atributo de la relación fecha de edición pasa a formar parte de los atributos no primos de la entidad LIBRO. El modelo quedaría entonces así:




La segunda opción es transformar la relación en una tabla cuya llave primaria sea solo la clave de la entidad con cardinalidad N. La llave primaria de la entidad con cardinalidad 1 forma parte de los atributos de primos de la nueva tabla.

En mi caso tendría que crear una nueva tabla a la que llamé EDITORIAL_LIBRO. Siguiendo lo que dice la teoría, la llave primaria de esta nueva tabla sería isbn que es en realidad llave de LIBRO. La llave código de editorial solo formaría parte de la tabla EDITORIAL_LIBRO como un atributo no primo.
Es en esta parte donde tengo dudas en cuanto a la representación de la cardinalidad. Estoy usando la representación conocida como patas de gallo y no sé cuál de estas tres formas sería la correcta:


Alguien que me pueda ayudar o que me recomiende algún libro o texto donde encuentre sobre esto? Muchas gracias
#9
Hola a todos :) . Espero que me puedan ayudar a aclarar mi duda. Lo que quiero es saber si es que desde mi ordenador puedo puedo ver el historial o saber qué páginas visita un usuario con su celular (Android, Windows Phone, ...) conectado vía wifi a mi red local. No tengo acceso al celular pero sí tengo el control total de mi red, router, etc. Muchas gracias :)
#10
Hola. Tengo un problema con la señal de internet en mi computadora. En mi casa hay un router (perdonen mi falta de conocimiento en redes) . De allí se reparte el internet a 4 computadoras y una de ellas es la mía.

Resulta que solo a mí se me va la señal de internet (a los demás no) pero sigo estando en la red. Osea, mi computadora todavía figura en la red pero cuando abro mi navegador de internet, de lo que estaba normal navegando, luego de unos minutos aparece el menaje "resolviendo host" y ya no carga. Luego de unos 5 minutos aproximadamente vuelve la señal y luego de unos minutos funcionando tranquilamente de nuevo sucede lo mismo y así constantemente, se va y vuelve.

Por lo que he visto los cables están bien. Le cambié los conectores de red y sigue pasando lo mismo. Entonces probé con iniciar en "modo a prueba de errores con funciones de red" y allí recién puedo navegar tranquilo y no se me va el internet. ¿Alguien podría sugerirme que podría hacer? Muchas gracias :)
#11
Hola :) , estoy intentando hacer el juego de pacman en modo consola en mis ratos de ocio y de pasada me voy recordando algunas cosas que ya me estaba olvidando y afianzando otros conceptos sobre la programación orientada a objetos.

Expondré lo que hice hasta ahora y luego mi duda. No es tanto sobre el código sino más que todo en cuanto a cómo funciona lo de la redefinición de una función virtual.

Resulta que tengo tres clases: PERSONAJE, PACMAN, FANTASMA:

Clase Personaje:
Código (cpp) [Seleccionar]

class PERSONAJE {
  private:
     int x, y;   // Coordenadas
     int simbolo;
     
  public:
     PERSONAJE(int = 1, int = 1, int = 1);
     void setX(int);
     void setY(int);
     void setSimbolo(int);
     int getX();
     int getY();
     int getSimbolo();
     virtual void mover(int);
     void pintar();
     void borrar();
};

/*
void PERSONAJE::PERSONAJE(int x, int y, char simbolo) {
  this->setX(x);
  this->setY(y);
  this->setSimbolo(simbolo);
}
*/

PERSONAJE::PERSONAJE(int _x, int _y, int _simbolo) : x(_x), y(_y), simbolo(_simbolo) {
  this->pintar();
}

void PERSONAJE::setX(int x) {
  this->x = (x > 0 ? x : 1);
  // x = (x > 0 ? x : 1); // Cuidado con este error logico, alli no estaria modificando al atributo
}

void PERSONAJE::setY(int y) {
  this->y = (y > 0 ? y : 1);
}

void PERSONAJE::setSimbolo(int simbolo) {
  this->simbolo = simbolo;
}

int PERSONAJE::getX() {
  return this->x;
}

int PERSONAJE::getY() {
  return this->y;
}

int PERSONAJE::getSimbolo() {
  return this->simbolo;
}

void PERSONAJE::mover(int tecla) {
 
  if (tecla == NADA) {
     return;
  }
  else {
     this->borrar();
     
     if (tecla == IZQUIERDA) {
        if (x > LIMITE_IZQUIERDO + 1) x--;
     }
 
     if (tecla == DERECHA) {
        if (x < LIMITE_DERECHO - 1) x++;
     }
 
     if (tecla == ABAJO) {
        if (y < LIMITE_INFERIOR - 1) y++;
     }
 
     if (tecla == ARRIBA) {
        if (y > LIMITE_SUPERIOR + 1) y--;
     }
     
     this->pintar();
  }
}

void PERSONAJE::pintar() {
  gotoxy(x, y);
  cout << (char)getSimbolo();
}

void PERSONAJE::borrar() {
  gotoxy(x, y);
  cout << " ";
}





Clase Pacman:
Código (cpp) [Seleccionar]

class PACMAN : public PERSONAJE {
  private:

  public:
     PACMAN(int = LIMITE_IZQUIERDO + 1, int = LIMITE_SUPERIOR + 1, int = 1);
     // No redefinimos el metodo pintar() asi que se llamara al de la superclase
};

PACMAN::PACMAN(int x, int y, int simbolo) : PERSONAJE(x, y, simbolo) {
}




Clase Fantasma:
Código (cpp) [Seleccionar]

class FANTASMA : public PERSONAJE {
  private:
     
  public:
     FANTASMA(int = (LIMITE_IZQUIERDO + LIMITE_DERECHO) / 2, int = (LIMITE_SUPERIOR + LIMITE_INFERIOR) / 2, int = 1);
     void mover();
};

FANTASMA::FANTASMA(int x, int y, int simbolo) : PERSONAJE(x, y, simbolo) {
}

void FANTASMA::mover() {
  int aleatorio = rand() % 4;
 
  this->borrar();
 
  switch (aleatorio) {
     case 0:
        if (getX() > LIMITE_IZQUIERDO + 1) setX(getX() - 1);
        break;
       
     case 1:
        if (getX() < LIMITE_DERECHO - 1) setX(getX() + 1);
        break;
       
     case 2:
        if (getY() < LIMITE_INFERIOR - 1) setY(getY() + 1);
        break;
       
     case 3:
        if (getY() > LIMITE_SUPERIOR + 1) setY(getY() - 1);
        break;
  }
 
  gotoxy(getX(), getY());
  this->pintar(); // Llama al método heredado pintar
}


Algunas constantes en mi código:
Código (cpp) [Seleccionar]

// Direccion
#define ARRIBA 105
#define ABAJO 107
#define IZQUIERDA 106
#define DERECHA 'l'

// Limites
#define LIMITE_SUPERIOR 2
#define LIMITE_INFERIOR 23
#define LIMITE_DERECHO 70
#define LIMITE_IZQUIERDO 20

#define NADA 0



Mi duda está en lo siguiente:
En mi clase base PERSONAJE defino una función virtual mover(int) la cual tiene un parámetro. Luego, declado dos clases derivadas: PACMAN y FANTASMA.
Dentro de la clase PACMAN (por el momento) no declaro ninguna otra función por lo que concluyo que va a heredar las ya declaradas en la clase base PERSONAJE.
Dentro de la clase FANTASMA estoy declarando una función llamada mover() sin parámetros. Esta función tiene el mismo nombre que la función virtual declarada en la clase base PERSONAJE pero se diferencia en que no tiene ningún parámetro. Entonces ante la duda de si en este caso estoy redefiniendo la función perteneciente al padre, encontré la siguiente información:

CitarPara redefinir una función virtual en una clase derivada, las declaraciones en la clase base y en la derivada deben coincidir en cuanto a número y tipo de los parámetros. Excepcionalmente pueden diferir en el tipo devuelto.

Entonces según esto, la función mover() perteneciente a la clase hija FANTASMA es diferente a la función mover(int) de la clase padre PERSONAJE (por su parámetro) por lo que podría concluir que no se estaría redefiniendo nada sino que, la clase FANTASMA contaría con dos funciones miembro diferentes:
   - mover()    : Obtenida por la herencia y declarada en el padre PERSONAJE
   - mover(int) : Declarada en la clase hija FANTASMA

Además de las otras funciones heredadas del padre: getX(), getY(), getSimbolo(), setX(int), setY(int), setSimbolo(int), .. , borrar(), pintar().


Siendo todo esto así, creo que no debería tener problemas al realizar llamadas tanto a las funciones mover() y mover(int) desde un objeto de la clase FANTASMA pero cuando realizo dichas llamadas, el compilador me genera un error márcandome esta llamada: f1.mover(IZQUIERDA);:


Código (cpp) [Seleccionar]

FANTASMA f1;
f1.mover();
f1.mover(IZQUIERDA);





No sé si me estoy haciendo demasiados rodeos  ;D . Espero que me haya dejado entender. Gracias a los que se tomen la molestia de leer y de ayudarme a entender el por qué me sale ese error :D . (Si pudieran también comentar sobre mi código, acepto sugerencias y críticas para poder mejorar. Respecto a la biblioteca conio tengo claro que no es estándar pero en este caso lo que trato más que todo es centrarme en aplicar correctamente los conceptos de la POO)
#12
Hola, tengo un pequeño problemita (si es que se le podría llamar así) con la consola cuando se ejecuta desde el Dev C++.
Luego de hacer algún programita, pulso el botón para compilar y ejecutar y al momento de aparecer la consola, aparece demasiado pequeña y tengo que estar cambiándole de tamaño en las propiedades cada vez que compilo-ejecuto un nuevo programa y hacer eso siempre me resulta muy molesto  :-\





Cuando abro directamente el cmd, la ventana me aparece de tamaño normal:




Quisiera saber si existe la forma para que cada vez que compile-ejecute mis programas desde el Dev C++ la consola no me aparezca pequeña y no tener que estar cambiándole el tamaño todas las veces  :-( . Quisiera poder configurarla solo una vez y que se mantenga ese tamaño para todas las demás veces. Si alguien me pudiera ayudar le estaría muy agradecido :)
#13
Tengo un problema, mayormente uso Google Chrome y ahora que intento entrar a la página de hotmail (www.hotmail.com) me aparece lo de la imagen siguiente:

A

¿A alguien más le pasa lo mismo?  :P
#14
Hola a todos, necesito una pequeña ayuda, resulta que conozco un poco de Java así que me animé a aprender C++ y ahora estoy practicando lo que es la herencia y el polimorfismo. Estoy que me tranqueo en la parte de la sobreescritura de métodos.

Verán, primero definí una clase base llamada Persona con dos atributos: "nombre" y "edad", además con 5 métodos públicos: "setNombre", "setEdad", "getNombre", "getEdad" y "metodo".

Luego definí dos clases derivadas de la clase Persona. Las clases derivadas son Alumno y Docente. Ambas clases con sus propios métodos set y get para manipular sus propios atributos (datos miembro) . Luego, en las clases derivadas Alumno y Docente redefiní la función miembro llamada "metodo" que heredaron de la clase base Persona.

Al final, en el método main, creé los objetos correspondientes a cada clase y luego hice que un puntero p de tipo de la clase base Persona ( Persona *p ) apunte a cada objeto creado para llamar a la función miembro "metodo" . Pensé que en cada caso se ejecutaría la función miembro correcta correspondiente a cada objeto pero al ver los resultados en pantalla me doy con la sorpresa de que en todos los casos se ejecuta la función miembro correspondiente a la clase base Persona. Tal vez estoy cometiendo un error y no sé como solucionarlo, espero que alguien me pueda ayudar, muchas gracias  :)

Código (C++) [Seleccionar]

#include <iostream>
#include <string>

using namespace std;

// Clase PERSONA
class Persona {

public:
  // Constructor con argumentos por defecto
  Persona(string nombre = "", const int edad = 0);
 
  // Métodos
  void setNombre(string nombre);
  void setEdad(const int edad);
  string getNombre();
  int getEdad();
 
  void metodo();;

private:
  string nombre;
  int edad;  
};

Persona::Persona(string nombre, const int edad) : nombre(nombre), edad(edad < 0 ? 0 : edad) {
  /*
  this->setNombre(nombre);
  this->setEdad(edad);
  */
}

void Persona::setNombre(string nombre) {
  this->nombre = nombre;  
}

void Persona::setEdad(const int edad) {
  this->edad = (edad < 0) ? 0 : edad;  
}

string Persona::getNombre() {
  return this->nombre;  
}

int Persona::getEdad() {
  return this->edad;  
}

void Persona::metodo() {
  cout << "Metodo de la clase base Persona" << endl;
}


// CLASE ALUMNO
class Alumno : public Persona {
 
public:
  // Constructor con argumentos por defecto
  Alumno(string nombre = "", int edad = 0, string codigo = "");
 
  void setCodigo(string codigo);
  string getCodigo();
 
  void metodo();
 
private:
  string codigo;
};

Alumno::Alumno(string nombre, int edad, string codigo)
  : Persona(nombre, edad), codigo(codigo) {
}

void Alumno::setCodigo(string codigo) {
  this->codigo = codigo;  
}
 
string Alumno::getCodigo() {
  return codigo;  
}
 
void Alumno::metodo() {
  cout << "Método redefinido de la clase derivada Alumno" << endl;  
}

// CLASE DOCENTE
class Docente : public Persona {
 
public:
  // Constructor con tres argumentos por defecto
  Docente(string nombre = "", int edad = 0, float salario = 0.0);
 
  void setSalario(float salario);
  float getSalario();
 
  void metodo();
 
private:
  float salario;
};

Docente::Docente(string nombre, int edad, float salario)
  : Persona(nombre, edad), salario(salario < 0.0 ? 0.0 : salario) {
}

void Docente::setSalario(float salario) {
  this->salario = (salario < 0.0) ? 0.0 : salario;  
}

float Docente::getSalario() {
  return salario;  
}

void Docente::metodo() {
  cout << "Método redefinido de la clase base Docente" << endl;  
}

int main()
{  
  Persona *p;
  cout << "PERSONAS:" << endl;
  p = new Persona("Dennis Ritchie", 19);      
  p->metodo();
 
  cout << "\nALUMNOS:" << endl;
  p = new Alumno("Bjarne Stroustrup", 22, "20080541x");
  p->metodo();
 
  p = new Alumno("Esther Noemí", 19, "21130515h");
  p->metodo();
 
  cout << "\nDOCENTES:" << endl;
  p = new Docente("Riquelmer Vazques", 58, 1500.0);
  p->metodo();
 
  cin.get();
  return 0;  
}
#15
Hola, espero que me puedan orientar, estos días estoy practicando el lenguaje de programación Python (recién lo estoy aprendiendo) , tengo algunos conocimientos de Java y estoy tratando de aplicar esos conocimientos hacia Python. Tengo la siguiente duda, quiero saber si es que en Python, desde el método __init__ de alguna clase, es posible realizar llamadas a otros métodos de la misma clase  :P .

En Java, por ejemplo al declarar una clase persona, en un principio yo accedía directamente a los atributos de la clase para inicializarlos desde dentro del constructor, de la siguiente manera:


public class Persona {
   private String nombre;
   private int edad;
   
   public Persona(String nombre, int edad) {        
       this.nombre = nombre;
       this.edad = edad        
   }
   
   public String getNombre() {
       return nombre;
   }
   
   public int getEdad() {
       return edad;
   }        
     
   public void setNombre(String nombre) {
       this.nombre = nombre;
   }
   
   public void setEdad(int edad) {
       this.edad = edad;
   }
}


Pero luego, me acostumbré a llamar a los métodos set desde dentro del constructor (para que estos se encarguen de la inicialización) como muestro a continuación:


public class Persona {
   private String nombre;
   private int edad;
   
   public Persona(String nombre, int edad) {        
       setNombre(nombre);
       setEdad(edad);        
   }
   
   public String getNombre() {
       return nombre;
   }
   
   public int getEdad() {
       return edad;
   }        
     
   public void setNombre(String nombre) {
       this.nombre = nombre;
   }
   
   public void setEdad(int edad) {
       this.edad = edad;
   }
}


Bueno, intenté hacer lo mismo en Python. En ese nuevo lenguaje me sale de la primera forma:


class Persona:
   def __init__(self, nombre, edad):
       self.nombre = nombre
       self.edad = edad

   def getNombre(self):
       return self.nombre

   def getEdad(self):
       return self.edad

   def setNombre(self, nombre):
       self.nombre = nombre

   def setEdad(self, edad):
       self.edad = edad


Y de la segunda forma lo hago así:


class Persona:
   def __init__(self, nombre, edad):
       self.setNombre(nombre)
       self.setEdad(edad)

   def getNombre(self):
       return self.nombre

   def getEdad(self):
       return self.edad

   def setNombre(self, nombre):
       self.nombre = nombre

   def setEdad(self, edad):
       self.edad = edad


Mi pregunta era si es que está bien eso que estoy haciendo, osea, llamar a los métodos set desde dentro del constructor de la clase (La segunda forma) . ¿Creen que sea una mala práctica?
#16
Hola, tengo un problema y espero encontrar la solución, muchas gracias de antemano a los que me puedan ayudar. En mi computadora tengo el programa llamado vmWare, y siempre luego de usar alguna máquina virtual, cierro el programa y tengo problemas pues mi computadora se vuelve recontra lenta, y si escucho alguna música , esta demora en sonar, incluso cuando empieza a reproducirse lo hace entrecortándose. No sé cuál podría ser el problema porque mi computadora tiene recursos aceptables: Windows 7 Ultimate, 500 GB de disco, 8GB de Ram, 1GB de video DDR5, etc...  :(


También tengo este problema, la máquina virtual que tengo ocupa algo de 80 GB y se encuentra en la unidad D. Y cuando trato de desfragmentar dicha unidad, el desfragmentador (Auslogic) no lo puede hacer.
#17
Hola, siempre me he preguntado esto, no creo que las editoriales utilicen el Microsoft Word para poder editar sus libros ya que estos vienen con muchas cosas, ¿alguien sabe qué tipos de programas usan? También los periódicos que tipo de programas usan. ¿Se trata de un software procesador de texto parecido a Word o uno de diseño gráfico como Corel Draw? Muchas gracias.
#18
Hola quería preguntarles si es que hay tendría problemas con las actualizaciones automáticas de windows (windows 7) si es que mi Windows no es original. Según había escuchado era que en esos casos tendría que desactivar las actualizaciones automáticas, pero quisiera estar seguro si es necesario.
#19
Hola, yo pensé que la función getch() y sus derivadas eran parte de la biblioteca conio de Borland, pero veo que a pesar que estoy usando el IDE Dev C++ puedo utilizar dicha función. Según el ANSI C esa función no es una función de la biblioteca estándar, ¿debería usarlo a pesar que el Dev me lo permite?
A parte de esto, en mi Dev C++ parece que este automáticamente me agrega las cabeceras stdio.h y stdlib.h pues sin que las agregue me compila código que contiene funciones como scanf, printf, system, etc.
#20
Hola, me surgió esta duda. Quería saber si es seguro copiar mis copias de seguridad en una máquina virtual. Lo que sucede es que tengo pensado crear una imagen de mi disco c y esa imagen (archivo) copiarlo en una carpeta dentro de una máquina virtual, para que luego cuando necesite recuperar dicha imagen recurra a mi máquina virtual y recuperar dicho archivo. No sé si sea seguro hacer eso, o si corro el riesgo de que la máquina virtual pierda esos archivos.  :rolleyes:
#21
Hola, me surgió esta curiosidad cuando estaba mezclando los distintos tipos de modificadores que existen en Java y en un momento en que declaré una clase como abstract y final el compilador me marcaba un error. Yo sé que el modificador abstract permite que una clase no pueda ser instanciada y que el modificador final hace que una clase no pueda ser extendida, es decir, no pueda tener clases hijas. Pero no sé la razón por la cual no puede ser ambas a la vez?  :rolleyes:
#22
Hola, tengo una pequeña duda. Cuando programaba en Visual Basic, al asignarle un título (Caption) a algún control como un botón, tenía la opción de utilizar el ampersand (&) para subrayar un caracter del nombre y así poder ejecutar dicho botón con el teclado (pulsando previamente la tecla ALT).

En Java, quiero realizar lo mismo pero  veo que no es igual, tal vez exista alguna propiedad para realizar esto o algún otro símbolo. Muchas Gracias
(PD: A lo más que pude hacer es subrayar un caracter usando HTML. Estoy programando usando NetBeans)
#23
Hola, tengo un pequeño problema. Mi Disco Duro es de 500 GB y tengo 3 particiones. C, D y E. Lo que pasa es que desde un principio no supe preveer mi espacio para los programas y mi partición C solo tiene 60 GB. Y conforme pasa el tiempo voy instalando programas pesados y ciertos juegos, y ahora solo me queda 1 GB de espacio libre. Las otras particiones D y E tienen mucho espacio libre y quería saber si es que existe algún software que me permita tomar parte del espacio de otras particiones para asignarlo a la partición C. Intenté ingresando al administrador de discos, pero por más que puedo liberar espacio en D y E, ese espacio no se lo puedo asignar a C porque no están contiguos. Muchas Gracias
#24
Hola, hace unas semanas quise adentrarme al mundo del GNU-Linux ya que siempre he usado productos Microsoft. Entonces para comenzar a probar otras cosas me descargué e instalé en una máquina virtual un tal Ubuntu 12.10
Luego de instalar quise usarlo, lo que me sorprendió fue ver un escritorio tan grande, incluso con barras de desplazamiento  :huh:  :huh:
Pero lo que no me gustó fue que era muy lento, a pesar que le di 2 GB, 4 GB de ram, seguía lento. No sé, tal vez si fue que la máquina virtual no soporta Ubuntu, o necesito una computadora más potente. ¿A alguien le ha pasado lo mismo?
Y otra cosa, quería saber qué distribución Linux me recomiendan, nunca he usado este SO y quiero empezar desde ahora. Gracias
#25
Bueno, he estado revisando el libro de Deitel y otros manuales y de allí he empezado a tomar un estilo propio de programación; quiero mostrarles la forma como estoy empezando a programar mis clases en Java. El problema que tengo es que a veces me parece que es muy redundante o que estoy llenando mi código de demasiadas llamadas a métodos y constructores lo cual creo que traería como consecuencia que el programa sea un poco más lento, pero por otro lado hace que mi código sea más ordenado y fácil de entender, bueno, quiero sus opiniones y tal vez alguna otra forma más elegante de hacerlo.

Les presento a manera de ejemplo muy sencillo la definición de dos clases: Clase Persona y Clase Alumno.

Código (java) [Seleccionar]

public class Persona {
  // Atributos privados
   private String nombre;
   private int edad;    
   
   public Persona() {        
       this(null, 0);        
   }        
   
   public Persona(String nombre) {        
       this(nombre, 0);
   }
   
   public Persona(String nombre, int edad) {
       super();    // Llamada explícita al constructor de la clase Object
       setNombre(nombre);
       setEdad(edad);
   }
   
   public void setNombre(String nombre) {
       this.nombre = nombre;
   }
   
   public void setEdad(int edad) {
       this.edad = edad;
   }
   
   public String getNombre() {
       return nombre;
   }
   
   public int getEdad() {
       return edad;
   }
       
   public String toString() {
       return String.format("%s: %s\n%s: %d\n",
           "Nombre", getNombre(),
           "Edad", getEdad());
   }  
}


Código (java) [Seleccionar]

public class Alumno extends Persona {    
   private String codigo;
   
   public Alumno() { this(null, 0, null); }
   
   public Alumno(String nombre) {
       this(nombre, 0, null);
   }
   
   public Alumno(String nombre, int edad) {
       this(nombre, edad, null);
   }        
   
   public Alumno(String nombre, int edad, String codigo) {
       super(nombre, edad);      // Llamada al constructor de la superclase directa  
       setCodigo(codigo);
   }
   
   public void setCodigo(String codigo) {
       this.codigo = codigo;
   }
   
   public String getCodigo() {
       return codigo;
   }
   
   public String toString() {
       return String.format("%s%s: %s\n", super.toString(),
           "Código", getCodigo());
   }
}
#26
No sé si solo a mi me sucede, pero cuando tenía mi monitor CRT podía ver mejor las letras ya sea en editores de texto o documentos pdf, etc, osea más definidas y claras que ahora con mi monitor LED nuevo. Con el monitor actual las letras en ciertos editores se ven como borrosas. ¿Existe alguna configuración que me estará faltando o será que los CRT eran mejores para mostrar texto?

Otra cosa, con los monitores CRT era necesario utilizar unos protectores o filtros de radiación para protegernos la vista, pero ahora con los monitores LEDs no observo que se sigan utilizando, ¿Qué acaso ya no es necesario?

Muchas gracias de antemano a aquellos que tomen su tiempo en responder.  :D
#27
Hola, hago esta pregunta porque empecé a aprender C desde hace unos meses, y ahora que quiero aprender C++ quería saber si todo lo que aprendí con respecto a las cadenas estáticas en C son lo mismo en C++. Por ejemplo: En C las cadenas estáticas son en realidad arreglos de caracteres incluyendo el caracter nulo que son apuntadas por un puntero de tipo char *

Osea la declaración:

char cad[5] = "c++";

En realidad C internamente lo trabaja como un arreglo con 4 caracteres: 'c', '+', '+' y '\0'

mientras que la variable cad es una especie de puntero constante. (char *)

¿Mi duda es si en C++ cuando utilice este tipo de estructuras se interpreta de la misma manera o hay alguna diferencia?.
#28
Hola, no conozco mucho de seguridad por lo que recurro a este foro para preguntarles esta duda.

Resulta que en el cmd coloqué el comando: netstat -b
y entre las cosas raras que encontré en la parte de Dirección remota es el siguiente texto:
mia04s04-in-f13:http
y también
mia05s01-in-f15:http

No entiendo mucho de estas cosas pero me dijeron que si encuentro algo raro es porque me pueden estar espiando ¿Qué opinan?
#29
Hola, quería hacerles una pregunta. Estoy pensando hacer un sistema de matrícula utilizando Java pero tengo una pequeña duda. Un profe me dijo que en todo proyecto en Java solo debe haber un único Formulario JFrame y varios JDialogs. Del JFrame llamas a los JDialog y los JDialogs se llaman entre ellos.

Para hacer mi sistema de matrícula necesito al principio una ventana que me pida ingresar USUARIO y CONTRASEÑA, y luego recién que aparezca la VENTANA PRINCIPAL desde donde puedo acceder a las diferentes opciones como CONSULTA, REGISTRO, BÚSQUEDAS, ETC....

Mi duda está en que no sé cuál será el Formulario tipo JFrame, ¿El primer formulario que me pide loggearme?? o ¿¿la VENTA PRINCIPAL de mi aplicación??

Yo estuve pensando en que mi VENTANA PRINCIPAL debía ser mi JFrame, pero en ese caso mi ventana de inicio de sesión sería el JDialog, debido a que la ventana de inicio de sesión debe ir antes que la VENTANA PRINCIPAL tendría que llamar desde un JDIALOG a un JFRAME y según lo que me dijo mi profe eso estaría mal.

Lo segungo que pensé era hacer que mi ventana loggeadora sea un JFrame y que mi VENTANA PRINCIPAL junto a las otras sean JDialog pero como que esa idea no me cuadra porque mi ventana principal es se supone la "principal" y por tanto debería ser un JFRAME.

Espero me deje entender. ¿Alguna sugerencia o alguien que me aclare un poco?
#30
Hola, quisiera saber si es que puedo instalar en una pc varios sistemas operativos para que cuando inicie el ordenador pueda elegir de una lista el SO con el que quiera iniciar. He visto PCs que tienen XP y 7, pero quisiera saber si puedo hacer con varios: Osea si es que puedo instalar DOS, Windows 3.1, Windows 95, 98 y XP para elegir.

Creo que lo más común es Windows 98 y XP, pero quisiera saber si es que puedo instalar por lo menos el trío 95-98-XP. Y si hay algún buen manual que me puedan recomendar.  ::)

Por lo que pude investigar puedo utilizar windows 95 si formateo mi partición como FAT32, y XP en NTFS. Y que tengo que instalar en el orden de antiguedad de menor a mayor. Ahora, yo solo sé utilizar el FDISK. ¿Con el FDISK puedo hacer eso o necesito otro programa?
#31
De antemos agradezco a todos los que me van a ayudar.
Tengo un gran problema, hace un par de horas estuve ordenando toooooodos mis archivos y carpetas del disco duro, y hubo varias que eliminé, pero resulta que al final de todo, me di cuenta que entre las carpetas que borré estaba una con muchos archivos muy importantes de la universidad y personales. No me di cuenta del error porque no había nombrado esa carpeta correctamente. Bueno, intenté con varios recuperadores como recovery my files, recuva, dickdiggest (que no encuentro el serial), pero ninguno me recuperó los archivos. Cuando borraba las carpetas lo hacía defrente, no lo hacía archivo por archivo sino la carpeta al porrazo, nisiquiera lo mandé a la papelera sino con una combinación de tecla shift + suprimir. En los programas que utilicé para recuperar seleccioné la dirección dónde estaba la carpeta que había borrado, pero luego del análisis me salen varios archivos excepto los que había borrado. Espero ayudas, si me pueden recomendar un buen programa recuperador.  :-\
#32
Hago esta pregunta porque por más que leo y leo no puedo internalizar el concepto de flujo ya que no encuentro definiciones precisas.
Por un lado he leído que un flujo es una abstracción de todo aquello que produzca o consuma información

Por otro lado leí que un flujo de entrada/salida representa una fuente de entrada o un destino de salida, entonces me imagino que un flujo de entrada podría ser el teclado y un flujo de salida el monitor.  ;D Entonces podría decir que un flujo puede representar diversas clases de fuentes como archivos, teclados, micrófonos, escáner, etc mientras que también podría representar diversas clases de destinos como monitores, impresoras, archivos, etc. Hasta aquí todo bien.

Luego me confundo al leer que un flujo representa una secuencia de bytes ¿ qué acaso el flujo no era la fuente de dónde se extraen los bytes o el destino hacia dónde van los bytes ? Incluso en un libro encontré que un flujo se refiere a los datos ordenados que se leen de un archivo o se escriben en un archivo. Con esto me confunden y ahora me hacen creer que el flujo son los datos que se mueven.

Luego leo lo siguiente: Un programa utiliza un flujo de salida para escribir los datos en un destino ¿ :huh:? Ahora me salen con que el flujo no es el destino en dónde llegan los datos sino que el flujo es el tubo por dónde movilizo los datos para que lleguen al destino.

Total, ¿el flujo es el fuente/destino? o ¿es el tubo por dónde se mueven los datos? o ¿es en sí los datos que se mueven?

Pues si es que hago una analogía con un río por dónde se desplaza el agua, entonces tendría:
Fuente/Destino
Canal
Agua

¿Cuál es el flujo? La Fuente/Destino - El Canal por dónde se desplaza el agua - ¿El agua?
De antemano gracias a todos por sus respuestas.  : ::)
#33
Hola a todos, hace mucho tiempo hice un programa en Visual Basic 6.0 y para ello tenía un monitor de 17 pulgadas en donde utilizaba la resolución 1024*768. Ahora, lo probé en un monitor de 19 pulgadas con otra resolución y observo que la ventana de mi programa no se adapta a la pantalla. ¿Saben si es que se puede hacer que una aplicación hecha en Visual Basic se adapte a la pantalla? ¿O es necesario diseñar un formulario de presentación distinto dependiendo de la resolución?
#34
Hola a todos, tenía una duda con respecto a las clases de Swing. Resulta que en el instituto en el que todas las computadoras trabajan con Windows XP hice un pequeño y simple programa en Java utilizando las clases de Swing. Bueno, resulta que llegando a mi computadora traté de hacer el mismo programa y utilizando también swing. (Mi computador es un poco más moderno que los del instituto ya que trabaja sobre Windows 7 y uso como IDE el NetBeans y jdk más actual) Pero al momento de ejecutar la aplicación estando en mi computadora me doy con la sorpresa que ambos tienen un aspecto diferente. (Osea la aplicación hecha en la pc del instituto tiene un aspecto diferente al de la aplicación "idéntica" que hice en mi computadora).
Pero lo peor es que el aspecto de los botones y de los colores en mi PC son más horribles que las de la aplicación que hice en mi instituto. ¿No que Swing era independiente de la plataforma?

Les muestro el programa que hice en mi instituto y tal como se muestra en mi computadora.



Y ahora el programa que hice en mi computadora y tal como se muestra en la misma



¿Por qué una misma aplicación se ve de distinta manera en la misma computadora? ¿Depende de la plataforma en dónde se codificó? ¿Se puede cambiar el estilo de los controles tanto como el color y la forma?
#35
Hola a todos, tengo el programa Microsoft Virtual PC y allí instalé el Windows 98, bueno ahora esto es una pequeña duda. Cuando uso la máquina virtual, no pareciera que fuera una máquina real, osea, a diferencia de cuando uso una máquina real, en la máquina virtual se nota que el movimiento del mouse es un poco lento o parpadeante a diferencia de un mouse en una máquina real en la que el movimiento es continuo. ¿Es siempre así?
Espero haberme dejado entender.
#36
Hola a todos, resulta que me instalé el Windows 95 en mi PC Virtual y luego de terminar de instalarlo , luego de que empieza a cargar, antes de que me salga el escritorio y todo lo demás, me sale el mensaje de error siguiente:

Al inicializar el dispositivo IOS:
Error de protección de Windows. Es necesario reiniciar el equipo.


Luego de eso se queda allí sin hacer nada más. ¿Alguien sabe que puedo hacer?
#37
Hola, estuve probando la Virtual PC de Microsoft y me pude instalar el DOS 7.10 y luego encima de este el Windows 3.1, fue la primera vez que me instalaba y usaba estos sistemas operativos. Luego quise instalar el Windows 95 pero no se podía, salía un mensaje que necesitaba otro tipo de sistema operativo que sea de tipo actualización o algo así. Bueno, opté por crear otra máquina virtual e instalar el Windows 95 desde cero, pero para eso necesito el disco de inicio de Windows 95. Busqué por internet y encontré una página de donde me descargué un programa que me pide que ingrese mi disquete para que me cree el disco de inicio, pero lo malo es que no tengo disquetera en mi PC. Ni siquiera creo que tenga el conector FDC dentro de la placa. Entonces quería saber si existe algún programa que permite crear un disquete virtual y utilizar ese disquete virtual para crear mi disco de inicio de Windows 95.
#38
Hola a todos, resulta que tengo una computadora con el sistema operativo windows 7 de 64 bits y luego que me la compré estuve pasando todos mis archivos de mi PC antigua (una pentium III con sistema operativo windows 98) en la que tenía muchísimos archivos, entre ellos mis amados juegos como mario, pacman, etc...,. Resulta que estos archivos y algunos otros no funcionan en mi nueva computadora. Estuve leyendo por internet y me entró las ganas de instalarme una PC virtual en la que pueda instalar los windows antiguos, pero me surge la duda si es que en mi computadora con windows 7 de 64 bits puedo hacer eso. ¿Qué software me recomiendan? Me bajé la PC Virtual de Microsoft, pero veo que solo se puede instalar desde Windows 98 hacia adelante, y también me entra la curiosidad de poder instalar DOS o el Windows 3.1. ¿En qué software de PC Virtual podría hacer eso?
#39
Esto es una pregunta que me hago, por más que creo una multitud de directorios dentro de otros, al visualizar las propiedades del directorio raiz observo que no ocupa espacio en disco: 0 bytes. ¿El nombre de dichos directorios acaso no se almacena en disco?

Y otra pregunta: Dos archivos de texto o lo que sea con el mismo contenido, ocupan el mismo espacio independientemente de la longitud del nombre. ¿Por qué?
#40
Hola a todos, tengo esta duda simple. Así como para abrir los programas que conforman el office, en el cuadro ejecutar escribo: winword, excel, powerpnt, ... etc. Quisiera saber cuál es el nombre ejecutable de NetBeans.  Muchas gracias.
#41
Hola, ayer se me ocurrió tratar de programar un juego en C++ y la verdad que se necesita de bastante ingenio y creatividad. Bueno, estoy usando el Borland C++ 5.02 (un poco antiguo) y me estoy ayudando de las funciones de la librería no estándar conio, como textcolor(), gotoxy(), clrscr(), etc... también uso rand().

Mi juego se trata de una especie de laberinto con minas en donde tienes que mover el cursor mediante las flechas direccionales del teclado, y se trata de llegar desde un posición inicial hasta una posición final (representado por un asterisco *).
Las minas están representados por equis x.

El problema está en que al terminar el juego, ocurre un error inesperado.

Espero que alguien me ayude a terminar mi juego, que es el primero que hago en toda mi vida. Uso el borland C++ 5.02. Muchas gracias.

YA sé que todavía faltan muchas cosas más, pero la lógica me preocupa por ahora.

Usé:
- Funciones en C.
- Paso por valor y por seudoreferencia (paso por valor de la dirección de memoria)
- Punteros
- función rand() de stdlib.h
- gotoxy(), clrscr(), getch() de conio.h
- Estructuras
- Arreglos y cadenas
- Estructuras de control (if, else, switch, for, while, do-while)

El código es el de abajo:
#42
Este código lo he visto como una especie de firmas de varios usuarios y me ha generado la duda de saber si es que significa algo en particular  :rolleyes: :huh: :huh:¿?

Citar
(( 1 / 0 )) &> /dev/null || {
   echo -e "stderrrrrrrrrrrrrrrrrrr";
}
#43
Hola a todos, resulta que estoy aprendiendo a crear pilas y a realizar las operaciones básicas como creación de pilas, recorrido, inserción de nodos y eliminación de nodos. Creo que voy bien porque todo me estaba saliendo bien. Luego, decidí implementar un menú en mi programa para poder elegir la operación que desea hacer el usuario, y fue recién que me genera problemas. El problema específicamente está en lo siguiente:

El menú es:

Citar
MENU DE OPCIONES

1. Crea Pila
2. Recorre Pila
3. Elimina Nodo
4. Inserta Nodo
0. SALIR
   

Y el error sale cuando elijo la opción cero 0, me sale un mensaje de error y no entiendo el porqué, tal vez hay algo que se me está escapando de las manos.
Estaré agradecido si me ayudan a encontrar el error.

Código:


#include <stdio.h>

struct Luis {
  int cod;
  struct Luis *punt;      
};

typedef struct Luis Nodo;

Nodo *pila=NULL;
short int llave;

void menu();
Nodo *Crea_Nodo(int cod);
void Crea_Pila(Nodo **h);
void Recorre_Pila(Nodo *h);    
void Elimina_Nodo(Nodo **h);
void Inserta_Nodo(Nodo **h);        
         
int main() {
  menu();  
}

Nodo *Crea_Nodo(int cod) {
  Nodo *aux;
  aux = malloc(sizeof(Nodo));
  aux->cod=cod;
  aux->punt=NULL;
  return aux;
}

void Crea_Pila(Nodo **h) {
  Nodo *aux;
  int i, n, cod;
  printf("\nCreando la Pila...\n");
  llave=1;
  *h = NULL;
  printf("\n\tIngrese la cantidad de Nodos: ");
  scanf("%d", &n);
  puts("");
  for(i=0; i<n; i++) {
     printf("\t> ");
     scanf("%d", &cod);
     if(*h==NULL)
        *h=Crea_Nodo(cod);
     else {
        aux=Crea_Nodo(cod);
        aux->punt=*h;
        *h=aux;
     }
  }
  if(h!=NULL) printf("\n\tLa pila ha sido creada\n");
}

void Recorre_Pila(Nodo *h) {
  printf("\nRecorriendo Pila\n\n");
  if(h==NULL) printf("\n!!! La pila esta vacia !!!\n");
  while(h!=NULL) {
     printf("\t--> %d ", h->cod);
     h=h->punt;              
  }    
  puts("");
}

void Elimina_Nodo(Nodo **h) {
  Nodo *aux;
  char resp;
 
  printf("\nDesea eliminar nodo?\n");
  scanf("%d", &resp);
  if(resp==0) return;
  do{
     if(*h==NULL) {
        printf("\nLa pila esta vacia, no puede seguir eliminando nodos\n");            
        return;
     }
     else {
        aux=(*h)->punt;
        free(*h);
        *h=aux;
     }
     printf("\nDesea seguir eliminando nodos?\n");
     scanf("%d", &resp);
  }while(resp);
}

void Inserta_Nodo(Nodo **h) {
  int num;
  Nodo *aux;
  char resp;
 
  do{
     printf("\nIngrese dato a insertar a la pila: ");    
     scanf("%d", &num);
     if(*h==NULL)
        *h=Crea_Nodo(num);
     else {
        aux=Crea_Nodo(num);
        aux->punt = *h;
        *h=aux;    
     }
     printf("\nDesea seguir insertando datos?");
     scanf("%d", &resp);  
  }while(resp);
}

void menu() {
  short int resp;
  do{
     printf("\n\t\t\tMENU DE OPCIONES\n");
     printf(  "\t\t\t----------------\n\n");    
     printf("\t1. Crea Pila\n");
     printf("\t2. Recorre Pila\n");
     printf("\t3. Elimina Nodo\n");
     printf("\t4. Inserta Nodo\n");
     printf("\t0. SALIR\n");
     printf("\n\t Ingrese opcion ==> ");
     scanf("%d", &resp);
     
     switch(resp) {
        case 1:    
           Crea_Pila(&pila);
           break;
        case 2:
           if(llave==1) Recorre_Pila(pila);
           else puts("\a");
           break;
        case 3:
           if(llave==1) Elimina_Nodo(&pila);    
           else puts("\a");
           break;            
        case 4:
           if(llave==1) Inserta_Nodo(&pila);    
           else puts("\a");
           break;
        default:
           printf("\nAdios\n");    
     }        
  }while(resp>0);
}


Estoy sospechando que el problema está en el módulo MENU, pero no lo encuentro, lo demás veo que está bien porque lo he probado antes sin el MENU
#44
Hola a todos, estoy recién iniciándome en esto de la programación orientada a objetos en el lenguaje de programación Java, y aunque tiene un gran parecido a C y a C++, también es muy diferente en cuanto a los conceptos de clases y objetos, es un modo más natural para programar.

Bueno, estoy tratando de hacer un programa sencillo que permite llenar un vector de 10 elementos y luego ordenarlos mediante un método, este ordenamiento debe de ser del INTERCAMBIO. Todo está bien hasta que llego al momento en el que creo un método que permita realizar el intercambio. Cuando lo compilo y lo interpreto, puedo llenar los datos, pero al final, al mostrarme los resultados, no se ordena. Tal vez hay algo que no me doy cuenta y que está fallando, espero por favor que alguien me ayude a encontrar el error y así poder corregirlo, de paso que aprendo a realizar el paso de parámetros por referencia (o pseudoreferencia al estilo de C)

Ahí va mi código:



import java.util.*;
       
public class Arreglo2 {
   public static void main(String [] args) {
       int [] p;
       p= new int[10];
       
       llenaVector(p);
       muestraVector(p);
   }
   
   public static void llenaVector(int [] x) {
       Scanner lee=new Scanner(System.in);
       int i;
       
       System.out.println("A continuación va a llenar el vector");
       for(i=0; i<x.length; i++) {
           System.out.print(i+". ");
           x[i]=lee.nextInt();
       }
   }
   
   public static void muestraVector(int [] x) {
       int i;
       System.out.println("Vector: #elementos: "+x.length);
       for(i=0; i<x.length; i=i+1) {
           System.out.printf("x[%2d]=%2d\n", i, x[i]);
       }
   }
   
   public static void ordenaVector(int [] x) {
       int i,j;
       for(i=0; i<x.length-1; i++) {
           for(j=i+1; j<x.length; j++) {
               if(x[i]>x[j]) {
                   intercambia(x,i,j);
               }    
           }
       }
   
   }
   public static void intercambia(int [] x, int i, int j) {
       int temp;
       temp=x[i];
       x[i]=x[j];
       x[j]=temp;
   }
   
   
}
#45
Hola a todos, ayer me di con la sorpresa al abrir mi cuenta de hotmail que se habían enviado un mensaje en inglés a todos mis contactos, en el mensaje que se envió había un hipervínculo que no me atreví a darle clic. Alguien sabe si se trata de un virus? ¿Y cómo podría eliminarlo? Muchas gracias