|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - fjmc22
Páginas: [1]
1
« en: Jueves 25 de Noviembre de 2010, 21:29 »
Aqui lo tienes, espero que te sirva: public class Mochila_0_1 { public static int mochila_0_1 (int[] ps, int[] bs, int c) { int[] solParcial = new int[ps.length]; int[] solOptima = new int[ps.length]; int bOpt = buscar01 (ps.length-1, 0, c, 0, solParcial, solOptima, -1, ps, bs, c); imprimir (solOptima); return bOpt; } private static int buscar01 (int n_1, int i, int p, int b, int[] solParc, int[] solOpt, int bOpt, int[] ps, int[] bs, int c) { for (int k=0; k<=1; k++) { if (k*ps[i]<=p) { solParc[i] = k; int np = p - k*ps[i]; int nb = b + k*bs[i]; if (i==n_1) { if (nb>bOpt) { bOpt = nb; for (int j=0; j<ps.length; j++) solOpt[j] = solParc[j]; } } else bOpt = buscar01 (n_1, i+1, np, nb, solParc, solOpt, bOpt, ps, bs, c); //int np = p + k*ps[i]; innecesarias porque en la primera iteración k==0 //int nb = b - k*bs[i]; } } return bOpt; } private static void imprimir (int[] v) { for (int i=0; i<v.length; i++) } }
2
« en: Martes 9 de Noviembre de 2010, 13:21 »
getDate() y toString()
Y un consejo: no conviertas la fecha a string hasta que no necesites mostrarla al usuario. Manejar objetos Date para manipular fechas es mucho más cómodo que objetos string. Es decir, tu programa no debería convertir la fecha a cadena de caracteres hasta el momento de mostrarla. Internamente siempre usa objetos Date. Muchas gracias ya lo solucione.
3
« en: Martes 9 de Noviembre de 2010, 11:31 »
Bueno lo que quiero hacer es que cuando haga un actionPerformed en el Jcalendarcombo y elija una fecha esa fecha extraerla a una variable string. Pero lo que no se es como extraer la fecha, para meterla en el string.
Un saludo y gracias.
4
« en: Lunes 12 de Julio de 2010, 12:56 »
hazlo con un array de registros (con los campos que necesites) con 65 posiciones. Luego imprime por pantalla la posicion del array que necesites. Para llenar un array lo puedes hacer perfectamente con un fichero de texto.
Un saludo.
5
« en: Jueves 10 de Junio de 2010, 14:00 »
Hola me gustaria saber como guardar en archivo binario lo que es una pila o una lista. Os pongo un ejemplo de una pila que estube haciendo. Un saludo, y gracias. PROGRAM p; TYPE TElemento = char; TPila = ^TNodo; TNodo = RECORD e: TElemento; sig: TPila; END; TFICHERO = FILE OF TPila; VAR pil:TPila; ele:TElemento; PROCEDURE CargarDatos(VAR baraja:TPila); VAR ficher:TFICHERO; BEGIN Assign(ficher,'C:pila.dat'); RESET(ficher); read(ficher,baraja); CLOSE(ficher); END; {Esto lo que hace es guardar una partida en ficheros binario, lo hace guardando los 10 registros que contienen datos de la partida} PROCEDURE GuardarDatos(VAR baraja:TPila); VAR ficher:TFICHERO; BEGIN Assign(ficher,'C:pila.dat'); REWRITE(ficher); write(ficher,baraja); CLOSE(ficher); END; PROCEDURE CrearPilaVacia(VAR pila: TPila); BEGIN pila := NIL; END; FUNCTION EsPilaVacia(pila: TPila): boolean; BEGIN EsPilaVacia := (pila = NIL); END; PROCEDURE Apilar(VAR pila: TPila; e: TElemento); VAR aux: TPila; BEGIN new(aux); aux^.e:=e; aux^.sig:= pila; pila:=aux; END; PROCEDURE Desapilar(VAR pila: TPila); VAR aux: TPila; BEGIN IF NOT EsPilaVacia(pila) THEN BEGIN aux := pila; pila := pila^.sig; dispose(aux); END; END; PROCEDURE Cima(pila: TPila; VAR e: TElemento); {Implementado como procedimiento por generalidad. Una función podría no ser capaz de devolver TElemento. Se devuelve la cima sin eliminar el elemento de la pila.} BEGIN {Para un tipo simple la asignación simple es válida} e := pila^.e; writeln(e); END; BEGIN CrearPilaVacia(pil); CargarDatos(pil); cima(pil,ele); readln; END.
6
« en: Jueves 20 de Mayo de 2010, 21:11 »
No se si funcionara pero un ejemplo podia ser esto #include <cstdlib> #include <iostream> using namespace std; void escribir() { cout<<" hola ¿que tal?"<<endl; cout<<"¿Como te llamas?:"<<endl; } int main(int argc, char *argv[]) { string A; escribir(); cin >> A; cout<< "hola "<< A << endl; return EXIT_SUCCESS; }
otro ejemplo que no se si funcionara es #include <cstdlib> #include <iostream> using namespace std; void escribir() { string A; cout<<" hola ¿que tal?"<<endl; cout<<"¿Como te llamas?:"<<endl; cin >> A; cout<< "hola "<< A << endl; } int main(int argc, char *argv[]) { escribir(); return EXIT_SUCCESS; }
7
« en: Miércoles 28 de Abril de 2010, 11:17 »
ha alguno se le a ocurrido alguna idea, yo llevo dias intentandolo y no consigo, hacerlo, no se si sera alguna formula matematica o algo de eso.
Un saludo.
8
« en: Lunes 19 de Abril de 2010, 13:47 »
Hola estoy haciendo un programa de recursividad que dado un entero tiene que descomponerlo en todos los sumandos por ejemplo numero = 4 seria: 1111 112 121 13 211 22 31 4 El problema que tengo que lo que llevo hecho me da: 1111 112 13 22 4 Si alguien me podría explicar como hacerlo, muchas gracias y un saludo a todos. PD: no puedo utilizar arrays, solo recursividad. public class prueba { public static void Descomponer(int numero) { DescomponEnSumando(numero, 1, 0, " ", numero); } public static void DescomponEnSumando (int n, int pos, int ninc, String s, int numero ) { if (ninc == numero) for (int i = pos; i <= n+n; i++) DescomponEnSumando (n - i, i, ninc + i, s +Integer. toString(i ), numero ); } public static void main (String []args ) { Descomponer(4); } }
9
« en: Jueves 1 de Abril de 2010, 17:10 »
El ejemplo, lo he probado en Bluej en windows, y funciona perfectamente. Vuelve a instalar el jdk.
10
« en: Domingo 28 de Marzo de 2010, 14:49 »
Este post es muy antiguo, buscalo en google o utiliza linkedlist
11
« en: Viernes 26 de Marzo de 2010, 20:09 »
muchas gracias.
12
« en: Jueves 25 de Marzo de 2010, 16:04 »
Hola estoy haciendo una tabla hash abierta, y me gustaria saber como se declara un array de arraylist yo lo he hecho de la siguiente forma: es un ejemplo para intentar entenderlo, no me funciona al añadir me da un error de compilacion. Lo que queria saber si esta declaracion List [] a = new ArrayList[20]; Lo que quiero saber si esto es un array de listas para poder hacer la tabla hash abierta. import java.util.*; public class arr { public static void main (String args []){ for (int i=0;i<20;i++) for (int i=0;i<20;i++) } }
13
« en: Lunes 1 de Marzo de 2010, 13:55 »
Puedes usar ficheros. Asi cuando quieras preguntas nuevas introduces un nuevo fichero con preguntas y respuestas nuevas.
14
« en: Martes 9 de Febrero de 2010, 13:08 »
haber si te sirve este ejemplo que tenia hecho de un ejercicio de backtraking public class Laberinto { public static boolean hayCamino (char[][] laberinto) { int[] incrX = new int[] {1, 0, -1, 0}; int[] incrY = new int[] {0, 1, 0, -1}; laberinto[0][0] = 'C'; boolean exito = buscar (laberinto.length-1, 0, 0, laberinto, incrX, incrY); imprimir (laberinto); return exito; } private static boolean buscar (int n_1, int x, int y, char[][] laberinto, int[] incrX, int[] incrY) { boolean exito = false; for (int k=0; k<4 && !exito; k++) { int coordX = x + incrX[k]; int coordY = y + incrY[k]; if (coordX>=0 && coordX<=n_1 && coordY>=0 && coordY<=n_1) if (laberinto[coordY][coordX] == ' ') { laberinto[coordY][coordX] = 'C'; if (coordX==n_1 && coordY==n_1) exito = true; else { exito = buscar (n_1, coordX, coordY, laberinto, incrX, incrY); if (!exito) laberinto[coordY][coordX] = ' '; } } } return exito; } private static void imprimir (char[][] laberinto) { for (int i=0; i<laberinto.length; i++) { for (int j=0; j<laberinto.length; j++) System. out. print (laberinto [i ][j ]+" "); } } }
15
« en: Miércoles 27 de Enero de 2010, 11:37 »
Un ejemplo que sale buscando en google: #include<conio.h> void main() { int seleccion,repetir=1; //Mostramos el menu mientras repetir sea igula a true o 1 ;-) while (repetir==1) { clrscr();//Borrando pantalla textcolor(WHITE);//Cambiando el color del texto cprintf("Archivo de personal"); cprintf("1. Agregar"); cprintf("2. Modificar"); cprintf("3. Eliminar"); cprintf("4. Mostrar"); cprintf("5. Salir a Guindous"); textcolor(GREEN); cprintf("¨Que desea hacer?"); seleccion=getche();//Capturando la seleccion textcolor(YELLOW); //La proxima impresion aparecera en esta posicion switch(seleccion) { case '1': cprintf("Entraste en Agregar");getch();break; case '2': cprintf("Entraste en Modificar");getch();break; case '3': cprintf("Entraste en Eliminar");getch();break; case '4': cprintf("Entraste en Mostrar");getch();break; case '5': repetir=0;break;//se indica que debe salir //Si la opcion es incorrecta, entra aqui default: { cprintf("Opcion Invalida"); getch(); } } } }
16
« en: Domingo 24 de Enero de 2010, 15:51 »
Yo para hacer una vez un programa utilice esto, espero que te sirva de algo: Un saludo: PD: yo ponia "C:archivo.bin" y no tenia ningun problema Si quieres te puedo enviar un libro en pdf que tengo, que vienen mucho ejercicios resueltos. FUNCTION Existe (VAR fichero:TFichero; nombre:string):Boolean; BEGIN Assign(fichero,nombre); {$I-} RESET(fichero); {$I+} Existe:=(IOResult=0); END; PROCEDURE CargarDatos (VAR m:Tm); VAR ficher:TFichero; nombre:STRING; BEGIN writeln('nombre del archivo, incluyendo direccion y formato'); readln(nombre); IF Existe(ficher,nombre) THEN BEGIN Assign(ficher,nombre); RESET(ficher); read(ficher,m); CLOSE(ficher); END ELSE writeln('No existe'); END;
17
« en: Lunes 18 de Enero de 2010, 18:48 »
Esto es un ejemplo que te puede sevir para guiarte.
Un saludo y animo.
18
« en: Jueves 15 de Enero de 2009, 18:29 »
Bueno mi problema es que al compilar mi programa me pone fatal: Unexpected end of file, y no se porque. Os voy a poner lo que me pide la practica y lo que tengo hecho, y por favor me la podeis mirar haber en que fallo, o algo que tenga mal, muchas gracias. Lo que pide: Un número entero está formado por secuencias de dígitos en un determinado orden. Si analizamos esas secuencias de dígitos podremos observar como, cada número, está formado por una cantidad de otros dígitos más pequeños que denominaremos patrones. Por ejemplo: Dado el patrón 13 Podemos deducir que entre 1 y 100 solo hay un número que lo contiene, esto es, el 13. Sin embargo, entre 100 y 1000 hay 19 que lo contienen. Así, por ejemplo, el 131 y el 213. Entre 1000 y 10000 hay 279 números que contienen el patrón 13. Entre 10.000 y 100.000 encontramos 3671 números que repiten el patrón. Hay que tener en cuenta que solo contabilizamos el patrón si se encuentra unido, es decir, 103 no contiene el patrón 13 sin embargo, 133 si contiene dicho patrón. Práctica: Dada esta información, se pide que desarrolléis un programa, que utilizará los subprogramas que creáis necesarios, que permita: - Determinar cuántos enteros en un rango dado contienen un determinado patrón - Mostrar los enteros comprendidos en ese rango dado que contienen dicho patrón - Mostrar, en caso de que los haya, los dos números mayores, dentro del rango dado, que contienen dicho patrón. En caso de que solo exista un número que contenga el patrón, el primero tendrá un valor negativo (-1) y el segundo contendrá dicho número. En caso de que no exista ningún número, ambos mostrarán un número negativo (-1). Para ello el programa solicitará que el usuario elija la opción que desea ejecutar y, a continuación, pedirá: - Un entero positivo n que indicará el patrón y que puede tener desde 1 a 5 cifras y - Dos enteros a y b (cuyos valores oscilarán entre 1 y MAXINT y siendo a menor que b). A modo de ayuda, se presentan varios ejemplos de ejecución del programa (en negrita los mensajes mostrados por el programa y en cursiva los datos introducidos por el usuario). Codigo: PROGRAM Pobligatoria; VAR inicio,fin,patron,opcion:integer; FUNCTION comprobar(x:integer):boolean; VAR aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9:integer; BEGIN CASE x OF 1..9:BEGIN IF x=patron THEN comprobar:=true; END; 10..99:BEGIN IF patron<10 THEN aux1:= x div 10; aux2:= aux1 mod 10; IF (x=aux1) OR (x=aux2) THEN comprobar:=true; END;{IF} END;{IF} IF (patron>9) AND (x=patron) THEN comprobar:=true; END;{IF} { END;{CASE 10..99} 100..999:BEGIN IF patron<10 THEN aux1:= x div 10; aux2:= aux1 mod 10;{el valor ultimo} aux3:= aux1 div 10;{el primer valor} aux4:= aux3 mod 10;{el valor central} IF (x=aux2) OR (x=aux3) OR (x=aux4) THEN comprobar:=true; END;{IF} END;_{IF patron<10} IF (patron>=10) AND (patron<=99) THEN aux1:= x div 10; {parte izquierda} aux2:= x div 100; aux3:= aux2 mod 100; {parte derecha} IF (x=aux1) OR (x=aux3) THEN comprobar:=true; END; {IF} END;{IF patron entre 10 hasta 99} IF (patron>99) AND (patron<1000) AND (patron=x) THEN comprobar:=true; END; 1000..9999:BEGIN IF patron<10 THEN aux1:= x div 1000; {el primer valor} aux2:= x div 10; aux3:= aux2 mod 10; {el cuarto valor} aux4:= aux2 div 10; aux5:= aux4 mod 10; {el tercer valor} aux6:= aux4 div 10; aux7:= aux4 mod 10; {el segundo valor} IF (x=aux1) OR (x=aux7) OR (x=aux5) OR (x=aux3) THEN comprobar:=true; END; END; {if del patron menor de 10} IF (patron>=10) AND (patron<=99) THEN aux1:= x div 100;{2 primeros numeros} aux2:= aux1 mod 100; {2 ultimos numeros} aux3:= x div 10; aux4:= aux3 div 100; aux5:= aux4 mod 100; {2 numeros del centro} IF (x=aux1) OR (x=aux2) OR (x=aux5) THEN comprobar:=true; END; END;{if de patron 10..99} IF (patron>=100) AND (patron<1000) THEN aux1:= x div 10; {los 3 primeros numeros} aux2:= x div 1000; aux3:= aux2 mod 1000; {los 3 ultimos numeros} IF (x=aux1) OR (x=aux3) THEN comprobar:=true; END; END; {if de patron 100..999} IF (patron>=1000) AND (patron<=9999) THEN IF patron=x THEN comprobar:=true; END; END; 10000..32767:BEGIN IF (patron>=0) AND (patron<=9) THEN aux1:= x div 10; aux2:= aux1 mod 10; {quinto numero} aux3:= aux1 div 10; aux4:= aux3 mod 10; {cuarto numero} aux5:= aux3 div 10; aux6:= aux5 mod 10; {tercer numero} aux7:= aux5 div 10; aux8:= aux7 mod 10; {segundo numero} aux9:= aux7 div 10; {primer numero} IF (x=aux2) OR (x=aux4) OR (x=aux6) OR (x=aux8) OR (x=aux9) THEN comprobar:=true; END; END; IF (patron>=10) AND (patron<=99) THEN aux1:= x div 100; aux2:= aux1 mod 100; {2 ultimos numeros} aux3:= x div 1000; {2 primeros numeros} aux4:= x div 10; aux5:= aux4 div 100; aux6:= aux5 mod 100; {2 penultimos} aux7:= aux1 div 100; aux8:= aux7 mod 100; {el 2 y 3} IF (x=aux2) OR (x=aux3) OR (x=aux6) OR (x=aux8) THEN comprobar:=true; END; END; IF (patron>=100) AND (patron<=999) THEN aux1:= x div 100; {numeros 123} aux2:= x div 1000; aux3:= aux2 mod 1000; {numeros 345} aux4:= x div 10; aux5:= aux4 div 1000; aux6:= aux5 mod 1000; {numeros 234} IF (x=aux1) OR (x=aux3) OR (x=aux6) THEN comprobar:=true; END; END; {if de entre 100 y 999} IF (patron>=1000) AND (patron<=9999) THEN aux1:= x div 10; {numeros 1234} aux2:= x div 10000; aux3:= aux2 mod 10000; {numeros 2345} IF (x=aux1) OR (x=aux3) THEN comprobar:=true; END; END; {if de patron 1000..9999} IF (patron>=10000) AND (patron<=32767) THEN IF x=patron THEN comprobar:=true; END; END; END; PROCEDURE MostrarNumEnteros(ini,f,p:integer); VAR BEGIN cont:=0; FOR i:=ini TO f DO BEGIN comprobar(i); IF comprobar=true THEN cont:=cont+1; END;{IF} END;{FOR} writeln('Existen ',cont,' numeros entre ',ini,' y ',f,' que tienen patron ',p); END; PROCEDURE EscribirEnteros(inicio,fin,patron:integer); VAR BEGIN FOR i:=ini TO f DO BEGIN comprobar(i); IF comprobar=true THEN writeln('El numero: ',i,' contiene el patron: ',p); END;{IF} END;{FOR} END; PROCEDURE Dosultimos(ini,f,p:integer); VAR BEGIN cont:=0; REPEAT FOR i:=f DONWTO ini TO comprobar(i); IF comprobar:=true THEN cont:=cont+1; IF cont=1 THEN aux1:=i; IF cont=2 THEN aux2:=i; END; END; END; UNTIL (cont=2) OR (i<ini); IF cont=0 THEN writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son -1 y -1'); END; IF cont=1 THEN writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son -1 y ',aux1); END; IF cont=2 THEN writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son ',aux1,' y ',aux2); END; END; PROCEDURE salir; BEGIN writeln('Ha decidido salir del programa.'); END; BEGIN REPEAT writeln('a.- Mostrar cu ntos enteros en un rango dado contiene un patr¢n: '); writeln('b.- Mostrar los enteros en un rango dado que contiene un patr¢n: '); writeln('c.- Mostrar los dos mayores n£meros que contiene un patr¢n en un rango dado: '); writeln('d.- Finalizar'); readlln(opcion); CASE opcion OF 'a':BEGIN write('¨Patr¢n?: '); readln(patron) write('Valor inferior del rango: '); readln(inicio); write('Valor superior del rango: '); readln(fin); MostrarNumEnteros(inicio,fin,patron); END; 'b':BEGIN write('¨Patr¢n?: '); readln(patron) write('Valor inferior del rango: '); readln(inicio); write('Valor superior del rango: '); readln(fin); EscribirEnteros(inicio,fin,patron); END; 'c':BEGIN write('¨Patr¢n?: '); readln(patron) write('Valor inferior del rango: '); readln(inicio); write('Valor superior del rango: '); readln(fin); Dosultimos(inicio,fin,patron); 'd':salir; UNTIL (opc='d') OR (opcion='D'); END.
Páginas: [1]
|
|
|