|
Mostrar Temas
|
Páginas: [1] 2
|
1
|
Programación / Programación C/C++ / Leer cadena y contar cantidad de días que se encuentran en esta.
|
en: 6 Marzo 2020, 01:48 am
|
Tengo la gran duda de cómo obtengo la cantidad de días de la siguiente cadena de texto: “Se otorga bono por cierre a las 02 am los días 22, 23 y 24 de febrero”.
Me gustaría saber cómo obtengo esos tres valores (22, 23 y 24) para mostrar la cantidad de días, que en este caso la respuesta sería 3. Y asimismo cuando tenga uno, dos o más días. No adjunto código porque no sé por dónde o cómo empezar.
|
|
|
2
|
Programación / Programación General / Leer una función matemática [Visual Basic o C#]
|
en: 28 Agosto 2019, 20:15 pm
|
Bueno, tengo como tarea realizar una aplicación que sea capaz de leer una función matemática (seno, coseno, variables, etc) y resolver cierto ejercicio (en este caso, el error aproximado a la raíz por medio del método de bisección), sin embargo, no tengo ni la más remota idea de cómo hacerlo (leer la función).
Entonces, lo único que solicito es que me guíen por el camino correcto para poder resolver esto, y si son súper generosos, compartirme un ejemplo.
|
|
|
3
|
Programación / Java / Error java.lang.Byte cannot be cast to java.lang.Integer
|
en: 24 Agosto 2019, 04:15 am
|
Tengo el siguiente error: "java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer" cuando en ninguna parte tengo declarada alguna variable del tipo Byte. Lo mismo sucede con las otras dos líneas siguientes. private void Cargar4() { Session s = NewHibernateUtil.getSessionFactory().openSession(); try { Query query = s.createQuery("select\n" + " c.categoryId as idCategoria,\n" + " c.name as nombre,\n" + " count(*) as Cantidad\n" + "from Category c\n" + "inner join c.filmCategories fc\n" + "group by c.name"); List<Object[]> res = query.list(); List<PeliculaC> elist = new ArrayList<PeliculaC>(); while(it.hasNext()){ PeliculaC pc = new PeliculaC(); pc.setIdCategoria((int) line[0]); //Esta es la línea donde me indica el error pc. setNombre((String) line [1]); //java.lang.Long cannot be cast to java.lang.String pc.setCantidad((int) line[2]); //java.lang.Byte cannot be cast to java.lang.Integer elist.add(pc); } { JOptionPane. showMessageDialog(null, "Fallo de conexion: "+io. toString()); }finally { s.close(); } }
Espero puedan ayudarme.
|
|
|
4
|
Programación / Java / Error java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to class
|
en: 14 Agosto 2019, 01:48 am
|
Me gustaría algo de ayuda para resolver ese problemita de casteo. Se supone que, lo que tengo aquí: " c.categoryId as IdCategoria,\n" + " c.name as nombre,\n" + " count(*) as Cantidad\n" + "from Category c\n" + "inner join c.filmCategories fc\n" + "group by c.name"; Iterator iterador = s. createQuery(hql ). list(). iterator(); while(iterador.hasNext()) { System. out. println(obj [0]+" - "+obj [1] +" - "+obj [2]); }
Se tiene que mostrar en un reporte usando Jasper-Reports. Tengo la siguiente clase que manda a imprimir en el reporte, los elementos de la consulta: public class CategoriaPelicula implements JRDataSource{ private List<PeliculaC> lista4 = new ArrayList<PeliculaC>(); private int indiceFact = -1; @Override public boolean next() throws JRException { return ++indiceFact < lista4.size(); } @Override public Object getFieldValue (JRField jrf ) throws JRException { if("IdCategoria".equals(jrf.getName())) { valor = String. valueOf(lista4. get(indiceFact ). getIdCategoria()); } if("Nombre".equals(jrf.getName())) { String x = lista4. get(indiceFact ). getNombre(); valor = x; } if("Cantidad".equals(jrf.getName())) { valor = String. valueOf(lista4. get(indiceFact ). getCantidad()); } return valor; } /*El problema está en esta parte*/ public void addPeliculaC(PeliculaC c){ this.lista4.add(c); } /**/ public void Limpiar(){ if(indiceFact == -1) indiceFact = -1; else indiceFact -= 1; } }
Y aquí es donde ejecuto la consulta para mi reporte: private void Cargar4() { Session s = NewHibernateUtil.getSessionFactory().openSession(); try { Query query = s.createQuery("select\n" + " c.categoryId as idCategoria,\n" + " c.name as nombre,\n" + " count(*) as Cantidad\n" + "from Category c\n" + "inner join c.filmCategories fc\n" + "group by c.name");//.setResultTransformer(Transformers.aliasToBean(PeliculaC.class)); List<PeliculaC> elist = query.list(); for (PeliculaC e: elist) { DataSource4.addPeliculaC(e); } { //JOptionPane.showMessageDialog(null, "Fallo de conexion: "+io.toString()); System. out. println("Fallo de conexion" + io. toString()); }finally { s.close(); } }
En resumen, lo que tengo de primero, tengo que transformarlo para imprimirlo en mi reporte de Jasper, pero he intentado de todo y sigo sin resolver ese problema. Espero puedan ayudarme.
|
|
|
5
|
Programación / Bases de Datos / Clientes que hayan realizado más de 5 órdenes por año [DB Northwind]
|
en: 6 Abril 2019, 04:42 am
|
Tengo el siguiente problema: Seleccionar a todos los clientes que hayan realizado más de 5 órdenes por año. Presentar el detalle de las cantidad por año. Ordenar por año. Esto es lo que yo hice y que no sé si está correcto: ALTER PROCEDURE SP_TopClientes AS CREATE TABLE #HistorialCantidad( --IdHistorial int primary key identity(0,1), Nombre VARCHAR(100), Año INT, Cantidad INT ) CREATE TABLE #Año( Id INT PRIMARY KEY IDENTITY(0,1), Año INT ) INSERT INTO #Año SELECT DISTINCT YEAR(OrderDate) FROM Orders DECLARE @Contador INT SET @Contador = 0 WHILE(@Contador < (SELECT COUNT(*) FROM #Año)) BEGIN INSERT INTO #HistorialCantidad SELECT DISTINCT TOP 5 c.CompanyName AS [Nombre Compañía], YEAR(o.OrderDate) AS Año, COUNT(*) AS Cantidad FROM [ORDER Details] od INNER JOIN Orders o ON o.OrderID = od.OrderID INNER JOIN Customers c ON c.CustomerID = o.CustomerID WHERE YEAR(o.OrderDate) = (SELECT Año FROM #Año WHERE Id = @Contador) GROUP BY c.CompanyName, YEAR(o.OrderDate) ORDER BY Cantidad DESC SET @Contador = @Contador+1 END SELECT * FROM #HistorialCantidad ORDER BY Año, Cantidad DROP TABLE #HistorialCantidad DROP TABLE #Año
Espero puedan ayudarme.
|
|
|
6
|
Programación / Bases de Datos / Procedimiento almacenado que recibe como parámetros fecha de entrada y salida
|
en: 24 Marzo 2019, 23:33 pm
|
Tengo la siguiente consulta usando la misma base de datos de mi post anterior: https://foro.elhacker.net/bases_de_datos/ayuda_con_una_consulta_usando_procedimientos_almacenados-t493882.0.htmlRealizar un procedimiento almacenado que reciba como parámetro Fecha de Entrada, Fecha de Salida. Consultar la disponibilidad de todas las habitaciones en el rango de fechas solicitado. Presentar: IdHabitación - Tipo de Habitación, Estado. Ejemplo: Entrada Fecha de Entrada: 2019-03-14 Fecha de Salida: 2019-03-20 Ejecución IdHabitación Tipo de Habitación Estado 1 Deluxe Disponible 2 Deluxe Disponible 3 Turística Reservado 4 Presidencial Disponible .. ..... ..... .. ..... ..... Nota: Con que exista un día ocupado en la habitación en el rango solicitado, el estado será: Reservado. Es bastante parecido a la consulta de mi post anterior, así que, decidí modificarla y en teoría funciona, pero por ejemplo, tengo 5 datos almacenados y este muestra 30 datos en la ejecución. Adjunto mi código: CREATE PROCEDURE SP_Disponibilidad2 @fecha_entrada DATE, @fecha_salida DATE AS BEGIN DECLARE @ocupado INTEGER DECLARE @tmp_table TABLE ( HabitacionID INT, TipoHab VARCHAR(80), Estado VARCHAR(10) ) WHILE ( @fecha_entrada <= @fecha_salida ) BEGIN SET @ocupado = ( SELECT COUNT(*) FROM habitacion_reserva hr --INNER JOIN habitacion h ON hr.id_habitacion = h.no_habitacion --INNER JOIN tipo_habitacion th ON th.cod_tipo = h.cod_tipo WHERE @fecha_entrada BETWEEN fecha_entrada AND fecha_salida ) IF ( @ocupado > 0 ) INSERT INTO @tmp_table SELECT h.no_habitacion, th.nom_tipo, 'Reservado' FROM habitacion_reserva hr INNER JOIN habitacion h ON hr.id_habitacion = h.no_habitacion INNER JOIN tipo_habitacion th ON th.cod_tipo = h.cod_tipo --WHERE @fecha_entrada BETWEEN fecha_entrada AND fecha_salida ELSE INSERT INTO @tmp_table SELECT hr.id_habitacion, th.nom_tipo, 'Disponible' FROM habitacion_reserva hr INNER JOIN habitacion h ON hr.id_habitacion = h.no_habitacion INNER JOIN tipo_habitacion th ON th.cod_tipo = h.cod_tipo --WHERE @fecha_entrada BETWEEN fecha_entrada AND fecha_salida SET @fecha_entrada = DATEADD( DAY, 1, @fecha_entrada ) END SELECT * FROM @tmp_table END /********************************/ EXECUTE SP_Disponibilidad2 '2019-07-20', '2019-07-25'
+--------------+------------+ | IdHabitacion| Estado | +--------------+------------+ | 1 | Reservado | | 2 | Reservado | | 3 | Reservado | | 4 | Disponible | | 5 | Disponible | | 1 | Disponible | | ...30 | Disponible | +------------+--------------+
|
|
|
7
|
Programación / Bases de Datos / Ayuda con una consulta usando procedimientos almacenados
|
en: 23 Marzo 2019, 03:54 am
|
Bien, tengo la siguiente base de datos: CREATE DATABASE Hotel GO USE Hotel; GO CREATE TABLE tipo_habitacion( cod_tipo INTEGER PRIMARY KEY, nom_tipo VARCHAR(25) NOT NULL, precio money NOT NULL ); CREATE TABLE habitacion( no_habitacion INTEGER PRIMARY KEY, cod_tipo INTEGER FOREIGN KEY REFERENCES tipo_habitacion(cod_tipo), descr VARCHAR(60), cap INTEGER NOT NULL, stat VARCHAR(15) ); CREATE TABLE cliente( id_cliente INTEGER PRIMARY KEY IDENTITY(0,1), p_nom VARCHAR(15), s_nom VARCHAR(15), p_apell VARCHAR(15), s_apell VARCHAR(15), direccion VARCHAR(70), tel VARCHAR(10), correo VARCHAR(25) ); CREATE TABLE empleado( id_empleado INTEGER PRIMARY KEY IDENTITY(0,1), p_nom VARCHAR(15), s_nom VARCHAR(15), p_apell VARCHAR(15), s_apell VARCHAR(15), direccion VARCHAR(70), tel VARCHAR(10), correo VARCHAR(25) ); CREATE TABLE reserva( id_reserva INTEGER PRIMARY KEY IDENTITY(0,1), id_cliente INTEGER FOREIGN KEY REFERENCES cliente(id_cliente), id_empleado INTEGER FOREIGN KEY REFERENCES empleado(id_empleado), fecha_reserva DATE NOT NULL, forma_pago VARCHAR(15), divisa VARCHAR(3), stat VARCHAR(15) ); CREATE TABLE habitacion_reserva( id_hab_reserva INTEGER PRIMARY KEY IDENTITY(0,1), id_habitacion INTEGER FOREIGN KEY REFERENCES habitacion(no_habitacion), id_reserva INTEGER FOREIGN KEY REFERENCES reserva(id_reserva), fecha_entrada DATE NOT NULL, fecha_salida DATE NOT NULL, precio money ); CREATE TABLE huesped( id_huesped INTEGER PRIMARY KEY IDENTITY(0,1), p_nom VARCHAR(15), s_nom VARCHAR(15), p_apell VARCHAR(15), s_apell VARCHAR(15), direccion VARCHAR(70), tel VARCHAR(10), nacionalidad VARCHAR(25), correo VARCHAR(25) ); CREATE TABLE huesped_hab_reserva( id_huesped INT FOREIGN KEY REFERENCES huesped(id_huesped) NOT NULL, id_hab_reserva INT FOREIGN KEY REFERENCES habitacion_reserva (id_hab_reserva) NOT NULL ); ALTER TABLE huesped_hab_reserva ADD PRIMARY KEY(id_huesped, id_hab_reserva); CREATE TABLE servicio( id_servicio INTEGER PRIMARY KEY IDENTITY(0,1), descr VARCHAR(60), precio money ); CREATE TABLE cargos_servicios( id_servicio INT FOREIGN KEY REFERENCES servicio (id_servicio) NOT NULL, id_hab_reserva INT FOREIGN KEY REFERENCES habitacion_reserva (id_hab_reserva) NOT NULL, precio money ); ALTER TABLE cargos_servicios ADD PRIMARY KEY(id_servicio, id_hab_reserva);
El problema es el siguiente: Realizar un procedimiento almacenado que reciba como parámetro: ID Habitación, Fecha de Entrada, Fecha de Salida. Consultar la disponibilidad de la habitación en cuanto a las fechas solicitadas mediante un estado. Ejemplo: Entrada IdHabitación: 2 Fecha de Entrada: 2019-03-14 Fecha de Salida: 2019-03-20 Ejecución Fecha Estado 2019-03-14 Disponible 2019-03-15 Disponible 2019-03-16 Disponible 2019-03-17 Disponible 2019-03-18 Disponible 2019-03-19 Disponible 2019-03-20 Salida En caso que exista una reserva en los días solicitados el estado será: "Reservado". El estado del último día debe ser: "Salida" y no ocupa implica una reserva. Llevo atascado en eso desde hace varios días, y lo último que pude hacer fue esto: CREATE PROCEDURE Disponibilidad @FechaEntrada DATE, @FechaSalida DATE, @IdHabitación INT AS SELECT hr.fecha_entrada, r.stat AS Estado FROM habitacion_reserva hr INNER JOIN reserva r ON r.id_reserva = hr.id_reserva INNER JOIN habitacion h ON h.no_habitacion = hr.id_habitacion WHERE r.fecha_reserva NOT BETWEEN @FechaEntrada AND @FechaSalida AND hr.id_habitacion = @IdHabitación EXEC Disponibilidad '2019-04-01', '2019-04-10', 2
Y obviamente está incorrecto, así que, espero que sean de gran ayuda ya que la resolución de ese problema es de 'vida o muerte'
|
|
|
8
|
Programación / Programación General / Problema con ciclo if [Java]
|
en: 6 Febrero 2018, 22:56 pm
|
Al encontrar el nombre que estoy buscando, además de enviarme el mensaje de que ha sido encontrado, también muestra en pantalla el mensaje de que no ha sido encontrado. Esto sucede cuando el programa busca posición por posición, o sea, si el nombre está en la posición 2, primero muestra el mensaje de que no ha sido encontrado, luego que sí y en el resto de posiciones que no. Sólo quiero que el programa muestre los mensajes una vez. package ejemplostring; import java.util.Scanner; import javax.swing.JOptionPane; public class EjemploString { public static void main (String[] args ) { // TODO code application logic here Scanner in = new Scanner (System. in); for(int i=0;i<ID.length;i++){ System. out. print("Ingrese un nombre #"+i +": "); ID[i] = in.next(); } for(int i=0;i<ID.length;i++){ System. out. println("Nombres: "+ID [i ]); } x = JOptionPane. showInputDialog("Ingrese el nombre que busca"); for(int i=0;i<ID.length;i++){ if(x.equals(ID[i])){ }else{ } } } }
|
|
|
9
|
Programación / Programación C/C++ / Programa crashea luego de ingresar valores por teclado [C]
|
en: 14 Enero 2018, 05:01 am
|
Tengo un problema con mi programa. Hace un mes más o menos, había programado el siguiente código, lo publiqué aquí porque tenía un pequeño problemita y me ayudaron a resolverlo y funcionaba a la perfección. He cambiado de computadora y todo, pero ahora cuando ejecuto mi programa, crashea luego de ingresar un valor a las "mandarinas". #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n, x, i, a=0, b=0, parcela[20][2]; do{ printf("Ingrese la cantidad de parcelas: "); }while(n<=0 || n>=21); for(i=0;i<=n;i++){ do{ printf("\nIngrese la cantidad de naranjas: "); scanf("%d",&parcela [0][0]); }while(parcela[0][0]<=0); do{ printf("Ingrese la cantidad de mandarinas: "); scanf("%d",&parcela [0][1]); }while(parcela[0][1]<=0); a+=parcela[0][0]; b+=parcela[0][1]; parcela[i][x]=parcela[0][0]+parcela[0][1]; } printf("Total produccion naranjas: %d ",a ); printf("\nTotal produccion mandarinas: %d ",b ); for(i=1;i<=n;i++){ printf("\nProduccion total de Parcela #%d: %d ",i , parcela [i ][x ]); } return 0; }
|
|
|
10
|
Programación / Programación C/C++ / Problema al comparar cadenas de caracteres [C]
|
en: 27 Noviembre 2017, 02:58 am
|
Tengo este problema al comparar cadenas de caracteres. A la hora de buscar un código previamente ingresado en el arreglo, este imprime el mensaje "No existe" cuando únicamente ingreso uno de los códigos. Ejemplo: Código ingresado en el segundo arreglo: cp020 Búsqueda: No Existe 'Nombre del producto' No existe #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> void menu(){ printf("\t*****CONTROL DE INVENTARIO*****\n"); printf("1.-Listado del inventario actual\n2.-Busqueda de productos\n3.-Ingresos totales\n4.-SALIR\n"); printf("--------------------------------\n"); } void salida(){ printf("Saliendo del programa... Hasta pronto!\n"); } struct Inventario{ char codigo[10]; char nombre[25]; int cantidad; float pventa; }; int Registrar(Inventario x[], int i){ for(i=0;i<=2;i++){ printf("\tRegistrar productos\n"); printf("Ingrese el codigo del producto: "); printf("\nIngrese el nombre del producto: "); do{ printf("\nIngrese la cantidad: "); scanf("%d",&x [i ]. cantidad); }while(x[i].cantidad<=0); do{ printf("\nIngrese el precio de venta: "); scanf("%f",&x [i ]. pventa); fflush(stdin ); //Limpieza del buffer }while(x[i].pventa<=0); } } void Lista(int i, Inventario x[]){ for(int j=0;j<=2;j++){ printf(" %s %s %d %0.2f \n",x [j ]. codigo, x [j ]. nombre, x [j ]. cantidad, x [j ]. pventa); } } char Busqueda(Inventario x[], int i){ char cod[10]; printf("Ingrese el codigo que desea buscar: "); for(int j=0;j<=2;j++){ if(strcmp(x [j ]. codigo, cod )==0){ printf("\nProducto: %s \n",x [j ]. nombre); break; }else{ break; } } } float Venta(Inventario x[], int i){ float total; for(int j=0;j<=2;j++){ total+=x[j].cantidad*x[j].pventa; //Primero, multiplica la cantidad por el precio y al final, se suma para el total del inventario vendedido. } printf("Ingreso total: %0.2f $ \n",total ); } int main(){ struct Inventario prod[20]; int i=0, op; bool salir = true; Registrar(prod,i); //Llamamos a la funcion "Registrar" do{ menu(); //Llamamos a la funcion "Menu" do{ printf("\nSeleccione una opcion: "); }while(op<=0 || op>=5); switch(op){ case 1:{ printf("\tINVENTARIO ACTUAL\n"); printf(" Codigo Producto Cantidad Precio de Venta\n"); Lista(i,prod); break; } case 2:{ Busqueda(prod, i); break; } case 3:{ printf("\tVENTA TOTAL DEL INVENTARIO\n"); Venta(prod, i); break; } case 4:{ salida(); salir = false; break; } } }while(salir==true); return 0; }
|
|
|
|
|
|
|