ayuda a desarrollar un ejercicio

Iniciado por jugran28, 25 Mayo 2007, 20:21 PM

0 Miembros y 1 Visitante están viendo este tema.

jugran28

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


Crack_X

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone

jugran28

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);
        }
    }
}


Casidiablo

1. Utiliza las etiquetas de codigo para marcar las fuentes de tu programa ().
2. Practica mas... tu logica no está muy bien que digamos.
3. Funciona!!!

// 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%.

jugran28

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

jugran28


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;
                    }
        }
     }
   
    }
   

Casidiablo

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:

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

marioly

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:

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

Casidiablo

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:

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

Ragnarok

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.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones