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ú

Mensajes - m@o_614

#351
Java / Re: variables globales
10 Junio 2012, 18:56 PM
Saludos lo que intentaba hacer era esto:

declarar una constante global (lo confundi con variable global)

public class Clase {
   //constantes//
   public static final double CONSTANTE=16.0;

y despues utilizar esa constante en otra función

espero haberme dado a entender

gracias
#352
Java / variables globales
10 Junio 2012, 00:02 AM
Saludos

Tengo entendido que las variables globales no existen, pero me pregunto si hay alguna manera de declarar alguna variable en el main y que a la hora de mandar llamar un método está pueda utilizarse en el, tal como se hace en el lenguaje C???

gracias

#353
Saludos

aqui ya el código no me marca errores ni me saca del programa como antes, pero no hace nada. Si te fijas es casi el mismo código que el tuyo

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10

typedef struct info
{
    int dato;
    struct info *sig;
}L;

void insertar_final(int i,L *lista);
L *nuevo_nodo(int i);

int main()
{
    L *lista;
    lista= NULL;//inicializo la lista vacia
    srand(time(NULL));
    int opcion,continuar=1,i;
    do
    {
        printf("Menu!\n");
        printf("1) Insertar al final\n");
        printf("2) Mostrar lista\n");
        printf("3) Buscar elemento\n");
        printf("4) Busqueda recursiva\n");
        printf("5) Contar elementos en la lista\n");
        printf("6) Salir\n");
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1:
               for(i=(rand()%MAX+1);i;)
                  insertar_final(i,lista);
               break;
            case 2:
               break;
            case 3:
            //no lo he terminado
               break;
            case 4:break;
            //no lo he terminado
            case 5:break;
            //no lo he terminado
            case 6:
               continuar=0;
               break;
            default:
               printf("Opcion no valida\n");
        }
    }while(continuar);
    return 0;
}

void insertar_final(int i,L *lista)
{
    L *ultimo;
    ultimo= nuevo_nodo(i);

    if(lista==NULL)
       lista=ultimo;
    while(lista->sig!=NULL)
       lista=lista->sig;
    lista->sig=ultimo;
}

L *nuevo_nodo(int i)
{
    L *nuevo;
    nuevo= (L*)malloc(sizeof(L));
    nuevo->dato= i;
    nuevo->sig= NULL;
    return nuevo;
}



gracias
#354
Java / clase Vector
5 Junio 2012, 22:16 PM
Saludos estoy utilizando la clase Vector del API de Java, para un programa que me implementa 3 clases una tupla y dos administradoras de tuplas, esto es lo que llevo hecho por lo pronto:

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

class Materia{
public String clave,nombre;

public Materia(String clave,String nombre){
this.clave=clave;
this.nombre=nombre;
}
}

class Fila{
private Vector<Materia> fila;

public Fila(){
fila=new Vector<Materia>();
}

public void agregar(String clave,String nombre){
Materia m;
m=new Materia(clave,nombre);
fila.add(m);
}

public Materia dameSiguiente(){
}
}

class Pila{
private Vector<Materia> pila;

public Pila(){
pila=new Vector<Materia>();
}

public void push(String clave,String nombre){
Materia m;
m=new Materia(clave,nombre);
pila.add(m);
}

public Materia pop(){
if(vacia()){
System.out.println("Error!! Pila vacia");
}
return;
}
public boolean vacia(){
return tope == -1;
}
}

public class FilaYPila {

public static void main(String[] args) {
Fila fila= new Fila();
Pila pila= new Pila();
Materia mat;

fila.agregar("CC200","Programación Orientada a Objetos");
fila.agregar("CC201","Taller de Programación Orientada a Objetos");
fila.agregar("CC202","Estructuras de Datos");
fila.agregar("CC203","Taller de Estructuras de Datos");

pila.push("CC200","Programación Orientada a Objetos");
pila.push("CC201","Taller de Programación Orientada a Objetos");
pila.push("CC202","Estructura de Datos");
pila.push("CC203","Taller de Estructuras de Datos");

System.out.println("Imprimiendo elementos de la fila");
mat=fila.dameSiguiente();
System.out.println(mat);  //Imprimase "CC200 Programacion Orientada a Objetos"
mat=fila.dameSiguiente();
System.out.println(mat);  //Imprimase "CC201 Taller de Programacion Orientada a Objetos"
mat=fila.dameSiguiente();
System.out.println(mat);
mat=fila.dameSiguiente();
System.out.println(mat);

System.out.println("Imprimiento elementos de la pila");
mat=pila.pop();
System.out.println(mat);  //Imprimase "CC203 Taller de Estructuras de Datos"
mat=pila.pop();
System.out.println(mat);  //Imprimase "CC202 Estructuras de Datos"
mat=pila.pop();
System.out.println(mat);
mat=pila.pop();
System.out.println(mat);
}

}
mi duda la tengo en la función vacia, que la tengo que utilizar para saber si puedo desapilar un objeto o no, pero no se si tengo que implementarla yo como lo estoy haciendo o si no porque ya esta en el API

gracias
#355
Aqui ya dividi la tarea de agregar nodos con las funciones insertar_final y nuevo_nodo (es la que crea el nodo) pero todavia no me queda claro para que utilizar el apuntador lista, si fuera una lista que inserte por el encabezado sería un poco más fácil, pero como en insertar al final no tengo un puntero que me apunte al ultimo nodo y tengo que recorrer la lista y despues insertar

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10

typedef struct info
{
    int dato;
    struct info *sig;
}L;

void insertar_final(int i,L **lista);
L *nuevo_nodo(int i);

int main()
{
    L *lista;
    lista= NULL;//inicializo la lista vacia
    srand(time(NULL));
    int opcion,continuar=1,i;
    do
    {
        printf("Menu!\n");
        printf("1) Insertar al final\n");
        printf("2) Mostrar lista\n");
        printf("3) Buscar elemento\n");
        printf("4) Busqueda recursiva\n");
        printf("5) Contar elementos en la lista\n");
        printf("6) Salir\n");
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1:
               for(i=(rand()%MAX+1);i;)
                  insertar_final(i,&lista);
               break;
            case 2:
               break;
            case 3:
            //no lo he terminado
               break;
            case 4:break;
            //no lo he terminado
            case 5:break;
            //no lo he terminado
            case 6:
               continuar=0;
               break;
            default:
               printf("Opcion no valida\n");
        }
    }while(continuar);
    return 0;
}

void insertar_final(int i,L **lista)
{
    L *ultimo;
    ultimo= nuevo_nodo(i);
    if(ultimo->sig!=NULL)//aqui recorro la lista hasta encontrar NULL
        ultimo=ultimo->sig;
    ultimo->sig= *lista;//aqui ya encontro NULL entonces lo apunto con lista
}

L *nuevo_nodo(int i)
{
    L *nuevo;
    nuevo= (L*)malloc(sizeof(L));
    nuevo->dato= i;
    nuevo->sig= NULL;
    return nuevo;
}


saludos
#356
Saludos durasno respondiendo a tu pregunta lo que pasa es que como ultimo ya lo habia declarado como apuntador pensé que reservandole memoria en

   ultimo->sig

lo que estaba haciendo era creando un nuevo nodo que estuviera enlazado al campo sig del apuntador ultimo, no se si me di a entender??? :-\  o sea que crei que ultimo al momento de declararlo como apuntador era un nodo que tenia un campo dato y un enlace sig, pense que con tan solo hacer esto:

   L *ultimo;
ya tenia la direccion de una estructura

entendi bien?? No se si este es mi principal error

saludos y gracias
#357
Saludos estoy haciendo el siguiente codigo de listas enlazadas que me ingresen datos por el final de la lista, todavia me cuesta trabajo comprender esto de las listas y es por eso que solamente tengo una funcion de los cases hecha, pero me marca errores como:

dereferencing pointer to incomplete type y no entiendo que es lo que estoy haciendo mal

#include <stdio.h>
#include <stdlib.h>

typedef struct info
{
    int dato;
    struct lista *sig;
}L;

void insertar_final(int x,L *lista);

int main()
{
    L *lista;//Aqui coloco el puntero hacia la estructura
    lista= NULL;//Lo inicializo en NULL para indicar que esta vacia
    int opcion,continuar=1,x;
    do
    {
        printf("Menu!\n");
        printf("1) Insertar al final\n");
        printf("2) Mostrar lista\n");
        printf("3) Buscar elemento\n");
        printf("4) Busqueda recursiva\n");
        printf("5) Contar elementos en la lista\n");
        printf("6) Salir\n");
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1:
               printf("Dame el dato que deseas insertar:\n");
               scanf("%d",&x);
               insertar_final(x,lista);//le paso el dato que deseo colocar como primer nodo y el puntero
               break;
            case 2:
               //no lo he terminado
               break;
            case 3:
            //no lo he terminado
               break;
            case 4:break;
            //no lo he terminado
            case 5:break;
            //no lo he terminado
            case 6:
               continuar=0;
               break;
            default:
               printf("Opcion no valida\n");
        }
    }while(continuar);
    return 0;
}

void insertar_final(int x,L *lista)
{
    L *ultimo;//otro puntero ahora hacia el ultimo nodo
    ultimo->sig=(L*)malloc(sizeof(L));//le asigno memoria (creo nuevo nodo)
    ultimo->sig->dato= x;//le asigno el elemento que queria
    ultimo->sig->sig=NULL;
    ultimo= ultimo->sig;
}
#358
Java / clase abstracta y herencia
27 Mayo 2012, 18:25 PM
Saludos estoy haciendo este programa para aprender de clases abstractas,herencia y polimorfismo

Código (java) [Seleccionar]
abstract class Persona{
private String nombre;
private String direccion;
private String telefono;
private String rfc;

public Persona(String nombrex,String direccionx,String telefonox,
String rfcx){
fijaNombre(nombrex);
fijaDireccion(direccionx);
fijaTelefono(telefonox);
fijaRFC(rfcx);
}

public void fijaNombre(String nombrex){
nombre=nombrex;
}

public void fijaDireccion(String direccionx){
direccion=direccionx;
}

public void fijaTelefono(String telefonox){
telefono=telefonox;
}

public void fijaRFC(String rfcx){
rfc=rfcx;
}

public String dameNombre(){
return nombre;
}

public String dameDireccion(){
return direccion;
}

public String dameTelefono(){
return telefono;
}

public String dameRFC(){
return rfc;
}

public String concatenaInfo(){
return dameNombre()+" "+dameDireccion()+" "+dameTelefono()+" "+dameRFC();
}
}

class PersonaFisica extends Persona{
private String claveIFE;

public PersonaFisica(String nombrex,String direccionx,String telefonox,
String rfcx,String claveIFEx){
super(nombrex,direccionx,telefonox,rfcx);
fijaClaveIFE(claveIFEx);
}

public void fijaClaveIFE(String claveIFEx){
claveIFE=claveIFEx;
}

public String dameClaveIFE(){
return claveIFE;
}

public String concatenaInfo(){
return super.concatenaInfo()+" "+dameClaveIFE();
}
}

class PersonaMoral extends Persona{
private PersonaFisica representante;

public PersonaMoral(String nombrex,String direccionx,String telefonox,
String rfcx,PersonaFisica representantex){
super(nombrex,direccionx,telefonox,rfcx);
fijaRepresentante(representantex);
}

public void fijaRepresentante(PersonaFisica representantex){
representante=representantex;
}

public PersonaFisica dameRepresentante(){
return representante;
}

public String concatenaInfo(){
return super.concatenaInfo()+" "+dameRepresentante();
}
}

public class PolimorfismoRelaciones {

public static void main(String[] args) {
PersonaFisica pf=new PersonaFisica("Juan","Huanatos #2502","36789765","AMA36","457AB");
PersonaMoral pm=new PersonaMoral("Ana","Rio Altar #4562","36895764",
"SA2347",new PersonaFisica("Juan","Huanatos #2502","36356736","XH89NT","489H"));
System.out.println(pf);
System.out.println(pm);
}

}


Lo tuve que hacer siguiendo unos requerimientos obligatorios que me puso mi profesor que son los siguientes:

Entregar un archivo fuente PolimorfirmoRelaciones.java para aplicación de consola
que cumpla con los siguientes requerimientos
2. Codificación de la clase PolimorfirmoRelaciones conteniendo al método main
3. Codificación de la clases Persona, PersonaFisica y PersonaMoral en el mismo
archivo
4. Solo declarar los atributos de cada clase (no definirlos en la misma línea que sean
declarados)
5. Inicializar todos los atributos de las clases por medio de un constructor con
parámetros
6. Declarar y definir los métodos dame() para las clases
7. Declarar y definir los métodos fija() para las clases
8. La inicialización de los atributos haga uso de los métodos fija()
9. La clase Persona no sea instanciable
10. Codificar en el ámbito del método main lo siguiente:
a) Declarar y definir una variable de instancia del tipo PersonaFisica
b) Declarar y definir una variable de instancia del tipo PersonaMoral
c) Mediante un sólo método del objeto de tipo PersonaFisica que devuelva un
String, imprimir en la consola toda su información
d) Mediante un sólo método del objeto de tipo PersonaMoral que devuelva un
String, imprimir en la consola toda su información.

No me marca errores pero a la hora de compilarlo solo me imprime esto
y no se por qué, debería imprimirme toda la información concatenada


PersonaFisica@12dacd1
PersonaMoral@1ad086a

de antemano gracias
#359
Java / validacion fecha
21 Mayo 2012, 03:24 AM
saludos

estaba haciendo un codigo para verificación de fechas que es el siguiente:
Código (java) [Seleccionar]
public class MesesV3 {

public static void main(String[] args) {
//constantes
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;
//variables//
   int dia,mes,año;
   System.out.println("VERIFICADOR DE FECHA v1.0");

   System.out.println("Dame el dia:");
   dia=ScanF.leeInt();
   System.out.println(" "+dia);
   System.out.println("Dame el mes:");
   mes=ScanF.leeInt();
   System.out.println("Dame el año:");
   año=ScanF.leeInt();
   System.out.println(" "+año);
   switch(mes)
   {
       case ENERO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case FEBRERO:
        if(((año%400==0)||((año%4==0)&&(año%100!=0))&&(dia<=29&&dia>0)))
              System.out.println("Fecha valida!");
           else
           if(dia<=28&&dia>0)
              System.out.println("Fecha valida!");
           else
              System.out.println("Dia no valido!");
           break;
       case MARZO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!\n");
           break;
       case ABRIL:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case MAYO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case JUNIO:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case JULIO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case AGOSTO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case SEPTIEMBRE:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case OCTUBRE:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case NOVIEMBRE:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case DICIEMBRE:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       default: System.out.println("Mes no válido!");
   }

}

}


pero mi profesor me dijo que esta parecia mas una practica de programación estructurada y ahora tengo que corregirla y hacerla de nuevo con los siguientes requerimientos

3. Inicializar todos los atributos con datos válidos
por medio de un constructor sin parámetros
4. Declarar y definir todos los métodos dame()
5. Declarar y definir todos los métodos fija()
6. Incluir al menos el método verifica() mostrado (se puede optar por otra forma en
nombre y parámetros, pero igualmente privada)
7. Es optativo y deseable que los otros métodos fija también sean booleanos.
8. Contemple que un año bisiesto es múltiplo de 4, no múltiplo de 100 pero sí múltiplo de
400
9. Programarla lo más completa y sintética posible de forma que siempre represente en sus
atributos una fecha válida
10. Validación en cada uno de los métodos fija para que los atributos en conjunto
representen siempre una fecha correcta sea cual fuere el orden posible de invocación a
los métodos fija() desde main
11. Si al tratar de cambiar algún atributo mediante un método fija(), la nueva fecha no sería
válida, los atributos permanezcan sin modificación.
12. Evitar imprimir mensajes a consola desde métodos al interior de la clase (el método
main no forma parte de la clase)
13. Codificar en el ámbito del método main lo siguiente:
a) Declaración de variable de instancia del tipo MiFecha en una línea independiente
b) Instanciación de un objeto del tipo MiFecha sobre la variable del punto anterior
c) Definición de todos los atributos del objeto instanciado mediante sus 3 métodos de
interfaz
d) Impresión en consola del contenido de cada uno de los atributos, uno por línea
e) Evitar solicitar datos al usuario por consola

y esto es lo que llevo programado pero en los métodos fija no se a que se refiere con Validación en cada uno de los métodos fija para que los atributos en conjunto
representen siempre una fecha correcta si la validación ya la hice en el metodo verificarDia

Código (java) [Seleccionar]
public class MiFecha {
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;
public MiFecha(){
dia=26;
mes=MARZO;
año=1992;
}
public boolean fijaDia(int diax){
dia=diax;
return true;
}

public int dameDia(){
return dia;
}

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

public int dameMes(){
return mes;
}

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

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

private boolean verificaDia(int dia,int mes,int año){

boolean fechaValida= false;
switch(mes){
case ENERO:
case MARZO:
case MAYO:
case JULIO:
case AGOSTO:
case OCTUBRE:
case DICIEMBRE:
if(dia < 0 && dia >31)
fechaValida=true;
else
fechaValida=false;
break;
case FEBRERO:
if(((año%400==0)||((año%4==0)&&(año%100!=0))&&(dia<=29&&dia>0)))
fechaValida=true;
       else if(dia<=28&&dia>0)
        fechaValida=true;
       else
        fechaValida=false;
       break;
case ABRIL:
case JUNIO:
case SEPTIEMBRE:
case NOVIEMBRE:
if( dia > 0 && dia < 30)
fechaValida=true;
else
fechaValida=false;
break;
}
return fechaValida;
}
}
class Encapsulamiento{
public static void main(String[] args) {
MiFecha f=new MiFecha();
System.out.println("la fecha es: "+f.dameDia()+"/"+f.dameMes()+"/"+f.dameAnio());
}
}


de antemano gracias
#360
Java / Re: Error en llamada a metodo
13 Mayo 2012, 18:33 PM
No, el codigo compila bien hace lo que le pido a excepción de esa parte, cuando imprime el ISR