elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 2 [3]
21  Programación / Java / Problemas con manejo de memoria dinamica en: 3 Febrero 2012, 17:51 pm
Hola a todos, estoy haciendo un programa que me mandaron en la universidad pero estoy algo confundido, el programa lo que hace es crear un registro con una clase, en el menu de opciones esta la opcion de buscar y eliminar, igual la de mostrar todo, luego de que se cierra el programa se guarda lo que estaba en la clase en el archivo. Podrian hecharle una ojeada al codigo y corregirle los errores?

acá esta el código
Código:



package procesamiento;

/**
 *
 * @author Jose Angel
 */
import java.util.Scanner;
import java.io.*;

public class Main {



 
    public Main() {
    }
   
   

public static Articulo aux, aux2, aux_elim, primero; //Auxiliares necesarios para llevar el control de la memoria dinámica
public  static int i,j,respuesta_eliminar; //i,j son contadores, respuesta_eliminar es el codigo que se usara para eliminar
public static char respuesta_control, talla; // respuesta_control es para llevar el control del ciclo central, talla para guardar el valor de la talla antes de meterlo en la memoria dinámica
public static boolean encontrado, existe; //valores booleanos que ayudan en la busqueda y en la eliminacion
public static int opcion, numero,  buscar; //otros valores, opcion para el menu, numero es el codigo que se le asignara a cada articulo, buscar es el id que se usara para buscar.
public static String nombre, color; //otros valores que se usan para agarrar valores antes de meterlos a la clase.
public static float precio; //otro valor que se usa para agarrar un valor antes de meterlo a la clase.
public static void main(String[] args) {
 aux2 = null; 
 primero = null;
    do
    {
    encontrado = false;
existe = false;
//los valores de arriba deben inicializarce en false.
    Scanner teclado= new Scanner(System.in); //lectura desde el teclado para inicializar el menu
    System.out.println("Que desea hacer? \n1.- Agregar (1)\n2.- Buscar (2)\n3.- Eliminar (3)\n4.- Mostrar Todo (4)\n5.- Salir (5)");
    opcion = teclado.nextInt();//lectura de entero desde el teclado.
    switch (opcion)
    {
        case 1: //opcion agregar
           
            aux = new Articulo();//crea un nuevo nodo en la clase articulo
            if (primero == null)
            {
                primero = aux;
            }
            Scanner lector_n= new Scanner(System.in); // todos los scanners que vienen aca son para leer los datos necesarios para llenar los campos de la clase
            System.out.println("Escriba el nombre del producto:");
            nombre = lector_n.next();
            aux.nombre = nombre;
            Scanner lector_t = new Scanner(System.in);
            System.out.println("Escriba la talla del producto:");
            talla = lector_t.next(). charAt(0);//lectura de la primera letra de lo que se escribe desde el teclado
            aux.talla = talla;
            Scanner lector_c = new Scanner(System.in);
            System.out.println("Escriba el color del producto:");
            color = lector_c.next();
            aux.color = color;
            Scanner lector_p = new Scanner(System.in);
            System.out.println("Escriba el precio del producto:");
            precio = lector_p.nextFloat(); //lectura del numero decimal que se escribe desde el teclado
            aux.precio = precio;
            numero++;
            aux.codigo = numero;//asignacion de el codigo al producto
            aux2 = aux;
            aux.guia = aux2;
           System.out.println(aux2.guia);
            break;
        case 2:
            Scanner buscador = new Scanner(System.in);
            System.out.println("Escriba el codigo del producto que desea buscar");
            buscar = buscador.nextInt() ;//se lee el entero que seria el codigo que se esta buscando
          // aux2 = primero;
           System.out.println(aux2.guia);
           
          for (int b = 0; i < numero; i++)  {//se hace el recorrido a la clas
             if (aux2.codigo == buscar) //si se encuentra encontrado va a ser igual a true
                {
                    encontrado = true;
                    break;
                }

            aux2 = aux2.guia;
              }
           
            if (encontrado == true) //si encontrado fue true mostrara todos los datos de la clase que buscamos por el codigo
                 System.out.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo );
            else
                System.out.println("No encontrado.");
            break;
        case 3: //ESTA PARTE NO ESTA BIEN AUN
             Scanner eliminar= new Scanner(System.in);
             System.out.println("Inserte el codigo del producto que desea eliminar");
             respuesta_eliminar = eliminar.nextInt();
           
        aux2 = primero;//nos situamos al inicio de la lista
        while (aux2.guia != null){
           
            //si el nodo a eliminar fuera el primero
             if (aux2.codigo == respuesta_eliminar){
                //guardamos en un auxiliar del siguiente
                //del que vamos a eliminar
                Articulo auxiliar = aux2.guia.guia;
                aux2.guia = null;
                aux2.guia = auxiliar;
            }

            aux2 = aux2.guia;
        }
                     
         
            break;
        case 4:
         
         while (aux2 != null)   
         { //aca se hace el recorrido a todo lo que esta en la clase y lo muestra en pantalla
       
                System.out.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo );         
                 aux2 = aux2.guia;//esto es para que se vaya incrementando las direcciones.
         }
            break;
        case 5:
                break;
        default:
            System.out.println("Opcion "+ opcion + " es inválida");
            break;
    }
    Scanner lectura= new Scanner(System.in);//nueva lectura desde teclado para saber si se hara alguna otra cosa en el menu
    System.out.println("Desea continuar?");
    respuesta_control = lectura.next(). charAt(0);
    }while (respuesta_control == 's' || respuesta_control == 'S' ); 
    //aca empieza lo que tiene que ver con el archivo
    FileWriter archivo = null; // este valor hace referencia al nuevo archivo que crearemos
    PrintWriter escritor = null; // este valor hace referencia al escritor que usaremos para escribir (obviamente D:)
        try
        {
            archivo = new FileWriter("c:/nuevoarchivo.txt"); //aqui seleccionamos el nuevo archivo que usaremos para escribir (si no existe igualmente se crea)
            escritor = new PrintWriter(archivo); //esto es lo que nos ayudara a escribir en el archivo
            while (aux2 != null){ //hacemos un recorrido a toda la clase
                escritor.println("Nombre: " + aux2.nombre + " Talla: " + aux2.talla + " Color:" + aux2.color + " Precio:" + aux2.precio+ " Codigo:" + aux2.codigo ); //y empezamos a escribir linea por linea todos los valores que hay en la clase
                 aux2 =aux2.guia;//incrementa las direcciones
            }       
         
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
           try {
           // Nuevamente aprovechamos el finally para
           // asegurarnos que se cierra el fichero.
           if (null != archivo)
              archivo.close();
           } catch (Exception e2) {
              e2.printStackTrace();
           }
        }
   
   
                   
                }
                }
 
Gracias de antemano
Saludos
22  Programación / Programación C/C++ / Función de inclusión de valores a una matriz en: 21 Septiembre 2011, 02:35 am
Hola foreros, justo ahora estoy tratando de hacer una función para añadir  valores a un arreglo bidimensional, el problema es que mis conocimientos no son suficientes para desarrollar esto xD; mis conocimientos son muy limitados (me familiarizo más con lua (una extensión de c++)). Por si no he dejado claro, la función debería funcionar así:

agregar("nombre1", "nombre2", "nombre3")

deberia retornar un arreglo bidimensional con cada uno de esos valores "como primer campo" y el segundo campo sería "posición del campo en el arreglo + 10000".

a lo que me refiero es a esto:
nombre1 10000
nombre2 10001
nombre3 10002

Espero puedan ayudarme,
Saludos y gracias de antemano
23  Programación / Programación C/C++ / Problema al compilar en: 14 Septiembre 2011, 04:04 am
estaba compilando unas sources de un juego y me topé con este error:
Código:
obj\status.o:status.cpp|| undefined reference to `_imp__xmlFree'|
obj\tools.o:tools.cpp|| undefined reference to `_imp__xmlFree'|
obj\tools.o:tools.cpp|| undefined reference to `_imp__xmlFree'|
obj\tools.o:tools.cpp|| undefined reference to `_imp__xmlFree'|
obj\tools.o:tools.cpp|| undefined reference to `_imp__xmlFree'|
obj\tools.o:tools.cpp|| more undefined references to `_imp__xmlFree' follow|
||=== Build finished: 6 errors, 0 warnings ===|
uso Code::Blocks
alguien sabe como solucionar ese problema?
Saludos y gracias de antemano
24  Programación / Programación C/C++ / Ayuda con este error en: 4 Septiembre 2011, 04:53 am
Hola foreros, me he estado adentrando en el c++ y estoy reprogramando las sources de un juego, hasta ahora he sabido manejar los errores que ocasionan mis códigos, pero justo ahora no entiendo de donde sale XD.

este es el código:

Código
  1. void Player::onSummonAttackedCreatureDrain(Creature* summon, Creature* target, int32_t points)
  2. {
  3. Creature::onSummonAttackedCreatureDrain(summon, target, points);
  4.  
  5.  
  6. std::string str = summon->getName();
  7. size_t start = str.find("'s") + 2;
  8. size_t end = str.find("[");
  9. std::string result = str.substr(start, end-start);
  10.  
  11. char buffer[100];
  12. sprintf(buffer, "Your %s deals %d damage to %s.",result.c_str , points, target->getNameDescription().c_str());
  13. sendTextMessage(MSG_EVENT_DEFAULT, buffer);
  14. }
  15.  


Código:
||=== TheForgottenServer, Compile Server ===|
player.cpp||In member function 'virtual void Player::onSummonAttackedCreatureDrain(Creature*, Creature*, int32_t)':|
player.cpp|3801|error: invalid use of member (did you forget the '&' ?)|
||=== Build finished: 1 errors, 0 warnings ===|

ni idea del por qué de ese error, espero puedan ayudarme
Saludos y gracias de antemano
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines