Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jugran28 en 25 Mayo 2007, 20:21 pm



Título: ayuda a desarrollar un ejercicio
Publicado por: jugran28 en 25 Mayo 2007, 20:21 pm
hola amigos haber si alguien me da algun alcanace para desaarollar estos dos programitas  utilizando meotodos
1.- desarrollar un programa java o c# que me permita almacenar dos conjuntos a y b luego en un conjunto c hallar la union

2--desarrollar un programa java o c# que me permita almacenar dos conjuntos a y b luego en un conjunto c hallar la interseccion

espero sus respuesta



Título: Re: desarrollar programa
Publicado por: Crack_X en 25 Mayo 2007, 20:34 pm
Que tienes hasta ahora?


Título: ayuda a desarrollar un ejercicio
Publicado por: jugran28 en 28 Mayo 2007, 14:35 pm
buenas amigos haber si alguien me puede ayudar adesarrolar este ejercicios me piden que almacen dos aray en un conjunto ay b luego en c me saklga el resultado de union e interseccion : por decir ingreso con el teclado A={2,3,4,6,9} y en B={3,5,6,1,8} y el resultado deberia salirme Union C= {3,6}y intersccion C={1,2,3,4,5,6,8,9} pues hice el codigo no me da lkos resultado haber si alguien me ayuda si por favor el dofigo esta echo en java saludos
 // programa conjuntos

package conjun;
import java.io.*;
public class claseconjunto {
   
   
    public static void main(String[] args)throws IOException {
            int A[] = new int[5];
            int B[] = new int[5];
            int C[] = new int[5];
       
        for(int i=0; i<5; i++)
        {
            System.out.println("Ingrese Valor en A["+i+"] = ");
            BufferedReader dato1 = new BufferedReader(new InputStreamReader(System.in));
            int X = Integer.valueOf(dato1.readLine().trim()).intValue();
            A = X;
        }
         for(int i=0; i<5; i++)
        {
            System.out.println("Ingrese Valor en B["+i+"] = ");
            BufferedReader dato2 = new BufferedReader(new InputStreamReader(System.in));
            int Y = Integer.valueOf(dato2.readLine().trim()).intValue();
            B = Y;
        }
        for(int i=0; i<5; i++)
        {
            C=A=B;
            System.out.println("C["+i+"] = A["+i+"]union A["+i+"] = "+C);
        }
    }
}



Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Casidiablo en 28 Mayo 2007, 20:48 pm
1. Utiliza las etiquetas de codigo para marcar las fuentes de tu programa ((http://foro.elhacker.net/Themes/default/images/bbc/code.gif)).
2. Practica mas... tu logica no está muy bien que digamos.
3. Funciona!!!

Código:
// programa conjuntos
import java.io.*;
public class claseconjunto {
    public static void main(String[] args)throws IOException {
        int A[] = new int[5];
        int B[] = new int[5];
        int C[] = new int[600];
       
        for(int i=0; i<5; i++) {
            System.out.println("Ingrese Valor en A["+i+"] = ");
            BufferedReader dato1 = new BufferedReader(new InputStreamReader(System.in));
            int X = Integer.valueOf(dato1.readLine().trim()).intValue();
            A[i] = X;
        }
        for(int i=0; i<5; i++) {
            System.out.println("Ingrese Valor en B["+i+"] = ");
            BufferedReader dato2 = new BufferedReader(new InputStreamReader(System.in));
            int Y = Integer.valueOf(dato2.readLine().trim()).intValue();
            B[i] = Y;
        }
        for(int i=0, cont=0; i<5; i++)
            for(int j=0; j<5; j++)
                if(A[i]==B[j])
                    C[cont++]=A[i];
        System.out.println("La union de A y B es:");
        for(int i=0; i<10; i++)
            System.out.print(C[i]!=0 ? C[i] : "");
       
        for(int i=0; i<5; i++)
            C[i]=A[i];
        for(int i=0, cont=5; i<5; i++) {
            C[cont++]=B[i];
            for(int j=0; j<5; j++)
                if(C[j]==B[i])--cont;
        }
        System.out.println("La interseccion de A y B es:");
        for(int i=0; i<10; i++)
            System.out.print(C[i]!=0 ? C[i] : "");
    }
}

Saludos!!!

P.d. Este es de los programas más feos que he hecho, pero no tenia tiempo de hacer algo "profesional", no te quejes. Se puede mejorar al 100%.


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: jugran28 en 30 Mayo 2007, 15:27 pm
muchisimas gracias amigo la verdad anduve buscando este ejercicio por una semana  de verdad estoy muy agardecido
por favor si me puede dar algun coreo de mesenger para hacerles alguna consulta yaque recien estoy levando cursos de programacio POO
saludos juan grandes  felicitaciones amigo


Título: Re: ayuda a desarrollar un ejercicio pero es utilizando metodos
Publicado por: jugran28 en 30 Mayo 2007, 20:05 pm

 amigo por favor me podrias decir como hacer la logica pero utilizadon metodos si el program corre pero haciendo con metodo es un embrollo
//metodos conjuntos
package proconjuntos;
import java.io.*;
public class calseconjun {
   
   
    static int  union (int A[], int B[], int C[]){
        int A[]= new int[5];
       int B[]= new int[5];
       int C[]= new int[5];
        for(int i=0, cont=0; i<5; i++)
            for(int j=0; j<5; j++)
                if(A==B[j])
                    C[cont++]=A;

            return C;
        }
    static int  interseccion (int A[], int B[], int C[]){
       int A[]= new int[5];
       int B[]= new int[5];
       int C[]= new int[5];
        for(int i=0; i<5; i++)
            C=A;
        for(int i=0, cont=5; i<5; i++)
            C[cont++]=B;
            for(int j=0; j<5; j++)
                if(C[j]==B)--cont;
            return C;
       }
   
    public static void main(String[] args)throws IOException {
       
        System.out.println("Ingrese la Opcion ");
        System.out.println("1. Calculo  Union ");
        System.out.println("2. Calculo Interseccion");
       
        System.out.println("Ingrese la Opción = ");
        BufferedReader dato1 = new BufferedReader(new InputStreamReader(System.in));
        int OP = Integer.valueOf(dato1.readLine().trim()).intValue();
        switch(OP)
        {
            case 1: {
                        for(int i=0;i<5;i++)
                        System.out.println("Ingrese el valor en A["+i+"] = ");
                        BufferedReader dato2 = new BufferedReader(new InputStreamReader(System.in));
                        double X = Double.valueOf(dato2.readLine().trim()).doubleValue();
                        A =X;
                        System.out.println("La union de A y B es:");
                        for(int i=0; i<10; i++)
                        System.out.print(C!=0 ? C : "");


                         break;
                    }
            case 2: {
                        for(int i=0;i<5;i++)
                       System.out.println("Ingrese el valor en B["+i+"] = ");
                        BufferedReader dato2 = new BufferedReader(new InputStreamReader(System.in));
                        double Y = Double.valueOf(dato2.readLine().trim()).doubleValue();
                        A =Y;
                        System.out.println("La interseccion de A y B es:");
                        for(int i=0; i<10; i++)
                        System.out.print(C!=0 ? C : "");

                       
                    }
            default:{
                        System.out.println("Valor no Valido");
                        break;
                    }
        }
     }
   
    }
   


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Casidiablo en 1 Junio 2007, 22:32 pm
Haber "amigo"...

Lo primero: estudia más, lee más... veo que tienes aun muuuuchas dudas en cuanto a la sintaxis de Java, la "idea" de la POO, la lógica de programación... igual, todos empezamos así.

Lo otro... cuando uno va publicar una respuesta o un nuevo post, existe un pequeño panel con un monton de imagenes, entre ellas con un numeral (#), que indica que lo que se ponga entre esas etiquetas es código... en ese orden de ideas, DEBES poner al código fuente de tus programas esa etiqueta... es fácil... te pido el favor que lo hagas, te lo pido de rodillas si quieres.

Ahora el código:

Código:
import java.io.*;

public class claseconjun {
static void union(int A[], int B[]) {
int C[] = new int[600];
for (int i = 0, cont = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
if (A[i] == B[j])
C[cont++] = A[i];
System.out.println("La union de A y B es:");
for (int i = 0; i < 10; i++)
System.out.print(C[i] != 0 ? C[i] + "" : "");

}

static void interseccion(int A[], int B[]) {
int C[] = new int[600];
for (int i = 0; i < 5; i++)
C[i] = A[i];
for (int i = 0, cont = 5; i < 5; i++) {
C[cont++] = B[i];
for (int j = 0; j < 5; j++)
if (C[j] == B[i])
--cont;
}
System.out.println("La interseccion de A y B es:");
for (int i = 0; i < 10; i++)
System.out.print(C[i] != 0 ? C[i] + "" : "");

}

public static void main(String[] args) throws IOException {
int A[] = new int[5];
int B[] = new int[5];
System.out.println("Ingrese la Opcion ");
System.out.println("1. Calculo  Union ");
System.out.println("2. Calculo Interseccion");

System.out.println("Ingrese la Opción = ");
BufferedReader dato1 = new BufferedReader(new InputStreamReader(
System.in));
int OP = Integer.valueOf(dato1.readLine().trim()).intValue();
switch (OP) {
case 1: {
for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en A[" + i + "] = ");
dato1 = new BufferedReader(new InputStreamReader(System.in));
int X = Integer.valueOf(dato1.readLine().trim()).intValue();
A[i] = X;
}
for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en B[" + i + "] = ");
BufferedReader dato2 = new BufferedReader(
new InputStreamReader(System.in));
int Y = Integer.valueOf(dato2.readLine().trim()).intValue();
B[i] = Y;
}

union(A, B);

break;
}
case 2:
for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en A[" + i + "] = ");
dato1 = new BufferedReader(new InputStreamReader(System.in));
int X = Integer.valueOf(dato1.readLine().trim()).intValue();
A[i] = X;
}
for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en B[" + i + "] = ");
BufferedReader dato2 = new BufferedReader(
new InputStreamReader(System.in));
int Y = Integer.valueOf(dato2.readLine().trim()).intValue();
B[i] = Y;
}
interseccion(A, B);
break;
default: {
System.out.println("Valor no Valido");
break;
}
}
}
}

Saludos!!!


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: marioly en 4 Junio 2007, 13:24 pm
Tantos for no te marean Casidiablo :huh: , demasiado code no ?  :-\ y ademas duplicas, que en java no es muy bueno.. (como al leer A y B 2 veces) y tiene cosas como:

int C = int[600] ;
Integer.valueOf(dato1.readLine().trim()).intValue();

 :o

Y en union muestra valores duplicados, que no creo que sea asi (por hacer A == B , pero no comprobar si ya existe en C)

Podria hacer:
Código:
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;


public class claseconjun {
static ArrayList listA = new ArrayList();
static ArrayList listB = new ArrayList();
static ArrayList listC = new ArrayList();

static void union() {

listA.trimToSize();
listB.trimToSize();

for( int i = 0; i < listA.size(); i++ )
if( listB.contains(listA.get(i)) && !listC.contains(listA.get(i)) )
listC.add(listA.get(i));

System.out.println("La union de A y B es:");

Iterator it = listC.iterator();
while( it.hasNext() )
System.out.print(it.next() + " ");
}

static void interseccion() {
listA.addAll(listB);
Collections.sort(listA);

System.out.println("La interseccion de A y B es:");

Iterator it = listA.iterator();
while( it.hasNext() )
System.out.print(it.next() + " ");
}

public static void main(String[] args) throws IOException {

System.out.println("Ingrese la Opcion ");
System.out.println("1. Calculo  Union ");
System.out.println("2. Calculo Interseccion");

System.out.println("Ingrese la Opción = ");
BufferedReader dato1 = new BufferedReader(new InputStreamReader(
System.in));
int OP = Integer.parseInt(dato1.readLine().trim());

for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en A[" + i + "] = ");
dato1 = new BufferedReader(new InputStreamReader(System.in));
Integer X = new Integer(Integer.parseInt(dato1.readLine().trim()));
listA.add(i, X);
}
for (int i = 0; i < 5; i++) {
System.out.println("Ingrese Valor en B[" + i + "] = ");
BufferedReader dato2 = new BufferedReader(
new InputStreamReader(System.in));
Integer Y = new Integer(Integer.parseInt(dato2.readLine().trim()));
listB.add(i, Y);
}

switch (OP) {
case 1:
union();
break;
case 2:
interseccion();
break;
default:
System.out.println("Valor no Valido");
break;
}
}
}

Java tiene una amplia coleccion de clases utiles, usala!  ;)

Citar
P.d. Este es de los programas más feos que he hecho, pero no tenia tiempo de hacer algo "profesional", no te quejes. Se puede mejorar al 100%.

No creo que sea cuestion de tiempo :P , de hecho ami no me llevo mucho hacer el mio :)

PD: Casidiablo , deberias tratar de tener un poco mas de empatia por los usuarios  :-\ ellos no te obligan a responder ..


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Casidiablo en 4 Junio 2007, 17:04 pm
HOAAAA!!!

marioly... pues

1. Con respecto a lo de los for... ummm, pues la verdad odio tener que poner tantos, de verdad, me encanta tener un programa lo más corto y limpio posible,
2. "Java tiene una amplia colección de clases útiles, usala!", esta me hace gracia... NO soy un gurú en Java, pero conozco bastante acerca de los paquetes y clases "útiles" en Java.
3. "No creo que sea cuestion de tiempo , de hecho ami no me llevo mucho hacer el mio ", cuando hablo de cuestión de tiempo no me refiero a 3 - 5 minutos, estoy hablando de 50 segundos que tienes entre acabar una tarea en el trabajo, y que tu jefe llegue a madrearte.
4. "deberias tratar de tener un poco mas de empatia por los usuarios  undecided ellos no te obligan a responder ..", no, si eso lo se de sobra, solo que la primera vez se dice de buena manera (en la primera respuesta), luego ya significa que te toman del pelo. Está bien ser nuevo, pero si ya se ha avisado una vez, porqué seguirse saltando las normas.
5. Tu código está mal, la intersección NO hace lo que debe hacer.
6. Ahora sí, con la mente relajada, y 6 minutos más de tiempo, aquí está el código FUNCIONAL, bonito, profesional... bueno, aún se puede mejorar, de eso no me queda la menor duda:

Código:
import java.io.*;
import java.util.*;
import javax.swing.*;
public class claseconjunto {
    static ArrayList listA = new ArrayList();
    static ArrayList listB = new ArrayList();
    static ArrayList listC = new ArrayList();
   
    static void imprimirC(String x) {
        String resultado="La "+x+" de A y B es:\n";
        Iterator it = listC.iterator();
        while( it.hasNext() )
            resultado+=it.next() + " ";
        JOptionPane.showMessageDialog(null,resultado);
    }
    static void union() {
        listA.trimToSize();
        listB.trimToSize();
        for( int i = 0; i < listA.size(); i++ )
            if( listB.contains(listA.get(i)) && !listC.contains(listA.get(i)) )
                listC.add(listA.get(i));
        imprimirC("union");
    }
   
    static void interseccion() {
        listA.addAll(listB);
        Collections.sort(listA);
        Iterator it = listA.iterator();
        Object temp = null, sig = null;
        while( it.hasNext() ) {
            sig=it.next();
            if(sig!=temp) {
                temp=sig;
                listC.add(sig);
            }
        }
        imprimirC("interseccion");
    }
   
    public static void main(String[] args) throws IOException {
        int OP = Integer.parseInt(JOptionPane.showInputDialog(null,"1. Calculo Union\n2. Calculo Interseccion\n\nDigita la opcion"));
        for (int i = 0; i < 5; i++)
            listA.add(i, Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese Valor en A[" + i + "] = ")));
        for (int i = 0; i < 5; i++)
            listB.add(i, Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese Valor en B[" + i + "] = ")));
        switch (OP) {
            case 1:
                union();
                break;
            case 2:
                interseccion();
                break;
            default:
                System.out.println("Valor no Valido");
                break;
        }
    }
}

7. Muchas gracias por los consejos, de verdad, aprecio tu preocupación por mi ;)

Saludos profe!!!


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Ragnarok en 4 Junio 2007, 18:27 pm
Con respecto a la empatía con los usuarios demasiada ha tenido Casidiablo, porque yo le iba a remitir directamente a las normas, no sólo el usuario sigue sin poner las etiquetas de código y pidiendo que le hagamos su tarea (esto no son dudas sobre java, sino sobre un programa concreto), sino que además ha insistido con otros posts, sin leer las normas, etc.

También dudo que este usuario algún día ayude a resolver la duda de otro, la gente que quiere todo hecho y ni se molesta en mirar las normas no tiende a mirar las dudas de otros y mucho menos responderlas. Por eso hay que ser duro para que la gente no insista en estas conductas.


Con respecto a mirar las clases de java, la interfaz set (conjunto) ya está implementada en varias clases:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html
La unión es addAll y la intersección es retainAll, así que no hacía falta más.


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: marioly en 4 Junio 2007, 21:54 pm
Cierto ragnarok! , se podia usar retainAll :)


3. "No creo que sea cuestion de tiempo , de hecho ami no me llevo mucho hacer el mio ", cuando hablo de cuestión de tiempo no me refiero a 3 - 5 minutos, estoy hablando de 50 segundos que tienes entre acabar una tarea en el trabajo, y que tu jefe llegue a madrearte.
Delay is preferable to error. -- Thomas Jefferson ;) , claro, aunque en el trabajo no deberias estar checando el foro xD

5. Tu código está mal, la intersección NO hace lo que debe hacer.


?? , cual error? no se tenian que alinear repetir numeros? , eso no lo sabia u.u

y puedes verificar si ya lo contien el array o hacer lo que tu pero pones:
Object temp = null, sig = null;

Cuando ya sabes que valores guarda el arraylist :)


7. Muchas gracias por los consejos, de verdad, aprecio tu preocupación por mi
de nada :) , espero que lo tomes como criticas constructivas, por que eso son, no tengo nada contra ti, saludos :)


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Casidiablo en 5 Junio 2007, 01:44 am
de nada :) , espero que lo tomes como criticas constructivas, por que eso son, no tengo nada contra ti, saludos :)

Sep, yo sé que son constructivas... además algo he aprendido (lo de retainAll)... como veis aún me falta mucho, pero hay voy.

Gracias por los comentarios, saludos ;)


Título: Re: desarrollar programa
Publicado por: inosen en 12 Junio 2007, 17:43 pm
Mira en google el algoritmo de dijkstra.
Basicamente hace lo q necesitas lo unico q tendras q implementarlo, yo lo hice para la carrera y no es muy complejo, lo he buscao x si te servia pero no se donde parara, espero haberte ayudado.
Salu2


Título: Re: desarrollar programa
Publicado por: »~^~«CkNU!»~^~« en 13 Junio 2007, 05:05 am
Dikjstra es un algoritmo de camino más corto para árboles binarios. La constulta es sobre teoría de conjuntos, unión e intersección.


Título: Re: desarrollar programa
Publicado por: Overloaded en 17 Junio 2007, 04:06 am
Supongo que usando la clase Collection que trae java implementada podras hacerlo sin mucho esfuerzo.

la union basicamente es añadir en el conjunto C lo que hay en A + lo que hay en B.

para la interseccion tendras que ir comprobando que los elementos esten en ambos conjuntos y si estan en ambos pues lo metes en C


Título: Re: ayuda a desarrollar un ejercicio
Publicado por: Ragnarok en 17 Junio 2007, 14:30 pm
Se han combinado dos temas, se puede ver a cual pertenecía cada mensaje mirando el asunto de cada uno, aunque ninguno sea descriptivo.