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 - m@o_614

#1
Saludos

Necesito saber de que manera se pueden expirar las contraseña de un nuevo usuario, o sea creo el usuario, le doy una contraseña y la proxima vez que este se loguee oblique al usuario a cambiar la contraseña. Intenté usar el comando chage -d 0, pero este no expira la contraseña inmediatamente despues de la creacion del usuario sino que se tiene que hacer manualmente. Hay alguna manera de hacerlo automaticamente

De antemano gracias
#2
PHP / envio de correo con función phpmailer
23 Octubre 2016, 20:54 PM
Saludos

Soy principiante en porgramación web y estoy haciendo una pequeña aplicación que debe de enviar un formulario por correo. Simplemente ingresas el correo al que deseas enviar y das clic en el boton. Instale correctamente el wamp y la libreria PHPMailer, pero no se cual sea el problema

.
Código (php) [Seleccionar]
<?php
    
include_once('phpmailer/class.phpmailer.php');
    include_once(
'phpmailer/class.smtp.php');

    if(isset(
$_POST['correo'] && !empty($_POST['correo'])))
    {
      
$mail = new PHPMailer();
      
$mail->IsSMTP();
      
$mail->SMTPAuth true;
      
$mail->SMTPSecure "ssl";
      
$mail->Host "smtp.gmail.com";
      
$mail->Port 465;

      
$mail->Username ='xxxxxxxxx@gmail.com';
      
$mail->Password '*********';

      
//Agregar destinatario
      
$para $_POST['correo'];
      
$mail->AddAddress($para);

      
$mail->Send();
    }
 
?>


no se cual puede ser el error, esta es la parte hecha en html donde se ingresa el correo al que deseas enviar

Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <title>
     Pounce
   </title>
   <link rel="stylesheet" type="text/css" href="../css/styles.css" media="screen" />
 </head>
 <body>
   <div class="bor">
     <img src="../images/pounce.jpg" alt="" />
   </div>
   <div class="env-correo">
   <FORM action="enviar.php" METHOD="POST">

     <p>
       <h3>Escribe el correo al que deseas enviar una invitacion:</h3>
     <INPUT name="correo" required>
     </p>

    <INPUT type="submit" value="Enviar">
   </FORM>

   </div>
 </body>
</html>
#3
Programación General / Lisp
16 Mayo 2016, 00:12 AM
Saludos

Tengo el siguiente codigo en lisp que es un sistema experto para apagar un incendio. El
problema es que no entiendo muy bien el funcionamiento del programa. Primero esta defrule  inicio, y despues esta el initial-fact, pero no se que significa esta instrucción. Despues tenemos(assert (se-quema (read))), que lee el material que se esta quemando, pero apartir de alli ya no se como continua la ejecución del código. Si alguien me lo pudiera explicar se lo agradeceria

Código (lisp) [Seleccionar]
(deffacts inicio
    (materiales A papel madera tela)
    (materiales B aceite gas lubricante)
    (materiales C magnesio sodio potasio)
    (extintores A agua sustancia-quimica-seca)
    (extintores B co2 sustancia-quimica-seca)
    (extintores C co2 espuma)
)

(defrule tipo-incendio
    (se-quema ?material)
    (materiales ?tipo $? ?material $?)
    =>
    (assert (incendio-tipo ?tipo))
    (printout t "Hay un incendio de tipo " ?tipo crlf)
    (printout t "De que es el extintor?" crlf)
    (assert (tengo-extintor-de (read)))
)

(defrule tipo-extintor
    (tengo-extintor-de ?x)
    (extintores ?tipo $? ?x $?)
    =>
    (assert (tengo-extintor ?tipo ?x))
    (printout t "Tenemos un extintor de " ?x " que es de tipo " ?tipo crlf)
)

(defrule puedo-apagar
    (incendio-tipo ?tipo)
    (tengo-extintor ?tipo ?x)
    =>
    (assert (puedo-apagar))
    (printout t "El incendio se puede apagar con el extintor de " ?x crlf)
)

(defrule inicio
    (initial-fact)
    =>
    (printout t "Que se quema? " crlf)
    (assert (se-quema (read)))
)

#4
Programación C/C++ / guardar una imagen bmp
20 Noviembre 2015, 17:53 PM
Saludos

Tengo el siguiente código en C++ que tiene una función llamada Bresenham(), que nos va a dibujar una(s) linea(s) simple en la ventana. Una vez que se dibujó la línea, el usuario debe de dar clic derecho en la ventana para que las líneas se guarden como una imagen bmp. Para esto tengo que crear dos estructuras: bmpInfoHeader y bmpFileHeader. El problema que tengo es que en la estructura de bmpFileHeader no se cómo calcular los campos de altura y anchura, y al momento de abrir la imagen no me aparece nada

Código (cpp) [Seleccionar]
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdint.h>
#include<gl/glut.h>

typedef struct
{
   uint32_t tamanio;
   uint16_t campoReservado;
   uint32_t offset;
}bmpFileHeader;

typedef struct
{
   uint32_t tamanioEncabezado;
   uint32_t anchura;
   uint32_t altura;
   uint16_t planos;
   uint16_t profundidadModeloColor;
   uint32_t compresion;
   uint32_t tamanioImagen;
   uint32_t bmpx;
   uint32_t bmpy;
   uint32_t colores;
   uint32_t impColores;
}bmpInfoHeader;

float a[90000];
int x0=0,y0=0,xf=0,yf=0;
int puedeImprimir=0;
FILE *bmp = NULL;
unsigned char *imagen;
bmpInfoHeader infoEncabezado;
bmpFileHeader encabezadoArchivo;

void init(void);
void putpixel(int x,int y);
void Bresenham(int x0,int y0,int x1,int y1);
void display(void);
void onMotion(int x,int y);
void onMouse(int button, int e, int x, int y);
void onPassive(int x,int y);
void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado);
void crearEncabezadoArchivo(bmpFileHeader *encabezadoArchivo);
void Guardar(bmpFileHeader *encabezadoArchivo,bmpInfoHeader *infoEncabezado);

int main()
{
   glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
   glutInitWindowSize(300, 300);
   glutInitWindowPosition(100, 100);
   glutCreateWindow("Practica 2. Trazo de lineas con mouse");
   init();
   glutDisplayFunc(display);
   glutMotionFunc(onMotion);
   glutMouseFunc(onMouse);
   glutPassiveMotionFunc(onPassive);
   glutMainLoop();
}

void init(void)
{
  glClearColor(1.0, 1.0, 1.0, 0.0);
  glMatrixMode(GL_PROJECTION);
  gluOrtho2D(0.0, 300.0, 0.0,300.0);
}

void putpixel(int x,int y)
{
   glColor3f(0.0, 0.0,0.0);
   glBegin(GL_POINTS);
   glVertex2i(x,y);
   glEnd();
}

void Bresenham(int x0,int y0,int x1,int y1)
{
   int dx,dy,p,x,y,pasox = 1,pasoy = 1,dosDymenosDx,dosDy,i;
   glColor3f(0.0,0.0,1.0);
   dx = x1-x0;
dy = y1-y0;

   if(dx < 0)
      dx = dx*-1;
   if(dy < 0)
      dy = dy*-1;
   if(x1 < x0)
      pasox = -1;
   if(y1 < y0)
      pasoy = -1;

   x = x0;
   y = y0;
if( dx > dy )
   {
       putpixel(x,y);
       p = 2 * dy - dx;
       dosDymenosDx = 2 * ( dy - dx );
       dosDy = 2 * dy;
       for( i = 0; i < dx; i++ )
       {
            if( p >= 0 )
            {
                y += pasoy;
                p += dosDymenosDx;
            }
            else
               p += dosDy;
            x += pasox;
            putpixel(x,y);
       }
  }
  else
  {
      putpixel(x,y);
      p = 2*dx - dy;
      dosDymenosDx = 2 * ( dx - dy );
      dosDy = 2*dx;
      for( i = 0; i < dy; i++ )
      {
          if( p >= 0 )
          {
              x += pasox;
              p += dosDymenosDx;
          }
          else
             p += dosDy;
          y += pasoy;
          putpixel(x,y);
      }
  }
  glFlush();
}

void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT);
   if(puedeImprimir==1)
      glDrawPixels(300,300,GL_RGB,GL_UNSIGNED_BYTE,a);
   Bresenham(x0,y0,xf,yf);
   glFlush();
}

void onMotion(int x,int y)
{
   xf = x;
   yf = 300-y;
   glutPostRedisplay();
}

void onMouse(int button, int e, int x, int y)
{
   unsigned char media;
   if((button == GLUT_LEFT_BUTTON) && (e == GLUT_DOWN))
   {
       puedeImprimir = 1;
       x0 = xf = x;
       y0 = yf = abs(300-y);
   }
   else if((button == GLUT_LEFT_BUTTON) && (e == GLUT_UP))
      puedeImprimir = 0;
   else if((button == GLUT_RIGHT_BUTTON) && (e == GLUT_UP))
   {
       //Abrir();
       crearEncabezadoInformacion(&infoEncabezado);
       Guardar(&encabezadoArchivo,&infoEncabezado);
   }
}

void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado)
{
   infoEncabezado = (bmpInfoHeader*)malloc(sizeof(bmpInfoHeader));

   infoEncabezado->tamanioEncabezado = sizeof(bmpInfoHeader);
   infoEncabezado->anchura = ????;
   infoEncabezado->altura = ????;
   infoEncabezado->planos = 1;
   infoEncabezado->profundidadModeloColor = 24;
   infoEncabezado->compresion = BI_RGB;
   infoEncabezado->tamanioImagen = ?????;
   infoEncabezado->bmpx = 0;
   infoEncabezado->bmpy = 0;
   infoEncabezado->colores = 0;
   infoEncabezado->impColores = 0;
}

void Guardar(bmpFileHeader *encabezadoArchivo,unsigned char *imagen,bmpInfoHeader *info)
{
   uint16_t firma;
   if((bmp = fopen("practica no. 7.bmp","wt"))!= NULL)
   {
       firma = 0x4D42;
       encabezadoArchivo->campoReservado = 0;
       encabezadoArchivo->offset = sizeof(bmpFileHeader)+sizeof(bmpInfoHeader)+2;
       encabezadoArchivo->tamanio = info->tamanioImagen+sizeof(bmpFileHeader)+sizeof(bmpInfoHeader);
       fwrite(&firma,sizeof(firma),1,bmp);
       fwrite(encabezadoArchivo,sizeof(bmpFileHeader),1,bmp);
       fwrite(info,sizeof(bmpInfoHeader),1,bmp);
   }
   else
      printf("No se pudo crear fichero");
}

void onPassive(int x,int y)
{
   glReadPixels(0.0,0.0,300.0,300.0,GL_RGB,GL_UNSIGNED_BYTE,a);
   Bresenham(x0,y0,xf,yf);
}



alguna idea de cómo arreglarlo?
#5
Java / Multihilos
21 Septiembre 2015, 05:38 AM
Saludos, estoy haciendo un programa el cuál tiene que correr e imprimir X número de procesos en una JTextArea, para esto utilizo un hilo de la siguiente manera

Código (java) [Seleccionar]
class Hilo implements Runnable,KeyListener
{
Nodo enEjecucion;
private Hilo2 hilo2;
private static final int CANICAS_X_LOTE = 5;
private boolean puedeImprimir = true,sinPulsar = true;
private static LinkedList<Nodo> listos = new LinkedList<Nodo>();
private JTextArea areaTexto1,areaTexto2,areaTexto3,areaBloqueados;
private JTextField campoTeclaPulsada;
    private int numeroCanicas,id = 1;
   
    public Hilo(int numero,JTextArea a1,JTextArea a2,JTextArea a3,JTextField campoTeclax,JTextArea bloqueados)
{
numeroCanicas = numero;
areaTexto1 = a1;
areaTexto2 = a2;
areaTexto3 = a3;
areaBloqueados = bloqueados;
campoTeclaPulsada = campoTeclax;
campoTeclaPulsada.addKeyListener(this);
}
   
    public void run()
    {
for(int i = 1;i <= CANICAS_X_LOTE;i++)
       agregarCanica();
ejecutar();
    }
   
    public void agregarCanica()
    {
    Random t = new Random();
    Nodo nodo = new Nodo();
nodo.ID = id;
nodo.Tiempo = (int)(t.nextDouble() * 5 + 1);
nodo.tipoCanica = elegirTipoCanica();
listos.add(nodo);
id++;
    }
   
    public void ejecutar()
{
long tiempo;
while(!listos.isEmpty() && puedeImprimir)
{
imprimirListos();
try
{
enEjecucion = listos.removeFirst();
areaTexto1.setText(null);
if(id <= numeroCanicas)
   agregarCanica();
imprimirListos();
areaTexto2.append("ID: "+enEjecucion.ID+"\nTiempo: "+enEjecucion.Tiempo+"\nTipo: "+enEjecucion.tipoCanica+"\n\n");
tiempo = (enEjecucion.Tiempo)*1000;
Thread.sleep(tiempo);
areaTexto2.setText(null);

if(sinPulsar)
       areaTexto3.append("ID: "+enEjecucion.ID+"     Tiempo: "+enEjecucion.Tiempo+"    Tipo: "+enEjecucion.tipoCanica+"\n");
}
catch(InterruptedException e){
e.printStackTrace();
}
}
areaTexto2.setText(null);
}
   
    public void imprimirListos()
{
Iterator<Nodo> it = listos.iterator();
while(it.hasNext())
{
Nodo canica = (Nodo)it.next();
    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
}
areaTexto1.append("\n");
}
   
    public static String elegirTipoCanica()
{
int indice;
Random n = new Random();
String tipo[] = {"Ojo de gato","Transparente","Bolones","Trebol","Agatas","Vergel","Onix","Piojines","Tirito","Japonesa"};
indice = (int)(n.nextDouble() * 9 + 0);
return tipo[indice];
}

public void ocurrioBotonazo(ActionEvent e)
{
hilo2 = new Hilo2(areaBloqueados,enEjecucion);
hilo2.start();
}
}


El problema que tengo es que tengo que utilizar un evento de boton, una vez que oprima el boton se tiene que bloquear el proceso que se esta imprimiendo, yo por eso cree otro hilo al que le paso el JTextArea donde se va a imprimir el proceso bloqueado y el proceso.

Código (java) [Seleccionar]
public class Hilo2 extends Thread{
private long espera;
private Nodo bloqueado;
private JTextArea areaBloqueados;
private Random t = new Random();

public Hilo2(JTextArea area,Nodo enEjecucion)
{
bloqueado = enEjecucion;
}

public void run()
{
try
{
bloqueado.Tiempo = (int)(t.nextDouble()* 7 + 5);
espera = (bloqueado.Tiempo)*1000;
    areaBloqueados.append("ID: "+bloqueado.ID+"     Espera: "+bloqueado.Tiempo+"    Tipo: "+bloqueado.tipoCanica+"\n");
    Thread.sleep(espera); 
}
catch(InterruptedException s){}
}
}


pero me lanza un error una vez que el hilo2 se ejecuta y no se cual es el problema

de antemano gracias
#6
Java / duda con wait() y notify()
12 Septiembre 2015, 01:13 AM
Saludos

Estoy haciendo el siguiente código en el que tengo dos hilos, cada uno de los cuales
va a imprimir un contador en un área de texto. En el código tengo un botón, el cual
se va a bloquear(deja de imprimir) si hago clic en el botón y se desbloquea una vez que haga clic otra
vez en el botón. Para esto traté de usar un wait() y un notify, pero creo que no los
estoy usando correctamente porque la primera vez que oprimo el botón si se bloquea
pero a la segunda no se desbloquea

Código (java) [Seleccionar]
import java.awt.*;
import java.util.Random;
import java.awt.event.*;
import javax.swing.*;

class Hilo extends Thread{
private int cuenta = 0;
private long pausa;
private boolean puedeImprimir = true;
private JTextArea areaTexto;

Hilo(long milisegundos,JTextArea cuadroTexto){
pausa = milisegundos;
    areaTexto = cuadroTexto;
}

public void ocurrioBotonazo(){
    if(puedeImprimir)
       this.puedeImprimir = false;
    else
    {
    this.puedeImprimir = true;
    reanudar(this);
    }
}


public synchronized void reanudar(Hilo hilo)
{
if(hilo.puedeImprimir)
   hilo.notify();
}

public void run()
{
while(this.puedeImprimir)
{
try
{
this.imprimirContador();
Thread.sleep(pausa);
this.cuenta++;
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}

public void imprimirContador(){
String tiempo;
    tiempo = Integer.toString(cuenta);
    areaTexto.setText(tiempo);
}
}

class Interfaz extends JFrame implements ActionListener{
private JTextArea areaTexto,areaTexto2;
private JButton boton;
private Hilo hilo,hiloEvento;

Interfaz()
{
areaTexto = new JTextArea(10,7);
areaTexto2 = new JTextArea(10,7);
hilo = new Hilo(2000,areaTexto);
hiloEvento = new Hilo(1000,areaTexto2);
boton = new JButton("Pausar/Reanudar");
this.getContentPane().add(boton,BorderLayout.SOUTH);
this.getContentPane().add(areaTexto,BorderLayout.WEST);
this.getContentPane().add(areaTexto2,BorderLayout.EAST);

hilo.start();
        hiloEvento.start();
       
boton.addActionListener(this);
}

public void actionPerformed(ActionEvent event)
{
      hiloEvento.ocurrioBotonazo();
}
}


public class MensajesHilos {

public static void main(String[] args){
Interfaz i = new Interfaz();
i.setTitle("Hilos de Control");
i.setBounds(200, 200, 300, 240);
i.setVisible(true);
}
}



gracias de antemano
#7
Java / problema con setText("")
8 Septiembre 2015, 00:18 AM
Saludos

Tengo el siguiente problema con un textArea con el que estoy trabajando. Primero, con el método append() imprimo en el area de texto unos datos que se encuentran en una lista, esto por medio de un ciclo while que va a iterar hasta que la lista se quede vacia. una vez que termina de recorrer cada uno de los elementos de la lista se elimina el primer elemento de la lista y se limpia el textArea, esto lo hice con setText(""). Y se regresa sucesivamente al ciclo while() cada vez que eliminas un elemento de la lista. El problema es que no se como borrar correctamente el textArea para que se pueda volver a escribir alli

Código (java) [Seleccionar]
public void x(){
Nodo enEjecucion;
while(!lista.isEmpty())
{
imprimirListos();
                        enEjecucion = lista.getFirst();
lista.remove(enEjecucion);

}
}

public void imprimirListos()
{
Iterator<Nodo> it = lista.iterator();
while(it.hasNext())
{
Nodo canica = (Nodo)it.next();
    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
}
areaTexto1.setText("");
}


el setText("") que se supone deberia de limpiar no me deja volver a escribir nada en el area de texto. ¿cómo puedo solucionar esto??
#8
Java / Uso del KeyListener
27 Agosto 2015, 22:50 PM
Saludos, tengo el siguiente código el cuál me imprime el ID y el tiempo de duración de X número de procesos. El problema es que tengo que agregarle un evento de teclado, una vez que está corriendo el programa, si yo oprimo la tecla E me tiene que salir un mensaje de error y continuar con la ejecucion de procesos, y si oprimo la tecla S la ejecucion para por completo. Busqué información de keyListener y trate de agregarle el evento de teclado como pude, pero no funciona correctamente y no sé que estoy haciendo mal

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

class Hilo extends Thread{
private boolean puedeImprimir;
private int ID,numeroCanicas,Tiempo;
private JTextArea areaTexto;
private JTextField campoTexto;

public Hilo(JTextArea areaTextox,int numeroCanicasx)
{
areaTexto = areaTextox;
puedeImprimir = true;
numeroCanicas = numeroCanicasx;
ID = 1;
}

public void letraOprimida(KeyEvent e)
{
if(e.getKeyCode() == 69)
       System.out.println("Error de");
if(e.getKeyCode() == 83)
   puedeImprimir = false;
}

public void run()
{
    Random t = new Random();
for(int i = 0;i < numeroCanicas;i++)
{
    try
    {
Tiempo = (int)(t.nextDouble() * 5 + 1);
this.imprimirDatos(Tiempo,ID);
Tiempo*=1000;
Thread.sleep(Tiempo);
this.ID++;
    }
    catch(InterruptedException e)
    {
    e.printStackTrace();
    }
}
}

public void imprimirDatos(int Tiempo,int ID)
{
String tiempo,id;
tiempo = Integer.toString(Tiempo);
id = Integer.toString(ID);
areaTexto.append("ID:        "+id+"\tTiempo:        "+tiempo+"\n");
}
}

class Interfaz extends JFrame implements KeyListener{
private JTextArea areaTexto;
private JLabel etiqueta;
private int numeroCanicas;
private Random n = new Random();
private Hilo hilo;

public Interfaz()
{
numeroCanicas = (int)(n.nextDouble() * 10 + 1);
System.out.println(""+numeroCanicas);
areaTexto = new JTextArea(20,18);
etiqueta = new JLabel("Número Canicas : "+numeroCanicas);
etiqueta.setBounds(10, 11, 96, 14);
this.getContentPane().add(areaTexto,BorderLayout.EAST);
this.getContentPane().add(etiqueta,BorderLayout.NORTH);
hilo = new Hilo(areaTexto,numeroCanicas);

hilo.start();
addKeyListener(this);
}

public void keyTyped(KeyEvent e) {
hilo.letraOprimida(e);
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent arg0) {
}
}

public class Canicas {

public static void main(String[] args) {
Interfaz interfaz = new Interfaz();
interfaz.setTitle("Canicas");
interfaz.setBounds(200, 200, 300, 300);
interfaz.setVisible(true);
}
}


de antemano gracias
#9
Java / problema con método sleep de Thread
19 Agosto 2015, 20:45 PM
Saludos

Tengo el siguiente hilo en el cual una vez que se ejecuta con el método run(), imprimo un dato y después hago una pausa con el método sleep, el problema es que el tiempo de pausa tiene que ser un número aleatorio entre 10 y 1, pero como el parámetros de sleep() debe ser tipo long, lo puse como 10000 y 1000:

Código (java) [Seleccionar]
tiempo = (long)(t.nextDouble() * 10000 + 1000); despues de asingarle un numero aleatorio tengo que imprimir la variable tiempo, pero esta vez como entero

por ejemplo si quiero una pausa de 1 segundo o sea sleep(1000) quiero que me imprima tiempo = 1 seg, pero me imprime tiempo = 1000


¿cómo puedo solucionar esto???

de antemano gracias
#10
Java / simulador de procesos
23 Junio 2015, 03:36 AM
Saludos

Tengo el siguiente programa que se trata de un simulador de procesos

Tengo que introducir desde el teclado N procesos, estos seran los que conformen los lotes,
la capacidad máxima de un lote es de 5, y si el número de procesos que se introduce
excede esta cantidad, se conformará otro lote.Al terminar un lote se ejecuta.

La información a capturar por cada proceso es:

1)Nombre de Programador
2)Operación(+,-,*,/) y datos a realizar(validar operaciones)
3 Tiempo Máximo Estimado (validar, debe ser mayor a 0)

Los procesos se atenderán en el orden en que se capturaron. En pantalla debe mostrarse lo
siguiente:

a) Procesos en Espera
   1) Nombre de programador
   2) Tiempo Maximo Estimado
   3) Si hay lotes en espera, anotar el número de lotes pendientes.
b) Proceso en Ejecucion
   1) Se deberán mostrar todos los datos del proceso (Nombre, Operacion, tiempo max)
   2) Tiempo transcurrido de ejecución
   3) Tiempo restante por ejecutar.
c) Procesos Terminados
   1) Número de Programa
   2) Operación y datos
   3) Resultado de la operación.

Desde que se inicia la simulacion, se desplegará un reloj global, es decir, un contador
que lleve el tiempo desde el inicio del programa hasta que termine
El programa se pausa una vez que se hayan realizado todas las operaciones.

hasta ahora tengo ya la parte que captura la información de los procesos y los va
almacenando en un arreglo de tipo infoProceso, pero no se bien como tengo que usar hilos
(Threads) para que se vayan ejecutando los procesos, tengo que usar una clase para los lotes???

el codigo es el siguiente:

Código (java) [Seleccionar]
class infoProceso{
String nombreProgramador;
int numeroPrograma,tiempoMaximo,num1,num2,resultado;
char operador;
}

public class ProcesamientoPorLotes
{
public static int MAX = 5;
public static infoProceso[] lote = new infoProceso[50];
public static void main(String[] args)
{
int numProcesos;
Scanner entradaTeclado = new Scanner(System.in);
System.out.println("Dame el numero de procesos: ");
numProcesos = entradaTeclado.nextInt();
entradaTeclado.close();
capturarInformacion(numProcesos);
}

public static void capturarInformacion(int numProcesos)
{
String nombre = "",operador = "";
boolean opValido,tiempoValido = true,idRepetido = false;
int tiempo,numero,i,j;
        for(i = numProcesos;i > 0;i--)
        {
for(j = 0;j < MAX;j++)
{
Scanner teclado = new Scanner(System.in);
//ingresar nombre del programador
System.out.println("Dame Nombre de Programador: ");
nombre = teclado.nextLine();
lote[j].nombreProgramador = nombre;
//ingresar la operación
do
{
System.out.println("Dame la Operacion: ");
operador = teclado.nextLine();
teclado.close();
opValido = validarOperador(operador);
}while(!opValido);
capturarOperacion(operador,j);
//ingresar el máximo tiempo estimado
do
{
System.out.println("Dame el tiempo maximo estimado: ");
tiempo = teclado.nextInt();
teclado.close();
tiempoValido = validarTiempo(tiempo);
}while(!tiempoValido);
lote[j].tiempoMaximo = tiempo;
//ingresar ID
do
{
    System.out.println("Dame el numero de programa: ");
    numero = teclado.nextInt();
    teclado.close();
    verificarID(numero);
}while(idRepetido);
}
//
}
}

public static boolean verificarID(int numero)
{
boolean esRepetido = false;
return esRepetido;
}

public static boolean validarOperador(String op)
{
boolean esValido;
char operador = op.charAt(0);
if(operador == '+' || operador == '-' || operador == '*' || operador == '/')
   esValido = true;
else
   esValido = false;
return esValido;
}

public static boolean validarTiempo(int tiempo)
{
boolean esValido = true;
if(tiempo <= 0)
{
        System.out.println("Tiempo invalido (debe ser mayor a 0).\nIntroducir dato nuevamente");
        esValido = false;
}
return esValido;
}

public static void capturarOperacion(String op,int j){
char operador = op.charAt(0);
int num1,num2;
Scanner entrada1 = new Scanner(System.in);
Scanner entrada2 = new Scanner(System.in);
System.out.println("Dame el numero1: ");
        num1 = entrada1.nextInt();
        System.out.println("Dame el numero2: ");
        num2 = entrada2.nextInt();
        lote[j].num1 = num1;
    lote[j].num2 = num2;
    lote[j].operador = operador;
switch(operador)
{
    case '+': 
       lote[j].resultado = lote[j].num1+lote[j].num2;
       break;
    case '-':
       lote[j].resultado = lote[j].num1-lote[j].num2;
       break;
    case '*':
       lote[j].resultado = lote[j].num1*lote[j].num2;
       break;
    case '/':
       lote[j].resultado = lote[j].num1/lote[j].num2;
       break;
}
entrada1.close();
entrada2.close();
}
}


de antemano gracias
#11
Software / problema en virtualbox
9 Junio 2015, 20:22 PM
Saludos

Estoy teniendo problemas a la hora de querer bootear una USB en virtualbox. Lo primero que hice una vez que instale virtualbox y su sistema operativo(windows 7 32-bits) fue instalar el VM virtualbox Extension Pack y también el virtualbox Guest Additions para instalar los controladores(drivers) que le faltaban y habilito la USB. Una vez hecho esto instalo el plpbt.iso (herramienta para arrancar desde USB) y me voy a la ventana de Configuración, ahi en la parte donde dice Controlador: IDE me aparecen dos opciones:

plpbt.iso
VBoxGuestAdditions.iso

y en cada una de estas opciones tengo que seleccionar si es IDE secundario esclavo, IDE secundario maestro, IDE primario maestro o IDE primario esclavo.

Yo a plpbt le asigne IDE secundario maestro, y a GuestAdditions IDE secundario esclavo.

El problema es que a la hora de reiniciar la maquina para que boote desde la USB, no hace nada, me aparece: PORT 1: DEVICE CONNECTED, y eso es todo.

Alguna sugerencia de como solucionar esto??

de antemano gracias
#12
Redes / Diseño de una red
25 Mayo 2015, 21:19 PM
Saludos

Estoy diseñando una red de computadoras en Packet Tracer para una pequeña empresa(ficticia). La red debe tener un máximo de 5 conexiones wireless, 25 nodos mínimo y una MDF y IDF. Yo ya sé como crear las redes inalámbricas y alámbricas en Packet Tracer. Ahorita ya tengo tres conexiones inalámbricas: una para el departamento de marketing, otra para ventas y otra para el departamento de soporte. El problema es que no se en qué departamentos sería conveniente poner una red alámbrica en vez de una inalámbrica (debo de usar ambas)

Alguna sugerencia????

De antemano gracias
#13
Dudas Generales / servidores
9 Mayo 2015, 22:25 PM
Saludos

Estoy haciendo una investigación sobre servidores, los distintos tipos de servidores, sus aplicaciones, etc. Y estoy buscando información acerca de como configurar un servidor en Linux y en Windows, pero que sean servidores que no sean de computadoras de escritorio. He estado buscando pero no encuentro lo que busco. Alguna recomendación de donde puedo encontrar información de esto???

De antemano gracias
#14
Saludos

Tengo el siguiente problema de estructuras de archivos sobre la capacidad que tienen pistas sectores y unidades de discos dados algunos datos. En el siguiente ejemplo tengo los siguientes datos:

Capacidad de unidad de disco : 473.14453125MB
Número de pistas de un cilindro : 50
Número de sectores por pista: 102

y me dice que Determine el número de cilindros en el disco.

yo ya tengo las fórmulas para calcular esto:

numero de cilindros = capacidad de unidad/capacidad del cilindro

capacidad del cilindro = numero de pistas por cilindro X capacidad de la pista

capacidad de la pista = número de sectores por pista X bytes por sector

Aquí el único dato que me falta es el de BYTES POR SECTOR, y no estoy muy seguro de cómo calcularlo.

de antemano gracias
#15
Saludos

he estado estudiando sobre hilos, interfaces graficas y eventos de boton, en practicas anteriores los habia programado por separado, pero en esta práctica tengo que usar tanto hilos, como interfaces, eventos, etc... Los requerimientos de la practica son:

1. Mostrar un área de texto
2. Mostrar una etiqueta "IP" seguida de un campo de texto a la derecha
3. Mostrar una etiqueta "mensaje" seguida de un campo de texto a la derecha
4. Mostrar un botón con la etiqueta "enviar"
5. Programar un Thread(como clase interna o externa a la clase Chat)
6. El hilo anterior se quede bloqueado a la espera de mensajes(como en Receptor.java)
7. El hilo imprima en el área de texto la IP de donde provenga el mensaje
8. Para la IP, se imprima sin la "/" usando el método getHostAdress() en lugar de toString()
9. El hilo imprima en el área de texto el contenido del mensaje que llegue
10. Realizar los puntos 7 al 10 para todo mensaje que llegue
11. Se puede probar la parte receptora de su chat si escucha al mismo puerto que el ejemplo
Receptor.java y se usa al Emisor.java para enviarle mensaje a su máquina.
12. Tras presionar el botón se obtenga el contenido del "campo IP" y del "campoMensaje"
13. Despues del paso anterior se inicien las instrucciones para emisión de mensaje por la red
(como en Emisor.java) usando los datos obtenidos del punto anterior.

ya tengo hecha la interfaz, y la clase Emisor y Receptor (que son las que envian los mensajes), el problema es que no se como manejar el hilo y las clases Emisor y Receptor en el codigo

Código (java) [Seleccionar]
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class Hilo extends Thread{
private boolean puedeImprimir = true;
private JTextArea areaTexto;
private JTextField campoMensaje;

Hilo(JTextArea cuadroTexto,JTextField campoTexto1){
areaTexto = cuadroTexto;
campoMensaje = campoTexto1;
}

public void ocurrioBotonazo()
{
if(puedeImprimir)
   this.puedeImprimir = false;
else
   this.puedeImprimir = true;
}

public void run()
{
//?????
}
}

class Interfaz extends JFrame implements ActionListener{
private Hilo hilo;
private GroupLayout marco;
private JButton boton;
private JLabel IP,mensaje;
private JTextArea areaTexto;
private JTextField campoIP,campoMensaje;

Interfaz(){
marco = new GroupLayout(getContentPane());
getContentPane().setLayout(marco);

boton = new JButton("enviar");
IP = new JLabel("IP");
mensaje = new JLabel("mensaje");
areaTexto = new JTextArea();
campoIP = new JTextField();
campoMensaje = new JTextField();
hilo = new Hilo(areaTexto,campoMensaje);

boton.addActionListener(this);

marco.setHorizontalGroup(
marco.createParallelGroup(Alignment.LEADING)
.addGroup(marco.createSequentialGroup()
.addContainerGap()
.addGroup(marco.createParallelGroup(Alignment.TRAILING)
.addGroup(marco.createSequentialGroup()
.addComponent(areaTexto, GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE)
.addContainerGap())
.addGroup(marco.createSequentialGroup()
.addGroup(marco.createParallelGroup(Alignment.TRAILING)
.addComponent(mensaje)
.addComponent(IP))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(marco.createParallelGroup(Alignment.LEADING, false)
.addComponent(campoIP)
.addComponent(campoMensaje, GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE))
.addGap(43))))
.addGroup(marco.createSequentialGroup()
.addGap(185)
.addComponent(boton)
.addContainerGap(186, Short.MAX_VALUE))
);

marco.setVerticalGroup(
marco.createParallelGroup(Alignment.LEADING)
.addGroup(marco.createSequentialGroup()
.addContainerGap()
.addComponent(areaTexto, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addGroup(marco.createParallelGroup(Alignment.BASELINE)
.addComponent(campoIP, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(IP))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(marco.createParallelGroup(Alignment.BASELINE)
.addComponent(mensaje)
.addComponent(campoMensaje, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(30)
.addComponent(boton)
.addContainerGap(43, Short.MAX_VALUE))
);
}

public void actionPerformed(ActionEvent e) {
hilo.ocurrioBotonazo();

}
}

public class ChatUDP {

public static void main(String[] args) {
Interfaz interfaz = new Interfaz();
interfaz.setBounds(100, 100, 450, 300);
interfaz.setTitle("ChatUDP");
interfaz.setVisible(true);
}
}


Código (java) [Seleccionar]
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.SocketException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.IOException;
import javax.swing.*;

public class Emisor {
DatagramSocket emisionSocket;
DatagramPacket paquete;
String IP;
byte[] mensaje;

Emisor(JTextField campoMensaje,JTextField campoIP){
mensaje = campoMensaje.getText().getBytes();
IP = campoIP.getText();
}

public void main(JTextField campoMensaje,JTextField campoIP) {
try
{
emisionSocket = new DatagramSocket();
paquete = new DatagramPacket(mensaje,mensaje.length,InetAddress.getByName(IP),2001);
emisionSocket.send(paquete);
emisionSocket.close();
}
catch(SocketException e){
e.getMessage();
}
catch(UnknownHostException e){
e.getMessage();
}
catch(IOException e){
e.getMessage();
}
}

}


Código (java) [Seleccionar]
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.SocketException;
import java.io.IOException;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;

public class Receptor {
DatagramSocket recepcionSocket;
DatagramPacket paquete;
int puerto = 2001;
byte[] buffer = new byte[1024];

Receptor(JTextArea areaTexto)
{

}

public void main() {
try
{
recepcionSocket = new DatagramSocket(puerto);
paquete = new DatagramPacket(buffer,buffer.length);
recepcionSocket.receive(paquete);
}
catch(SocketException e)
{
e.getMessage();
}
catch(IOException e)
{
e.getMessage();
}
}

}


de antemano gracias
#16
Java / sockets
1 Marzo 2015, 03:10 AM
Saludos

Estoy empezando a estudiar sobre los sockets. Tengo este programa sencillo que me pasaron para estudiarlo, una clase se llama Emisor y la otra Receptor. Ya he estado leyendo sobre la clase DatagramPacket y DatagramSocket. La duda que tengo es si el codigo se puede realizar sin necesidad de tener dos archivos .java, y si se puede poner todo en un solo proyecto.

Código (java) [Seleccionar]
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.SocketException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.IOException;
public class Emisor{
public static void main(String args[]){
DatagramSocket socketEmision;
DatagramPacket dp;
String ip=args[0];
String mensaje=args[1];
//int puertoSalida=2002;
byte[] buffer;
//System.out.print("Iniciando socket emision en puerto "+puertoSalida+"...");
try{
socketEmision=new DatagramSocket();  //constructor sobrecargado para recibir o no un #puerto
System.out.println("hecho");
buffer=mensaje.getBytes();
dp=new DatagramPacket(buffer,buffer.length,InetAddress.getByName(ip),2001);
socketEmision.send(dp);
System.out.print("Cerrando socket emision...");
socketEmision.close();
System.out.println("hecho");
}catch(SocketException e){
System.out.println("Error iniciando socket: "+e.getMessage());
}catch(UnknownHostException e){
System.out.println("UnknownHostException: "+e.getMessage());
}catch(IOException e){
System.out.println("IOException: "+e.getMessage());
}
}
}


y el otro es:

Código (java) [Seleccionar]
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.SocketException;
import java.io.IOException;
public class Receptor{
public static void main(String args[]){
DatagramSocket socketRecepcion;
DatagramPacket dp;
int puertoEntrada=2001;
byte[] buffer=new byte[1024];
System.out.print("Iniciando socket recepcion en puerto "+puertoEntrada+"...");
try{
socketRecepcion=new DatagramSocket(puertoEntrada);
System.out.println("hecho");
dp=new DatagramPacket(buffer,buffer.length);
while(true){//deseable validar con bandera
socketRecepcion.receive(dp);
System.out.print("IP emisora: "+dp.getAddress().toString()+":");
System.out.println(new String(buffer,0,dp.getLength()));
}
//socketRecepcion.close();//código inalcanzable sin bandera
}catch(SocketException e){
System.out.println("Error iniciando socket: "+e.getMessage());
}catch(IOException e){
System.out.println("IOException: "+e.getMessage());
}
System.out.print("Cerrando socket recepcion...");
System.out.println("hecho");
}
}


es estrictamente necesario tener dos archivos???
#17
Java / Interfaz Grafica con GroupLayout
22 Febrero 2015, 19:31 PM
Saludos

Estoy haciendo una interfaz gráfica utilizando GroupLayout, esto porque me permite ponerle la posición y el tamaño que yo quiero a los componentes de la interfaz.

Yo también había hecho una interfaz así con el uso de WindowBuilder, pero ahora quiero hacerla desde 0.

Código (java) [Seleccionar]
import javax.swing.*;

class Interfaz extends JFrame{
private JTextArea areaTexto;
private JButton boton;
private JLabel IP,mensaje;
private JTextField campoIP,campoMensaje;

Interfaz(){
areaTexto = new JTextArea();

boton = new JButton("enviar");

IP = new JLabel("IP");
mensaje = new JLabel("mensaje");

campoIP = new JTextField();
campoIP.setColumns(10);
campoMensaje = new JTextField();
campoMensaje.setColumns(10);


}
}

public class ChatUDP {

public static void main(String[] args){
Interfaz interfaz = new Interfaz();
interfaz.setBounds(100, 100, 450, 300);
interfaz.setTitle("ChatUDP");
interfaz.setVisible(true);
interfaz.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GroupLayout groupLayout = new GroupLayout(interfaz.getContentPane());
interfaz.getContentPane().setLayout(groupLayout);
}
}


esto es lo que llevo hasta ahora, pero no se bien como usar el GroupLayout para agregarle los componentes al Frame

de antemano gracias
#18
Java / dudas con arreglos
17 Febrero 2015, 03:50 AM
Saludos

Tengo una duda sobre el manejo de arreglos

Yo tengo una clase en la que tengo declarado como atributo una variable global array de tipo byte[] de tamaño 50. y en esa clase también tengo un metodo que se llama send() y al cual desde el main con un ciclo le voy a ir pasando arreglos de distintos tamaños y se los voy a tener que concatenar a ese arreglo global, byte[]. con cada llamada a send().

Código (java) [Seleccionar]
class Nucleo{
static byte[] buffer = new byte[50];
public void send(byte[] mensaje){
for(int i = 0;i < mensaje.length;i++)
{
    buffer[i] = mensaje[i];
}
}
}
}


en este codigo le paso un mensaje que es un array de bytes y se lo concateno a buffer. Pero el problema es que el codigo solo funcionaría la primera vez que llamo a send(), y las demas veces ya no lo podria concatenar. ¿cómo podría resolver esto?

de antemano gracias
#19
Java / Dudas sobre hilos
12 Febrero 2015, 04:53 AM
Saludos tengo el siguiente código que trata sobre construir una aplicación basada en hilos que contemple la ejecución de un hilo evento y su interacción con un hilo Thread.

Para realizar la aplicación tengo que cumplir con los siguientes requerimientos:

1. Ambos hilos impriman un contador en áreas de texto particulares.
2. Un hilo imprima cada segundo y el otro cada 2 segundos.
3. Incluir un botón para asociarlo en tiempo compilación a uno cualquiera de los hilos.
4. Al presionar el botón, que el hilo correspondiente suspenda su ejecución.
5. El hilo reanude su ejecución tras otro botonazo con el mismo botón que el punto anterior.
6. La suspensión del hilo conlleve a suspender los efectos del hilo
sobre su correspondiente área de texto.
7. El evento del botonazo, provoque el paso de solo un mensaje al objeto hilo, indicándole
   solo que ha ocurrido un botonazo, por lo que el método a invocar no deberá recibir
parámetro.

y el codigo es el siguiente:

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Hilo extends Thread{
private int cuenta;
private long segundos;
private boolean imprime;

Hilo(int seg,int contador){
cuenta = contador;
segundos = seg;
imprime = true;
}

public void run()
{
while(imprime)
{
System.out.println(""+cuenta);
cuenta++;
}
}
}

class Interfaz extends JFrame implements ActionListener{
private JTextArea areaTexto1,areaTexto2;
private JButton boton;
private JPanel ventana;
private Hilo hilo1,hilo2;

Interfaz()
{
areaTexto1 = new JTextArea(10,10);
areaTexto2 = new JTextArea(10,10);
boton = new JButton("Ejecutar");
ventana = new JPanel(new BorderLayout());
ventana.add("South",areaTexto1);
ventana.add("North",areaTexto2);
hilo1 = new Hilo(1000,0);
hilo2 = new Hilo(2000,0);
        this.add(ventana);
       
boton.addActionListener(this);
}

public void actionPerformed(ActionEvent evento)
{
      hilo1.start();
      //hilo1.sleep(seg);
}
}


public class MensajesHilos {

public static void main(String[] args) {
Interfaz interfaz = new Interfaz();
interfaz.setTitle("Manejo de Hilos");
interfaz.setBounds(200, 200, 400, 400);
interfaz.setVisible(true);
}
}


El problema que tengo es que en el método run() que es el que ejecuta el hilo, no se como hacerle para asignarle un area de texto para que imprima en ella, porque el area de texto la tengo declarada en la clase de interfaz, y en el actionPerformed de la clase interfaz, que es la que me dice que acción ejecutar con el evento botonazo, pero no tengo muy claro para hacer que en el primer botonazo pare el hilo, que al segundo reanude la ejecución y asi sucesivamente

de antemano gracias
#20
Java / duda con eventos de boton
8 Febrero 2015, 03:24 AM
Saludos

Tengo el siguiente código, que es una pequeña interfaz gráfica, que consta de un botón, un campo de texto y un área de texto. Esto es la parte fácil, el problema que tengo es que tengo que crear un evento de botón con un Listener. Tras dar clic al botón el contenido del campo de texto se copie hacia el area de texto, y que esta area de texto sea del tamaño suficiente para visualizar 40 columnas y 20 filas

El código que es el siguiente:

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;

class ComponentesGraficos extends JFrame implements ActionListener{
private JButton boton;
private JTextField campoTexto;
private JTextArea areaTexto;

public ComponentesGraficos(){
boton = new JButton("Agregar");
campoTexto = new JTextField();
areaTexto = new JTextArea();

boton.setBackground(Color.GREEN);
this.getContentPane().add(boton,BorderLayout.SOUTH);
this.getContentPane().add(campoTexto,BorderLayout.NORTH);
this.getContentPane().add(areaTexto,BorderLayout.CENTER);

boton.addActionListener(this);
}

public void actionPerformed(ActionEvent evento)
{
??????
}
}

public class InterfazGrafica {
final static int COORDENADA_X = 10;
final static int COORDENADA_Y = 10;
final static int ANCHURA = 200;
final static int ALTURA = 200;

public static void main(String[] args) {
ComponentesGraficos interfaz = new ComponentesGraficos();
interfaz.setBounds(COORDENADA_X,COORDENADA_Y,ANCHURA,ALTURA);
interfaz.setVisible(true);
}
}


alguna idea de como hacer el evento de boton???

de antemano gracias
#21
Java / HashMap
3 Febrero 2015, 01:52 AM
Saludos

Tengo el siguiente codigo que se trata de implementar una clase administradora de objetos que utiliza un HashMap. Para esto tengo una clase administradora en la que tengo tres métodos, uno para agregar una tupla, otro para obtener una tupla y otro para eliminar una tupla. El programa me tiene que imprimir algo como:

1         |    CC317    | matematicas   
.....
.....

Pero ahora tengo que crear un método que devuelva una cadena con todas las tuplas de la tabla, no importa que sea en desorden. considerando que es posible que se hayan eliminado tuplas. Para eso tengo que usar un método de la HashMap que me devuelva una enumeration o un Iterator con las llaves existentes.

Código (java) [Seleccionar]
import java.util.*;

class claseAdministradora
{
private HashMap<Integer, Materia> registro = new HashMap<Integer, Materia>();
private int id_secuencial = 1;

public int agregaTupla(String clave,String nombre)
{
Materia materia = new Materia(clave,nombre);
registro.put(id_secuencial,materia);
id_secuencial++;
return id_secuencial;
}

public Materia obtenerTupla(int id)
{
Materia materia;
materia = registro.get(id);
return materia;
}

public void eliminarTupla(int id)
{
registro.remove(id);
}

public String imprimirTupla()
{
Iterator<String> tabla = registro.entrySet().iterator();
return "";
}
}

class Materia{
public String clave_materia;
public String nombre_materia;

Materia(String clave,String nombre_materia)
{
this.clave_materia = clave;
this.nombre_materia = nombre_materia;
}
}

public class tablaHash {

public static void main(String[] args) {
claseAdministradora tupla = new claseAdministradora();
tupla.agregaTupla("CC317","matematicas");
tupla.agregaTupla("CC320","español");
tupla.agregaTupla("CC415","fisica");
tupla.eliminarTupla(1);
}

}


el problema es que no se como implementar la función que me imprima todas las tuplas

alguna sugerencia?? de antemano gracias
#22
Saludos

Tengo el siguiente código en el cuál tengo que declarar una variable  que puede ser de tipo int, byte o short, a esta variable le voy a asignar un numero en notacion hexadecimal, y después tengo una función llamada memoriaRAM() que lo va a convertir en binario. Yo en el código no tengo uno sino 3 métodos memoriaRAM() a uno le paso como parametros el valor cuando es tipo int, a otro cuando es short, y al ultimo cuando es de tipo byte.

Código (java) [Seleccionar]
public class OperadoresBits
{
public static void main(String[] args)
{
int valor = 0x80;
short x = 0x80;
byte y = 0x80;
System.out.println("Bits en la RAM\n");
memoriaRAM(valor);
}

public static void memoriaRAM(byte valor)
{
int i,bits;
bits = 8;
char binario[] = new char[bits];
System.out.println("Pasando el valor byte " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void memoriaRAM(int valor)
{
int i,bits;
bits = 32;
char binario[] = new char[bits];
System.out.println("Pasando el valor int " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void memoriaRAM(short valor)
{
int i,bits;
bits = 16;
char binario[] = new char[bits];
System.out.println("Pasando el valor short " + valor + ":");
for(i = bits-1;i >= 0;i--)
{
if((valor&1) == 1)
   binario[i] = '1';
else if((valor&1) == 0)
   binario[i] = '0';
valor >>= 1;
}
imprimirArreglo(binario);
}

public static void imprimirArreglo(char binario[]){
int bits = 0,i;
final int BITS = 8;
for(i = 0;i < binario.length;i++)
{
    System.out.print(""+binario[i]);
    bits++;
    if(bits == BITS)
    {
    System.out.print(" | ");
    bits = 0;
    }
}
}
}


estoy probando el programa cuando a la variable le asigno el valor 128, en hexadecimal sería:

valor = 0x80

para el tipo int y short funciona perfecto e imprime el binario correctamente, pero para el byte desde el momento en que le asigno el valor 0x80 a la variable valor, me marca un error y no entiendo por qué no puedo hacer esto:

byte valor = 0x80;

de antemano gracias





#23
Java / duda con toHexString()
23 Enero 2015, 16:24 PM
Saludos

Tengo una variable tipo double e inicializada con el valor 250.25, ahora quiero convertirla a hexadecimal con ayuda de algun método, como por ejemplo:

Código (java) [Seleccionar]
System.out.println(""+Double.toHexString(valor));

el problema es que al compilar en vez de darme:
FA.4 que es el equivalente en hexadecimal de 250.25, me da: 0x1.f48p7 y no entiendo a qué se deba esto
#24
Java / numero hexadecimal grande
20 Enero 2015, 01:33 AM
Saludos

Tengo en el main de mi código una variable de tipo int a la cual le tengo que asignar un valor muy largo: -2147483648 y después pasarlo a hexadecimal con la siguiente función:

Integer.valueOf(String.valueOf(n),16); siendo n el número negativo

El problema es que me aparece el mensaje de error java.lang.NumberFormatException

por qué me sale este error????

de antemano gracias
#25
Java / Operadores de manejo de bits
15 Enero 2015, 20:19 PM
Saludos

Estoy haciendo una función a la cual le paso por parámetros una variable de tipo int, y esa variable la convierto a binario con la ayuda de operadores de bits

Código (java) [Seleccionar]
public static void funcion(int valor)
{
int i,bytes;
char binario[] = new char[32];
for(i = bytes-1;i >= 0 ;i--)
{
binario[i] = (valor&1)? '1':'0';
                        valor >> 1;
}
}


Al principio declaro un arreglo de caracteres que va a almacenar el numero binario, despues con un ciclo for voy verficando con &(el equivalente a AND) que si los dos bits son 1 en binario se almacena 1, de lo contrario se almacena 0, el problema es que con el operador condicional ? en la parte donde tengo (valor&1) me aparece un mensaje de error que dice:

cannot convert from int to boolean, y no entiendo por qué si esta misma función ya la había utilizado en un programa en C

de antemano gracias
#26
Java / Tipo Int
15 Enero 2015, 05:21 AM
Saludos

Tengo una duda sobre la asignación de valores a los tipos de datos int, por ejemplo, si yo tengo declarada una variable tipo int y a esta le asigno un valor en hexadecimal como:

int valor = 0xA// le pongo 0x para indicarle que es hexadecimal.

A la hora de imprimir valor me aparece 10, porque A equivale a 10 en notacion decimal, pero si le asigno un valor en binario como: int valor = 00000010, aqui ya no me imprime 2, como deberia de ser, me imprime 8, alguien sabe por qué es esto???

gracias
#27
Java / Almacenar cadenas en arreglos de bytes
12 Enero 2015, 06:03 AM
Saludos

Tengo el siguiente código que trata de almacenar una cadena cualquiera en un arreglo de bytes e imprimirlo

Primero tengo que crear un arreglo de bytes, y este arreglo debe contener en la primera posición un contador de caracteres.

A continuación debe almacenar en este array los codigos ASCII de cada caracter del String, y en la primera posición(o sea donde está el contador) debe de tener la longitud de la cadena. TENGO QUE USAR OBLIGATORIAMENTE EL METODO String.getBytes(). Después de realizar todo lo anterior, una subrutina reciba el arreglo de bytes e imprima solo los caracteres contenidos en el arreglo(el contador para eso sirve).

Código (java) [Seleccionar]
public class ByteArray {

public static void main(String[] args)
{
byte arregloBytes[];
String cadena = "Hola";
arregloBytes = obtenerASCII(cadena);
imprimirArreglo(arregloBytes);
}

public static byte[] obtenerASCII(String cadena)
{
int longitud,i,j;
longitud = cadena.length()+1;
byte codigosASCII[] = new byte[longitud];
                codigosASCII[0] = (byte)longitud;
for(i = 0,j = 1;i < cadena.length();i++,j++)
{
codigosASCII[j] = (byte)cadena.charAt(i);
}
return codigosASCII;
}

public static void imprimirArreglo(byte[] arregloBytes)
{
int i;
for(i = 0;i < arregloBytes.length;i++)
{
   System.out.println(""+(int)arregloBytes[i]);
}
}
}


Aqui el problema es que por ejemplo si tengo en el String ="Hola", ¿cómo hago para que en el arregloBytes, en una sola casilla tenga almacenados TODOS los codigos ASCII del caracter, si tengo H su ascii decimal será 72, su octal 036 y su hexadecimal 48.

y tampoco se bien como utilizar el metodo getBytes()

de antemano gracias
#28
Java / problema con un arbol en una pila
3 Enero 2015, 05:42 AM
Saludos

Tengo el siguiente codigo que lo que trabaja con una cola(Queue) y esta cola contiene una expresión en su forma postfija por ejemplo:

si tengo ((A*B) + (C/D)), la cola contendria : AB*CD/+, y luego tengo que crear el arbol binario de esta expresión. Para eso uso el siguiente algoritmo que trabaja con una pila

Código (java) [Seleccionar]
public static void construirArbol(){
    int error = 0;
    Stack<Object> pila = new Stack<Object>();
    Arbol arbol = new Arbol();
    Object izq,der,raiz,Elemento;
    String d = "hijoDer",i = "hijoIzq",r = "raiz";
    while(!s.isEmpty())
    {
        switch(caso(s.peek()))
        {
            case 1:
               if(pila.size() < 2)
                  error = 1;
               else
               {
               raiz = s.peek();
               der = pila.pop();
               izq = pila.pop();
               arbol.insertarNodo(raiz,r);
               arbol.insertarNodo(izq,i);
               arbol.insertarNodo(der,d);
               pila.push(arbol);
               }
               break;
            case 2:
               error = 1;
               break;
            default:
               pila.push(s.remove());
        }
    }
    if(pila.isEmpty() || pila.size() > 1)
       error = 1;
    else
    {
    Elemento = pila.pop();
    if(Elemento.)
    {
    //aqui el problema;
    }
    }
    while(!pila.isEmpty())
       pila.pop();
    }


primero dentro de un while tengo a s, que es la Cola y voy quitando elemento por elemento y en un switch veo en cual case entra, si el elemento es un operador entra en el case 1 y si la pila contiene menos de 2 elementos es un error, sino creas un arbol con una raiz, que es el elemento, y despues sacas otros dos elementos de la cola para crear los nodos izquierdo y derecho y metes ese arbol en la pila, en el case default el elemento que se encuentre en s lo apilas.

Pero tengo una duda, una vez que te sales de ese while te encuentras con un if-else, ese if te dice que si la pila esta vacia o tiene mas de un elemento hay un error, y en el else tengo que quitar un elemento de Queue y verificar si ese elemento es un Arbol, pero COMO PUEDO VERIFICAR SI ES UN ARBOL??? si yo cuando declare la pila la declara para que pudiera contener elementos de cualquier tipo, por eso le puse Object

si alguien me pudiera dar una idea de como hacer esa verificación se lo agradecería mucho
#29
Java / Análisis Semántico
26 Diciembre 2014, 21:46 PM
Saludos

Acabo de terminar de construir un analizador sintáctico para un compilador, y el siguiente paso es hacer el analizador semántico, he leído documentación de varios lados para darme un idea de los pasos que tengo que seguir, pero aún me quedan algunas dudas. El primer paso (segun lo que lei) es hacer esquemas de traducción dirigidos por la sintaxis, o sea, especificar una serie de acciones que se realizaran durante el análisis de la entrada, esto con acciones intercaladas a las reglas y atributos asociados a los no Terminales de la gramática.

por ejemplo si yo tengo la regla:

<procedimiento>:= Procedimiento Iden <parametros> <Bloque> fin Iden ;

el análisis semántico dice que me tengo que asegurar que el iden que esta antes de los parametros y el Iden que esta despues del fin sean iguales, pero no se como hacer las acciones intercaladas en esa regla o si necesita tener atributos asociados a algun no terminal(los no terminales son los que estan entre <>).

#30
Saludos

Estoy teniendo problemas con los saltos de línea de un código, yo se que en windows el system.getProperty("line.separator") es \r\n, pero cuando corres tu codigo en Java algunos saltos de linea aparecen como simple '\n', entonces si yo quiero hacer una validación en mi código como:

Si un caracter es diferente de salto de línea(ya sea '\n', '\r' o \r\n)

Código (java) [Seleccionar]
if(car != (System.getProperty("line.separator")))
          //hacer X accion


pero obvio que está validación no funciona porque estoy comparando un String con un char, pero entones como podria hacerlo?

#31
Java / Encapsulamiento
4 Diciembre 2014, 16:08 PM
Saludos

Tengo el siguiente código que es una práctica que trata de la implementación de una clase MiFecha, la cual siempre mantenga una fecha válida en sus atributos. El código que tengo es el siguiente:

Código (java) [Seleccionar]
class MiFecha{
final int CERO = 0;
final int ENERO = 1;
final int FEBRERO = 2;
final int MARZO = 3;
final int ABRIL = 4;
final int MAYO = 5;
final int JUNIO = 6;
final int JULIO = 7;
final int AGOSTO = 8;
final int SEPTIEMBRE = 9;
final int OCTUBRE = 10;
final int NOVIEMBRE = 11;
final int DICIEMBRE = 12;

private int dia;
private int mes;
private int año;

MiFecha()
{
dia =;
mes =;
año =;
}

private boolean esBisiesto(int año)
{
boolean bisiesto = false;
if(((año % 4) == CERO &&((año % 100) != CERO)) && ((año % 400) == CERO))
       bisiesto = true;
return bisiesto;
}

private boolean verificaDia(int dia)
{
boolean fechaValida = false;
switch(mes)
{
    case ENERO:
    case MARZO:
    case MAYO:
    case JULIO:
    case AGOSTO:
    case OCTUBRE:
    case DICIEMBRE:
       if(dia >= 1 && dia <= 31)
          fechaValida = true;
       break;
    case ABRIL:
    case JUNIO:
    case SEPTIEMBRE:
    case NOVIEMBRE:
       if(dia >= 1 && dia <= 30)
          fechaValida = true;
       break;
    case FEBRERO:
       if(esBisiesto(año))
       {
       if(dia >= 1 && dia <= 29)
          fechaValida = true;
       }
       else
       {
       if(dia >= 1 && dia <= 28)
          fechaValida = true;
       }
       break;
}
return fechaValida;
}

public int dameDia()
{
return dia;
}

public int dameMes()
{
return mes;
}

public int dameAnio()
{
return año;
}

public boolean fijaDia(int diax)
{
dia = diax;
return true;
}

public boolean fijaMes(int mesx)
{
mes = mesx;
return true;
}

public boolean fijaAnio(int aniox)
{
año = aniox;
return true;
}
}

public class Encapsulamiento {

public static void main(String[] args) {
MiFecha fecha = new MiFecha();
fecha.fijaDia(31);
fecha.fijaMes(11);
fecha.fijaAnio(2014);
System.out.println("DIA: "+fecha.dameDia());
System.out.println("MES: "+fecha.dameMes());
System.out.println("año: "+fecha.dameAnio());
}
}


en el código utilizo los métodos fijaDia, fijaMes y fijaAnio para asignar el número de día, de mes y de año. El problema es que el código tiene algunos requerimientos un poco extraños y que no comprendo como por ejemplo me dice:

Inicializar todos los atributos(dia,mes,año) con datos válidos por medio de un constructor sin parámetros. Y después me dice:

Codificar en el ámbito del método main lo siguiente:

a) Declaración de la variable de instancia de tipo MiFecha e instanciación.
b) Definición de todos los atributos del objeto instanciado mediante sus tres métodos de interfaz.

Entonces no se cómo declarar el constructor, si en los métodos fija ya estoy inicializando los atributos

de antemano gracias
#32
Java / exception en arbol binario
22 Noviembre 2014, 20:00 PM
Saludos

Estoy creando una arbol binario, en el cual los elementos del nodo son un apuntador al nodoIzquierdo, un  apuntador al nodoDerecho y el dato sería de tipo L, que a su vez es una clase que contiene dos elementos de tipo String uno que se llama lexema y otro categoria.

Para la clase NodoArbol tengo 2 constructores uno al que le paso un objeto de tipo L, y otra al que le paso simplemente un String, y ese string lo tengo que almacenar en el campo lexico de un objeto L, por eso lo hice de la siguiente manera:

Código (java) [Seleccionar]
class L{
String lexico;
String categoria;

L(){
lexico = "";
categoria = "";
}
}

class NodoArbol{
NodoArbol nodoIzq;
NodoArbol nodoDer;
L lexema;

public NodoArbol(L datos){
lexema = datos;
nodoIzq = nodoDer = null;
}

public NodoArbol(String datos) {
lexema.lexico = datos;// aqui esta el error
lexema.categoria = "";
nodoIzq = nodoDer = null;
}

public void insertar(L datos){
if((datos.categoria).equals("Id"))
{
if(nodoIzq == null)
{
System.out.println("nodo lado izquierdo");
   nodoIzq = new NodoArbol(datos);
}
else
   nodoIzq.insertar(datos);
}
else
{
if(nodoDer == null)
   nodoDer = new NodoArbol(datos);
else
   nodoDer.insertar(datos);
}
}

}

class Arbol{
private NodoArbol raiz;
public Arbol sig;

public Arbol(){
raiz = null;
sig = null;
}

public void insertarNodo(String datos) {
if(raiz == null)
{
       raiz = new NodoArbol(datos);
}
}

public void insertarNodo(L datos){
if(raiz == null)
{
       raiz = new NodoArbol(datos);
}
else
   raiz.insertar(datos);
}
}


el problema es que a la hora de mandar llamar al metodo insertarNodo() con un String como argumento, me manda un excepcion NullPointerException, en el siguiente constructor:

Código (java) [Seleccionar]
public NodoArbol(String datos) {
lexema.lexico = datos;// aqui esta el problema
lexema.categoria = "";
nodoIzq = nodoDer = null;
}


y no tengo idea de cómo arreglarlo

gracias de antemano
#33
Java / duda con ArrayList
21 Noviembre 2014, 07:19 AM
Saludos

esta es la primera vez que usa la clase ArrayList de java y tengo dudas sobre su funcionamiento, yo tengo una función el la cual atravez de un ciclo que lee un archivo y va agregando los elementos del archivo a la ArrayList, el problema es que no se como imprimir los datos que tengo en la lista, si se que tengo que tener un ciclo while en el que le diga que mientras lista no este vacia vaya imprimiendo. Pero como lo hago???

Código (java) [Seleccionar]
public static void Expresion(){
    ArrayList<String> lista =  new ArrayList<String>();
    lexico = Lexico();
    categoria = categoriaLexica(estadoAnterior,lexico);
    while(categoria.equals("Entero") || categoria.equals("Real") || categoria.equals("Id") || OperadorAritmetico(lexico) || OperadorRelacional(lexico) ||lexico.equals(")") || lexico.equals("("))
    {
    lista.add(lexico);
    lexico = Lexico();
    categoria = categoriaLexica(estadoAnterior,lexico);
    }
    while(!lista.isEmpty())
      System.out.println("["+lista.??????)
   }


La lista quiero que me ingrese los elementos por la cola, que es lo que creo que hace con simplemente ponerle el add. y que me imprima los elementos desde el primero hasta el ultimo, en ese orden.

de antemano gracias
#34
Dudas Generales / duda con expresion posfija
20 Noviembre 2014, 06:10 AM
Saludos

Tengo la siguiente expresión infija que dice:

(i730 + sg2LQ) + ((+G0 / (3064 + 68324.06)) / 28)

y utilice VARIOS programas que hacen conversiones de infija a posfija y viceversa, y esos programas me dicen que la respuesta es:

i730 sg2LQ + G0 3064 68324.06 + /+ 28 / +

pero me dijeron que era

i730 sg2LQ + G0 + 3064 68324.06 + / 28 /

y la verdad no se cuál de los dos es el correcto???

gracias
#35
Java / Arbol Sintactico
18 Noviembre 2014, 04:13 AM
Saludos

Tengo que crear un árbol sintáctico en Java a partir de alguna expresión como esta:

z = a + b * - c

como esta es una asignacion, creo que el nodo de raiz debería de ser precisamente la palabra asignación, el lado izquierdo del nodo raiz sería la z, y el lado derecho del nodo sería la expresión a+b*-c, pero en POSTORDEN esto sería a b c - * +

me deberia quedar:

<asignacion>
z   <- lado izq
a b c - * +  <- lado der

pero me queda la duda de si tengo que crear otro arbol solo para la expresión derecha, un subarbol, porque no se de que otra manera podria hacer el recorrido postorden

de antemano gracias
#36
Dudas Generales / funciones no computables
10 Noviembre 2014, 03:42 AM
Saludos

Alguien conoce alguna página, un libro, o algo donde pueda encontrar información de ejemplos de funciones no computables

de antemano gracias
#37
Dudas Generales / sintaxis y semantica
4 Noviembre 2014, 05:24 AM
Saludos

Tengo una duda acerca de las diferencias entre un error sintactico y un error semántico. Por ejemplo si tengo una instrucción: if(4) yo sé que esto me generaría un error, pero no estoy seguro si este error se daría durante el análisis sintáctico o el semántico.

o en esta otra expresión:

(e-(b%4*3>2))

estuve buscando en algunas páginas en internet, y en una decía que  era por una expresión o parentesis no equilibrados, y los semanticos cuando un operador es aplicado a un operando incompatible. PERO NO SE EN CUAL CASO ENTRA ESTE!!

si alguien pudiera quitarme esta duda se lo agradecería mucho porque estoy haciendo un analizador sintactico y si no tengo claro cómo se manejan los errores no puedo avanzar
#38
Programación General / LISP
2 Noviembre 2014, 18:10 PM
Saludos

estoy empezando a programar en LISP, y queria crear un codigo sencillo que tiene una funcion que se llama burbuja y que dentro tiene declarado un arreglo de 2 elementos y les va asignando valores a cada uno con setf, pero lo que me imprime es el nombre de la funcion!! o sea BURBUJA, y no los valores del arreglo, cómo puedo arreglar esto???????

Código (lisp) [Seleccionar]
(defun burbuja()
    ((let (array (make-array '(2))))
       (setf (aref array 0) 7)
       (setf (aref array 1) 2)))


gracias
#39
Java / Pila dinamica
23 Octubre 2014, 03:55 AM
Saludos, estoy tratando de hacer una Pila dinámica con una clase Pila y otra clase llamada nodoPila. Yo se que en las pilas las eliminaciones solo pueden ser por el tope de pila, o sea en el ultimo nodo, y es ahi donde tengo el problema en la función desapilar

Código (java) [Seleccionar]
class NodoPila{
String elemento;
NodoPila siguiente;

NodoPila(String simbolo){
elemento = simbolo;
siguiente = null;
}
}
class Pila{
private NodoPila primerNodo;
private NodoPila tope;

Pila(){
primerNodo = tope = null;
}

public boolean estaVacia(){
if(tope == null)
   return true;
else
   return false;
}

public void apilar(String simbolo){
if(estaVacia())
   primerNodo = tope = new NodoPila(simbolo);
else
   tope = tope.siguiente = new NodoPila(simbolo);
}

public void desapilar(){
NodoPila nodo;
if(estaVacia())
   System.out.println("Error: Lista vacia");
else
   ????????????;
}

public void imprimirPila()
{
NodoPila nodo;
for(nodo = primerNodo;nodo != null;nodo = nodo.siguiente)
   System.out.println("["+nodo.elemento+"]");
}
}


no se como hacerle para que me elimine el tope sin necesidad de recorrer toda la lista hasta encontrar el ultimo nodo
#40
Saludos

Tengo una clase que se llama Gr, la cual tiene dos campos:

char regla;
String pDerechar;

Código (java) [Seleccionar]
class Gramatica{
char regla;
String pDerecha;
}


y despues tengo otra clase en la cual quiero crear un objeto de tipo Gr y dentro de esa función inicializar las variables regla y pDerecha. El problema es que me aparece un error que dice:

variable DeclaratorId expected after this token

Código (java) [Seleccionar]
class S{
Gramatica g = new Gramatica();
g.regla = 'P';//aqui me aparece error
g.pDerecha = "LpieDiBi;";//aqui tambien
}


a que se debe esto???
de antemano gracias
#41
Dudas Generales / gramatica libre de contexto
29 Septiembre 2014, 05:50 AM
Saludos

Tengo que crear una gramatica libre de contexto que me genere lo que serían las librerias del lenguaje de programacion Ada. Por ejemplo:

With Ada.Comand,Ada.Text_IO;

o tambien podria ser:

With Ada.Characters.Handling;

y la gramatica que tengo va más o menos así:

<Libreria>:= With <P>;
<P>:= Ada.identificador<paquetes>
<paquetes>:=.identificador<paquetes> | (null)

el problema es que esta gramatica me genera  with ada.X.y.Z; pero no me genera el primer ejemplo: with ada.comand,ada.Text_io;

y no se como agregarle esto, tambien tengo la restriccion de que si tengo una gramatica P, sus reglas no pueden iniciar con el mismo no terminal

gracias
#42
Programación C/C++ / algoritmo de bresenham
27 Septiembre 2014, 00:04 AM
Saludos

Tengo el siguiente codigo en C, que me tiene que dibujar algunas lineas mediante el algoritmo de bresenham. Para esto estoy utilizando GLUT, la cual ya le instale correctamente. El problema es que dentro del main donde tengo la llamada a funcion de init() y glutDisplayFunc(estrella); me aparece init y estrella not declared in this scope, por qué será esto??

#include <windows.h>
#include <GL/glut.h>

int main(int argc, char** argv)
{
    glutInit(&argc, argv);//inicialización de GLUT
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//único búfer de refresco en la ventana de visualización y el modo de color RGB
    glutInitWindowPosition(50, 100); // posición inicial, esq sup izq
    glutInitWindowSize(400, 300); //alto y ancho de la ventana en pixeles
    glutCreateWindow("Primer Practica");// creación de ventana de visualización y título de la misma
    init();
    glutDisplayFunc(estrella); // muestra la línea en la ventana de visualización
    glutMainLoop(); // bucle infinitoque comprueba entrada de disp
    return EXIT_SUCCESS;
}

void bresenham(int x0,int y0,int x1,int y1)
{
    int dx,dy,p,x,y,s1,s2,e,i,intercambio;

    x = x1;
    y = y1;

    dx = abs(x1-x0);
dy = abs(y1-y0);

s1 = signo(x1-x0);
s2 = signo(y1-y0);

if(y > x)
    {
        p = dx;
    dx = dy;
    dy = p;
    }
    else
       intercambio = 1;
    e=2*dy-dx;
    for(i = 0;i <= dx;i++)
    {
        if(e >= 0)
        {
            if(intercambio == 1)
               x = x+s1;
            else
               y = y+s2;
        }
        e = e-(2*dx);
    }
    if(intercambio == 1)
       y = y+s2;
    else
       x = x+s1;
    e = e+2*dy;
}

int signo(int num)
{
    int resultado;
    if(num < 0)
       resultado = -1;
    else if(num > 0)
       resultado = 1;
    else if(num == 0)
       resultado = 0;
    return resultado;
}

void init(void)
{
    glClearColor(1.0, 1.0, 1.0, 0.0); // colorde la ventana, blanco
    glMatrixMode(GL_PROJECTION);//  proyección de la imagen en la ventana devisualización
    gluOrtho2D(0.0, 400.0, 0.0, 300.0);//  proyección en 2D
}

void estrella(void)
{
   bresenham(0,0,0,130);/*
   bresenham();
   bresenham();
   bresenham();*/
}


de antemano gracias
#43
Dudas Generales / adjuntar archivos
18 Septiembre 2014, 01:31 AM
Saludos

Tengo una duda, no puedo adjuntar archivos desde mi cuenta de correo cuando estoy utilizando chrome, pero si estoy en explorer si se pueden adjuntar los archivos. Alguna idea de cuál puede ser el problema y cómo podría resolverlo???


de antemano gracias
#44
Java / imprime basura
15 Septiembre 2014, 01:27 AM
Saludos

Tengo el siguiente codigo, que utiliza la clase RandomAccessFile para abrir un archivo e imprimir caracter por caracter conforme lo va leyendo:

Código (java) [Seleccionar]
public class AutomataFinito {

public static void main(String[] args) {
char car;
String nombreArchivo;
Scanner teclado = new Scanner(System.in);
System.out.print("Dame nombre del archivo: ");
nombreArchivo = teclado.nextLine();
teclado.close();
try
{
File archivo = new File(nombreArchivo);
RandomAccessFile af = new RandomAccessFile(archivo,"r");
while((car = af.readChar()) != -1)
{
System.out.print(""+car);
}
af.close();
}
catch(IOException ex)
{
System.out.println("No se pudo abrir archivo");
}
}
}


El problema es que me imprime basura y despues imprime el mensaje de no se pudo abrir archivo

de antemano gracias
#45
Saludos

Estoy estudiando la siguiente gramática:

E:= E+E
E:= i

y encontre un problema, esta gramatica tiene recursión a izquierdas, o sea que en alguna de sus reglas inicia con un no terminal, en vez de con un terminal. Le tengo que quitar la recursión a izquierdas, pero no estoy seguro de como

yo la habia hecho asi:

E := iE'
E':=  ε | +E

pero me dicen que la manera correcta es

E: = iE'
E' :=  ε | +iE'

pero no entiendo por qué?? cual es la diferencia entre las dos

de antemano gracias