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

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2
1  Programación / Bases de Datos / Ejercicio bases de datos mysql, manipulación de datos. en: 14 Mayo 2012, 21:27 pm
Bueno, ahí va otro boletín esta vez sobre manipulación de datos, es probable que encontréis errores pero ya digo que no está corregido :D Learn !!
 

Buenas referencias en..
 http://www.java2s.com/Code/SQL/CatalogSQL.htm

1.- Un almacén de distribución de artículos desea mantener información sobre las ventas hechas por las tiendas que compran al almacén. Dispone de las siguientes tablas para mantener esta información:

ARTICULOS: almacena cada uno de los artículos que el almacén puede abastecer a las tiendas. Cada artículo viene determinado por las columnas: ARTICULO (PK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto) y CATEGORIA (ENUM). La categoría puede ser 'PRIMERA', 'SEGUNDA' o 'TERCERA'.

Código
  1. CREATE TABLE `ARTICULOS` (
  2. `ARTICULO` TINYINT(2) NOT NULL,
  3. `COD_FAB` TINYINT(2) NOT NULL,
  4. `PESO` TINYINT(2) NULL DEFAULT NULL,
  5. `CATEGORIA` ENUM('PRIMERA','SEGUNDA','TERCERA') NULL DEFAULT NULL,
  6. PRIMARY KEY (`ARTICULO`, `COD_FAB`),
  7. INDEX `FK_ARTICULOS_FABRICANTE` (`COD_FAB`),
  8. CONSTRAINT `FK_ARTICULOS_FABRICANTE` FOREIGN KEY (`COD_FAB`) REFERENCES `FABRICANTE` (`COD_FAB`)
  9. )
  10. COLLATE='utf8_general_ci'
  11. ENGINE=InnoDB;
  12.  

FABRICANTES: contiene los países de origen de los fabricantes de artículos. Cada COD_FABRICANTE (PK entero corto) tiene su MARCA (UNICO de 20 caracteres) y su NOMBRE_PAIS (UNICO de 20 caracteres).

Código
  1. CREATE TABLE `FABRICANTE` (
  2. `COD_FAB` TINYINT(2) NOT NULL,
  3. `MARCA` VARCHAR(20) NULL DEFAULT NULL,
  4. `NOMBRE_PAIS` VARCHAR(20) NULL DEFAULT NULL,
  5. PRIMARY KEY (`COD_FAB`),
  6. UNIQUE INDEX `MARCA` (`MARCA`),
  7. UNIQUE INDEX `NOMBRE_PAIS` (`NOMBRE_PAIS`)
  8. )
  9. COLLATE='utf8_general_ci'
  10. ENGINE=InnoDB;
  11.  


TIENDAS: almacena los datos de las tiendas que venden artículos. Cada tienda se identifica por su NIF (PK entero largo) y almacena además su PROVINCIA (20 caracteres).


Código
  1. CREATE TABLE `TIENDAS` (
  2. `NIF` VARCHAR(10) NOT NULL,
  3. `PROVINCIA` VARCHAR(20) NULL DEFAULT NULL,
  4. PRIMARY KEY (`NIF`)
  5. )
  6. COLLATE='utf8_general_ci'
  7. ENGINE=InnoDB;
  8.  

PEDIDOS: son los pedidos que realizan las tiendas al almacén. Cada pedido almacenará: NIF (PK FK entero largo), ARTICULO (PK FK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto), CATEGORIA (ENUM 'PRIMERA','SEGUNDA','TERCERA') y FECHA_PEDIDO (TIMESTAMP con valor por defecto FECHA ACTUAL). Cada fila de la tabla representa un pedido.


Código
  1. CREATE TABLE `PEDIDOS` (
  2. `NIF` VARCHAR(10) NOT NULL,
  3. `ARTICULO` TINYINT(2) NOT NULL,
  4. `COD_FAB` TYNYINT(2) NOT NULL,
  5. `PESO` SMALLINT(10) NULL DEFAULT NULL,
  6. `CATEGORIA` ENUM('PRIMERA','SEGUNDA','TERCERA') NULL DEFAULT NULL,
  7. `FECHA_PEDIDO` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
  8. PRIMARY KEY (`NIF`, `ARTICULO`, `COD_FAB`),
  9. INDEX `FK_PEDIDOS_ARTICULOS` (`ARTICULO`),
  10. INDEX `FK_PEDIDOS_FABRICANTE` (`COD_FAB`),
  11. CONSTRAINT `FK_PEDIDOS_ARTICULOS` FOREIGN KEY (`ARTICULO`) REFERENCES `ARTICULOS` (`ARTICULO`),
  12. CONSTRAINT `FK_PEDIDOS_FABRICANTE` FOREIGN KEY (`COD_FAB`) REFERENCES `FABRICANTE` (`COD_FAB`)
  13. )
  14. COLLATE='utf8_general_ci'
  15. ENGINE=InnoDB;
  16.  


2.- Crea una tabla VENTAS, a partir de PEDIDOS, que almacena las ventas de artículos que hace cada una de las tiendas. Cada venta se identifica por: NIF (PK FK entero largo), ARTICULO (PK FK entero corto), COD_FABRICANTE (PK FK entero corto), PESO (entero corto), CATEGORIA (ENUM 'PRIMERA','SEGUNDA','TERCERA') y FECHA_PEDIDO (TIMESTAMP con valor por defecto FECHA ACTUAL). Cada fila de la tabla representa una venta.

Código
  1. CREATE TABLE VENTAS (SELECT * FROM PEDIDOS);
  2.  


*************************************

3.- Modifica las tablas PEDIDOS y VENTAS para que incluyan un campo donde almacenar UNIDADES_PEDIDAS (entero corto) y UNIDADES_VENDIDAS (entero corto) respectivamente.


Código
  1. ALTER TABLE VENTAS ADD COLUMN UNIDADES_VENDIDAS TINYINT(10) NOT NULL AFTER FECHA_PEDIDO;
  2. ALTER TABLE PEDIDOS ADD COLUMN UNIDADES_PEDIDAS TINYINT(10) NOT NULL AFTER FECHA_PEDIDO;
  3.  

4.- Introduce en las tablas los siguientes datos:

Código
  1. INSERT INTO `ARTICULOS` (`ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`) VALUES
  2. (1, 1, 20, 'PRIMERA'),
  3. (2, 1, 45, 'TERCERA'),
  4. (3, 1, 10, 'TERCERA'),
  5. (4, 1, 15, 'PRIMERA'),
  6. (5, 2, 100, 'SEGUNDA'),
  7. (6, 2, 15, 'PRIMERA'),
  8. (7, 2, 30, 'PRIMERA'),
  9. (8, 2, 80, 'TERCERA'),
  10. (9, 3, 25, 'TERCERA'),
  11. (10, 3, 25, 'PRIMERA'),
  12. (11, 3, 70, 'SEGUNDA'),
  13. (12, 3, 90, 'SEGUNDA');
  14.  
  15. INSERT INTO `FABRICANTE` (`COD_FAB`, `MARCA`, `NOMBRE_PAIS`) VALUES
  16. (1, 'FELVI', 'ITALIA'),
  17. (2, 'CANTIER', 'FRANCIA'),
  18. (3, 'PEDROSA', 'ESPAÑA');
  19.  
  20. INSERT INTO `PEDIDOS` (`NIF`, `ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`, `FECHA_PEDIDO`, `UNIDADES_PEDIDAS`) VALUES
  21. ('2222-A', 12, 3, 90, 'SEGUNDA', '0000-00-00 00:00:00', 20),
  22. ('4545-C', 1, 1, 20, 'PRIMERA', '2009-03-11 00:00:00', 10),
  23. ('5555-B', 1, 1, 20, 'PRIMERA', '2009-03-09 00:00:00', 40),
  24. ('5555-B', 2, 1, 45, 'TERCERA', '2009-03-11 00:00:00', 20),
  25. ('7788-D', 3, 1, 10, 'TERCERA', '2010-03-12 00:00:00', 40);
  26.  
  27. INSERT INTO `TIENDAS` (`NIF`, `PROVINCIA`) VALUES
  28. ('1111-A', 'SEVILLA'),
  29. ('2222-A', 'TOLEDO'),
  30. ('4545-C', 'MADRID'),
  31. ('5555-B', 'PONTEVEDRA'),
  32. ('7788-D', 'TOLEDO'),
  33. ('9911-H', 'TOLEDO');
  34.  
  35.  
  36. INSERT INTO `VENTAS` (`NIF`, `ARTICULO`, `COD_FAB`, `PESO`, `CATEGORIA`, `FECHA_PEDIDO`, `UNIDADES_VENDIDAS`) VALUES
  37. ('2222-A', 12, 3, 90, 'SEGUNDA', '2012-03-16 00:00:00', 10),
  38. ('4545-C', 1, 1, 20, 'PRIMERA', '2009-11-04 00:00:00', 5),
  39. ('5555-B', 1, 1, 20, 'PRIMERA', '2009-12-03 00:00:00', 20),
  40. ('5555-B', 2, 1, 45, 'TERCERA', '2009-03-13 00:00:00', 20),
  41. ('7788-D', 3, 1, 10, 'TERCERA', '2011-03-11 00:00:00', 30);
  42.  




5.- Realiza las siguientes operaciones:

a) Da de alta un nuevo artículo de 'PRIMERA' categoría para los fabricantes de 'FRANCIA' y abastece con 5 unidades de ese artículo a todas las tiendas y en la fecha de hoy.

Código
  1. #primero doy de alta un articulo nuevo
  2. INSERT INTO ARTICULOS
  3. SELECT (13,
  4. (SELECT A.COD_FAB FROM ARTICULOS A, FABRICANTE F WHERE F.NOMBRE_PAIS LIKE'FRANCIA' AND A.COD_FAB=F.COD_FAB LIMIT 1),
  5. NULL,'PRIMERA';
  6.  
  7. INSERT INTO PEDIDOS
  8. SELECT TIENDAS.NIF, 13, FABRICANTES.COD_FAB, 40, 'PRIMERA', NOW(), 5 FROM TIENDAS, FABRICANTES
  9. WHERE FABRICANTES.NOMBRE_PAIS='FRANCIA';
  10. [/code=SQL]
  11.  
  12. [SIZE=10pt][i][b]b) Inserta un pedido de 20 unidades en la tienda '1111-A' con el artículo que mayor número de ventas haya realizado.[/b][/i][/SIZE]
  13.  
  14. [code=SQL]
  15. INSERT INTO PEDIDOS (`NIF`,`ARTICULO`,`COD_FAB`,`UNIDADES_PEDIDAS`)
  16. VALUES
  17. ('1111-A',
  18. (SELECT ARTICULO FROM VENTAS WHERE UNIDADES_VENDIDAS = (SELECT MAX(UNIDADES_VENDIDAS) FROM VENTAS)),
  19. (SELECT COD_FAB FROM ARTICULOS WHERE ARTICULO = (SELECT ARTICULO FROM VENTAS WHERE UNIDADES_VENDIDAS = (SELECT MAX(UNIDADES_VENDIDAS) FROM VENTAS))),
  20. 20)
  21.  

Código
  1. #A
  2. INSERT INTO PEDIDOS (`NIF`,`ARTICULO`,`COD_FAB`,`UNIDADES_PEDIDAS`)
  3. VALUES
  4. ('1111-A',
  5. ARTICULO,
  6. COD_FAB,
  7. CATEGORIA,
  8. NOW(),
  9. 20
  10. FROM VENTAS GROUP BY ARTICULO ORDER BY SUM(UNIDADES_VENDIDAS) DESC LIMIT 1;)
  11.  


c) Da de alta una tienda en la provincia de 'MADRID' y abastécela con 20 unidades de cada uno de los artículos existentes.

Código:
INSERT INTO TIENDAS 
VALUES ('1111-E','MADRID');

INSERT INTO PEDIDOS
SELECT '1111-E',ARTICULO,COD_FAB,PESO,CATEGORIA,NOW(),20
FROM ARTICULOS;

d) Da de alta dos tiendas en la provincia de 'SEVILLA' y abastécelas con 30 unidades de artículos de la marca de fabricante 'CANTIER'.

Código
  1. INSERT INTO TIENDAS
  2. VALUES
  3. ('2222-F','SEVILLA'),
  4. ('3333-G','SEVILLA');
  5.  
  6. INSERT INTO PEDIDOS
  7. SELECT '2222-F',ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),30
  8. FROM ARTICULOS,FABRICANTES
  9. WHERE (FABRICANTES.MARCA='CANTIER')
  10. AND (FABRICANTES.COD_FAB=ARTICULOS.COD_FAB);
  11.  
  12. INSERT INTO PEDIDOS
  13. SELECT '3333-G', ARTICULOS.ARTICULO, ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),30
  14. FROM ARTICULOS,FABRICANTES WHERE
  15. (FABRICANTES.MARCA='CANTIER')
  16. AND
  17. (FABRICANTES.COD_FAB = ARTICULOS.COD_FAB);
  18.  

e) Realiza una venta para todas las tiendas de 'TOLEDO' de 10 unidades en los artículos de 'PRIMERA' categoría.

Código
  1. INSERT INTO VENTAS
  2. SELECT TIENDAS.NIF, ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(), 10
  3. FROM (ARTICULOS.CATEGORIA='PRIMERA');
  4.  

f) Para aquellos artículos de los que se hayan vendido más de 30 unidades, realiza un pedido de 10 unidades para la tienda con NIF '5555-B' con la fecha actual.


Código
  1. ALTER TABLE  PEDIDOS DROP PRIMARY KEY,ADD PRIMARY KEY(NIF,ARTICULO,COD_FAB,FECHA_PEDIDO);
  2.  
  3. INSERT INTO PEDIDOS
  4. SELECT DISTINCT '5555-B',
  5. ARTICULOS.ARTICULO,ARTICULOS.COD_FAB,ARTICULOS.PESO,ARTICULOS.CATEGORIA,SYSDATE(),10
  6. FROM ARTICULOS,VENTAS,
  7. (SELECT SUM(VENTAS.UNIDADES_VENDIDAS) AS A,
  8. VENTAS.ARTICULO AS B FROM VENTAS GROUP BY VENTAS.ARTICULO) AS C,
  9. WHERE ARTICULO.ARTICULO=VENTAS.ARTICULO
  10. AND A>30
  11. AND C.B = ARTICULOS.ARTICULO;
  12.  

g) Cambia los datos de la tienda con NIF '1111-A' igualándolos a los de la tienda con NIF '2222-A'.

Código
  1. UPDATE TIENDAS AS A, (SELECT PROVINCIA FROM TIENDAS WHERE NIF='2222-a') AS B
  2. SET A.PROVINCIA = B.PROVINCIA
  3. WHERE NIF = 1111
  4.  

h) Cambia todos los artículos de 'PRIMERA' categoría a 'SEGUNDA' categoría del país 'ITALIA'.

Código
  1. UPDATE ARTICULOS A
  2. SET A.CATEGORIA = 'SEGUNDA'
  3. WHERE A.CATEGORIA = 'PRIMERA'
  4. AND A.COD_FAB = (SELECT COD_FAB FROM FABRICANTE WHERE NOMBRE_PAIS LIKE 'ITALIA')
  5.  

i) Modifica aquellos pedidos en los que la cantidad pedida sea superior a las existencias del artículo, asignando el 20 por 100 de las existencias a la cantidad que se ha pedido.

Código
  1. ALTER TABLE ARTICULOS ADD COLUMN EXISTENCIAS INT(10) NULL DEFAULT 10000 AFTER CATEGORIA;
  2.  
  3. UPDATE PEDIDOS AS P, ARTICULOS AS AR,
  4. (SELECT P.UNIDADES_PEDIDAS FROM PEDIDOS GROUP BY P.ARTICULO),
  5. (SELECT AR.ARTICULO AS A FROM ARTICULOS, PEDIDOS,
  6. (SELECT SUM(P.UNIDADES_PEDIDAS) AS B, P.ARTICULO AS C FROM PEDIDOS GROUP BY P.ARTICULO) AS D WHERE AR.EXISTENCIAS<B
  7. AND
  8. AR.ARTICULO=P.ARTICULO AND D.C=AR.ARTICULO GROUP BY P.ARTICULO) AS E
  9. SET P.UNIDADES_PEDIDAS=(P.UNIDADES_PEDIDAS*(20/100)) WHERE P.ARTICULO=E.A;
  10.  

j) Elimina aquellas tiendas que no hayan realizado ventas.

Código
  1. DELETE FROM TIENDAS
  2. WHERE NIF
  3. NOT IN(SELECT DISTINCT NIF FROM VENTAS);
  4.  

k) Elimina los artículos que no hayan tenido ni compras ni ventas.

Código
  1. DELETE FROM ARTICULOS
  2. WHERE ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM VENTAS)
  3. AND
  4. ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM PEDIDOS);
  5. [/code=SQL]
  6.  
  7. [SIZE=10pt][i][b]l) Borra los pedidos de 'PRIMERA' categoría cuyo país de procedencia sea 'FRANCIA'.
  8. [/b][/i][/SIZE]
  9. [code=SQL]
  10. DELETE FROM PEDIDOS
  11. WHERE ARTICULO IN(SELECT ARTICULO FROM ARTICULOS WHERE CATEGORIA = 'PRIMERA')
  12. AND
  13. COD_FAB = ANY(SELECT COD_FAB FROM FABRICANTE WHERE NOMBRE_PAIS = 'FRANCIA')
  14.  

m) Resta uno a las unidades de los últimos pedidos de la tienda con NIF '5555-B'.

Código
  1. OPCION B
  2. UPDATE PEDIDOS AS A,(SELECT NIF FROM PEDIDOS WHERE NIF =5555 ORDER BY FECHA_PEDIDO DESC LIMIT 1) AS B
  3. SET UNIDADES_PEDIDAS = UNIDADES_PEDIDAS-1
  4. WHERE
  5. A.NIF = B.NIF
  6.  





n) Crea una tabla INFORME, que contenga en tres columnas las marcas, artículo y la suma total de unidades vendidas de cada artículo.

Código
  1. CREATE TABLE INFORME
  2. SELECT FABRICANTES.MARCA,ARTICULOS.ARTICULO,NULL,(S,0)
  3. FROM FABRICANTES, ARTICULOS
  4. LEFT OUTER JOIN
  5. (SELECT VENTAS.ARTICULO AS B,
  6. SUM(VENTAS.UNIDADES_VENDIDAS) AS S FROM VENTAS
  7. GROUP BY VENTAS.ARTICULO) AS A
  8. ON ARTICULOS.ARTICULO = A.B
  9. WHERE ARTICULOS.COD_FAB=FABRICANTES.COD_FAB
  10.  

o) Borra el contenido de la tabla anterior.
[
Código
  1. TRUNCATE TABLE INFORME
  2. code]
  3.  
  4.  
  5. [SIZE=10pt][i][b]p) Elimina la tabla anterior.[/b][/i][/SIZE]  
  6.  
  7. [code=SQL]
  8. DROP TABLE INFORME
  9.  
[/code][/code][/code]
2  Programación / Bases de Datos / El mejor cliente SQL para Bases de Datos ? en: 10 Abril 2012, 13:33 pm
Estoy buscando un cliente potente para linux, alguna recomendación ? gracias ^^
3  Programación / Bases de Datos / Problema con outer join en: 26 Febrero 2012, 16:13 pm
Hola tengo una problemilla con esta consulta :

8.- Visualiza los nombres de los alumnos de la tabla ALUMNO que no estén en la tabla ANTIGUO ni en la tabla NUEVO.


 ALUMNO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------------+
| JUAN         |   20    | VIGO       |
| MANUEL     |   16    | PONTEAREAS |
| FERNANDO |   32 | TUI                   |
| PACA         |   25 | SALAMANCA     |
| PEPA         |   19 | LUGO               |
+----------+------+------------+


ANTIGUO;
+----------+------+-----------+
| NOMBRE   | EDAD | LOCALIDAD |
+----------+------+-----------+
| PEPA          |   19 | LUGO      |
| FERNANDO  |   32 | TUI       |
| JULIA         |   19 | CANARIAS  |
| CHONI       |   22 | MADRID    |
| PEPE         |   43 | BARCELONA |
+----------+------+-----------+


 NUEVO;
+----------+------+------------+
| NOMBRE   | EDAD | LOCALIDAD  |
+----------+------+------------+
| MANUEL     |   16 | PONTEAREAS |
| RODRIGO  |   32 | CORU�A        |
| PILI          |   43 | POLLO            |
| FERNANDO |   32 | TUI               |
+----------+------+------------+

Sé que hay que utilizar outer join pero no soy capaz de escribir bien la sintaxis y llevo ya horas ralladísimo.

Si útilizo por ejemplo los left y right outers join y quitando los NULL me acaba devolviendo los que coinciden y necesito justamente todos los que NO se repitan



Gracias :)
4  Programación / Java / Mi primera interfaz gráfica que funciona !!! en: 8 Febrero 2012, 18:22 pm
Bueno, es mi primera interfaz gráfica con eclipse en Java, hay que decir que :

- eventos,
- swing
y etc...

 todavía no lo he dado en clase, lo máximo que hemos dado es arrays y todo lo que hacemos se hace por consola por Scanner (xD)

Se trata de un jueguillo que trata de que el usuario adivine los numeros de los textAreas de la derecha.

Un saludo !!!

https://rapidshare.com/files/1239131820/Juego_adivina.jar
5  Programación / Bases de Datos / Ejercicio para Bases de datos en: 1 Febrero 2012, 17:39 pm
Bueno, me parece bién postear este ejercicio por si alguien esta interesado este temilla, es un boletín de ejercicios de BDD que tengo que entregar xD más abajo pondré mis soluciones, a ver que os parecen.


CONSULTAS BÁSICAS

1.- Diseña la base de datos para una librería que desea mantener la información de cada tema (cadena de caracteres de longitud fija 15 única y no nula), el estante en que se ubica (1 carácter) y el número de ejemplares de que dispone (valor numérico longitud 2).

Introduce datos de forma aleatoria, teniendo en cuenta que los temas encajan dentro de la siguiente lista: HISTORIA, FICCIÓN, MEDICINA, INFORMATICA, ARTE, RELIGION. Y que el estante es una letra del abecedario.

Realiza las siguientes consultas:

a) Obtener todos los datos cuyo tema sea “FICCION” usando “=” y posteriormente “LIKE”. ¿Es el resultado el mismo? ¿Y si modificaras la tabla asignando longitud variable al campo tema?

b) Obtener el tema, estante y ejemplares de las filas con ejemplares comprendidos entre 8 y 15.

c) Obtener las columnas tema, estante y ejemplares de las filas cuyo estante no esté comprendido entre 'B' y 'D'.

d) Obtener con una única sentencia SELECT todos los temas de la librería cuyo número de ejemplares sea inferior a los que hay en 'MEDICINA'.

e) Obtener los temas de la librería cuyo número de ejemplares no esté entre 15 y 20, ambos incluidos.



2.- En un colegio se desea almacenar la información de los alumnos (DNI [10] no nulo y único, Apellidos_Nombre [30], Dirección [30], Población [15] y Teléfono [10], todos cadenas de caracteres de longitud variable), las asignaturas que cursan (Código como valor numérico de 2 cifras no nulo y único; y Nombre, cadena de caracteres de longitud variable 20) y las notas que obtienen dichos alumnos en las diferentes asignaturas que cursen (el valor de la nota será un número de 2 cifras).

Diseña el modelo E/R, a continuación transfórmalo a Grafo Relacional, para posteriormente implementar la base de datos y sus consecuentes tablas, campos y tipos de datos.

Introduce datos aleatorios para poder realizar las consultas detalladas más abajo.

Realiza a continuación las siguientes consultas:

a) Obtener el nombre y apellidos de cada alumno, asignatura que cursa y nota obtenida en dicha asignatura.

b) Obtener los nombres y apellidos de los alumnos que han cursado 'FOL'.
6  Programación / Java / Ordenar array bidimensional en: 30 Enero 2012, 17:48 pm
Teniendo este array :


456     234     593     616
24       861     245     154
548     21       552     101
290     468     691     348

Necesito ordenarlo por columnas se me occurio este método pero el array se sale del rango :


Código
  1. for (int u = 0; u < notas.length; u++) {
  2. for (int i = 0; i < nombres.length; i++) {
  3. for (int j = 0; j < nombres.length; j++) {
  4. if(notas[i][u] > notas[j][u]){
  5. int aux=notas[i][u];
  6. int aux2=notas[j][u];
  7. notas[i][u]=aux2;
  8. notas[j][u]=aux;
  9. }
  10. }
  11. }
  12. }

Un saludo
7  Programación / Java / Mi algoritmo para eliminar datos de un array (tengo que usar 5 arrays) en: 25 Enero 2012, 21:10 pm
Hola, después de haberme rayado la cabeza desde las ocho de la tarde, he conseguido sacar el ejercicio que me mandaron hoy en DAM en el módulo de programación (Java).

El ejercicio consiste en juntar 4 arrays

A un array String van asociados los valores de un array Int
A otro array String se le asocian los valores de otro array Int

Otro array fusiona los dos anteriores Strings[]
y otro fusiona los dos int[]

Ni que decir tengo que cada elemento del String fusionado[] tiene que corresponderle su valor.

Se ve mejor pensando que :

Un banco tiene estos clientes

String clientes[]           Int capital[]

Otro banco tiene estos

String clientes2[]         Int clientes2[]

Pero se fusionan y acaban todos

String clientes3[]        int clientes3[]



Código
  1. public class PruebasMain {
  2.  
  3. /**
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. // TODO Auto-generated method stub
  8. String[] a ={"Pedro", "Rodrigo", "Manuel",
  9. "Jose",   "Paco",};
  10.  
  11.  
  12. String[] b={"Luis",   "Antonio", "Pedro",
  13. "Juan",  "Rodrigo"};
  14.  
  15. String[] N={"Pedro", "Rodrigo", "Manuel",
  16. "Jose",   "Paco"  , "Luis",
  17. "Antonio","Pedro" , "Juan",
  18. "Rodrigo"};
  19. int M[]={100,200,300,
  20. 400,500,600,
  21. 1000,2000,
  22. 3000,4000,
  23. 5000,};
  24.  
  25. int[] c={100,200,300,
  26. 400,500};
  27.  
  28. int[] d={1000,2000,3000,
  29. 4000,5000};
  30. int k;
  31. String auxNombre="";boolean bandera=false;
  32.  
  33. for (int j = 0; j < b.length; j++) { //el indice indica el elemento a compara
  34. for (int i = 0; i < a.length; i++) { //el indice indica los elementos que compara
  35. if(b[j].equals(a[i])){ //si el nombre es igual al otor array
  36. auxNombre=a[i]; //asigna el nombre a un auxiliar
  37. int auxDin=c[i]+d[j]; //y a un auxiliar la suma de los dos valores de sus capitales
  38. for (int l = 0; l < N.length; l++) { //este for asigna los valores al tercer array
  39. if(N[l].equals(auxNombre)){ //si N es igual al nombre encontrado
  40. M[l]=c[i]+d[j]; //se le asigna el dinero de auxDin
  41. N[l]=N[l]+" duplicado"; //si se le concatena al string de su nombre duplicado
  42. int o=l; //se guarda el indice
  43. if (l>o && N[l].equals(auxNombre)) { //para asegurarme que no vacie el primero
  44. N[l]="(--Vacio--)";
  45. M[l]=0;
  46. }
  47. }
  48. }
  49. }
  50. }
  51. }//fin del segundo
  52. }// fin del primero
  53. }


Se ve mejor pensando que :

Un banco tiene estos clientes

String clientes[]           Int capital[]

Otro banco tiene estos

String clientes2[]         Int clientes2[]

Pero se fusionan y acaban todos

String clientes3[]        int clientes3[]


Añado que todavía no di los arreglos multidimensionales. Si no veo ninguna respuesta lo entiendo ya que esto me parece un poco cocedura xD.

Lo posteo porque me gustaría saber que os pareces o si se podría hacer de una forma mas simple.

PD: Si alguien lo resuelve con 2 líneas de código abro la ventana y me tiro :D
siento el tocho
8  Programación / Java / Duda array en constructor en: 23 Enero 2012, 00:51 am
Hola teniendo este código

Código:
public class CaixaNova {

String nombresClientesNV[]=new String[5];
int capitalesClientes[]=new int[5];

public CaixaNova(){

nombresClientesNV[1]="Juanito";
nombresClientesNV[2]="Maria";
nombresClientesNV[3]="LoLo";
nombresClientesNV[4]="Maria";
nombresClientesNV[5]="Maria";

capitalesClientes[0]=2000;
capitalesClientes[1]=5000;
capitalesClientes[2]=1000;
capitalesClientes[3]=2500;
capitalesClientes[4]=3000;
}//fin del constructor


}

me gustaría saber si hay alguna otra forma de inicializar los arrays en el constructor porque esto me parece una lamerada y me parece raro que no haya otra forma ya probe con :

Código:
	String nombresClientesNV[]=new String[5];
int capitalesClientes[]=new int[5];

public CaixaNova(){




}

y con esto

Código:
public Class CaixaNova{
String nombresClientesNV[];
int capitalesClientes[]=new int[5];

public CaixaNova(){

nombresClientesNV[]={"Juan","Pedro","LoLo","Paco","Bob"};
}//fin del constructor

}

y nada... me tira errores
9  Programación / Java / Problema con un metodo (arrays) en: 21 Enero 2012, 14:45 pm
En este método lleno mi array int capCaixaGz=new int[5] de numeros aleatorios. El método funciona perfectamente, el problema, es que luego quiero hacer lo mismo con otro array.

Código:
		public void setCapCaixNv(){

for (byte i = 0; i < capCaixaGz.length; i++)
capCaixaGz[i]=(int) Math.floor(Math.random()*1000000);

}//fin del metodo setCapCaixaNv


Lo que me gustaría hacer sería esto


Código:
		public void setCapBanco(int BANCO){

for (byte i = 0; i < BANCO.length; i++)
BANCO[i]=(int) Math.floor(Math.random()*1000000);

}//fin del metodo setCapBanco

Mi duda es como puedo asignarle a mi array capCaixaGz la referencia banco para poder introducirlo despues en el método ???.

Muchas gracias
10  Programación / Java / Duda con un array, imprimir sus valores a la inversa. en: 11 Enero 2012, 22:59 pm
Hola, intento que la salida de este arreglo se imprima a la inversa con un bucle for pero, llevo rompiendome todo el día la cabeza y no consigo nada.

Código:
package Boletin9_1;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {

double [] numeros=new double [6];

for(int i=0;i<numeros.length;i++){

numeros[i]=Math.floor((Math.random()*50+1));
}
for (int x=6;x>=0;x--){
System.out.println(numeros[x]);
}

    }
}

Me tira esta excepción.

Código:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at areglosiniciar.Main.main(Main.java:20)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines