• Martes 16 de Abril de 2024, 06:53

Mostrar Mensajes

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
Java / Re: LA MOCHILA USANDO VUELTA ATRAS
« en: Jueves 25 de Noviembre de 2010, 21:29 »
Aqui lo tienes, espero que te sirva:


Código: Java
  1. public class Mochila_0_1
  2. {
  3.    public static int mochila_0_1 (int[] ps, int[] bs, int c) {
  4.       int[] solParcial = new int[ps.length];
  5.       int[] solOptima = new int[ps.length];
  6.       int bOpt = buscar01 (ps.length-1, 0, c, 0, solParcial, solOptima, -1, ps, bs, c);
  7.       imprimir (solOptima);
  8.       return bOpt;
  9.    }
  10.    private static int buscar01 (int n_1, int i, int p, int b, int[] solParc,
  11.                                 int[] solOpt, int bOpt,
  12.                                 int[] ps, int[] bs, int c) {
  13.       for (int k=0; k<=1; k++) {
  14.          if (k*ps[i]<=p) {
  15.             solParc[i] = k;
  16.             int np = p - k*ps[i];
  17.             int nb = b + k*bs[i];
  18.             if (i==n_1) {
  19.                if (nb>bOpt) {
  20.                   bOpt = nb;
  21.                   for (int j=0; j<ps.length; j++)
  22.                      solOpt[j] = solParc[j];
  23.                }
  24.             }
  25.             else
  26.                bOpt = buscar01 (n_1, i+1, np, nb, solParc, solOpt, bOpt, ps, bs, c);
  27.             //int np = p + k*ps[i]; innecesarias porque en la primera iteración k==0
  28.             //int nb = b - k*bs[i];
  29.          }
  30.       }
  31.       return bOpt;
  32.    }
  33.    private static void imprimir (int[] v) {
  34.       for (int i=0; i<v.length; i++)
  35.          System.out.print (v[i]+" ");
  36.       System.out.println();
  37.    }
  38. }
  39.  

2
Java / Re: Guardar la fecha de un JCalendarCombo
« en: Martes 9 de Noviembre de 2010, 13:21 »
Cita de: "m0skit0"
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
Java / Guardar la fecha de un JCalendarCombo
« 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
C/C++ / Re: Proyecto Auxilio!!!
« 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
Pascal / Guardar una pila, cola o listas
« 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.

Código: Pascal
  1. PROGRAM p;
  2. TYPE
  3. TElemento = char;
  4. TPila = ^TNodo;
  5. TNodo = RECORD
  6. e: TElemento;
  7. sig: TPila;
  8. END;
  9.  
  10. TFICHERO = FILE OF TPila;
  11.  
  12. VAR
  13.  pil:TPila;
  14.  ele:TElemento;
  15.  
  16.  PROCEDURE CargarDatos(VAR baraja:TPila);
  17.       VAR
  18.          ficher:TFICHERO;
  19.       BEGIN
  20.                Assign(ficher,'C:pila.dat');
  21.                RESET(ficher);
  22.                  read(ficher,baraja);
  23.                CLOSE(ficher);
  24.       END;
  25.  
  26.    {Esto lo que hace es guardar una partida en ficheros binario, lo hace guardando los 10 registros que contienen datos de la partida}
  27.  
  28.    PROCEDURE GuardarDatos(VAR baraja:TPila);
  29.       VAR
  30.          ficher:TFICHERO;
  31.       BEGIN
  32.  
  33.          Assign(ficher,'C:pila.dat');
  34.           REWRITE(ficher);
  35.            write(ficher,baraja);
  36.          CLOSE(ficher);
  37.  
  38.       END;
  39.  
  40.  
  41. PROCEDURE CrearPilaVacia(VAR pila: TPila);
  42. BEGIN
  43.         pila := NIL;
  44. END;
  45. FUNCTION EsPilaVacia(pila: TPila): boolean;
  46. BEGIN
  47. EsPilaVacia := (pila = NIL);
  48. END;
  49. PROCEDURE Apilar(VAR pila: TPila; e: TElemento);
  50. VAR
  51. aux: TPila;
  52. BEGIN
  53. new(aux);
  54. aux^.e:=e;
  55. aux^.sig:= pila;
  56. pila:=aux;
  57. END;
  58. PROCEDURE Desapilar(VAR pila: TPila);
  59. VAR
  60. aux: TPila;
  61. BEGIN
  62. IF NOT EsPilaVacia(pila) THEN
  63. BEGIN
  64. aux := pila;
  65. pila := pila^.sig;
  66. dispose(aux);
  67. END;
  68. END;
  69. PROCEDURE Cima(pila: TPila; VAR e: TElemento);
  70. {Implementado como procedimiento por generalidad. Una función
  71. podría no ser capaz de devolver TElemento.
  72. Se devuelve la cima sin eliminar el elemento de la pila.}
  73. BEGIN
  74. {Para un tipo simple la asignación simple es válida}
  75. e := pila^.e;
  76. writeln(e);
  77. END;
  78.  
  79.  
  80. BEGIN
  81. CrearPilaVacia(pil);
  82. CargarDatos(pil);
  83. cima(pil,ele);
  84. readln;
  85. END.
  86.  
  87.  

6
C/C++ / Re: pasar a funciones en c
« en: Jueves 20 de Mayo de 2010, 21:11 »
No se si funcionara pero un ejemplo podia ser esto

Código: C
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void escribir()
  7. {
  8.       cout<<" hola ¿que tal?"<<endl;
  9.       cout<<"¿Como te llamas?:"<<endl;
  10. }
  11.  
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.        string A;
  16.        escribir();
  17.        cin >> A;
  18.        cout<< "hola "<< A << endl;
  19.        system("PAUSE");
  20.        return EXIT_SUCCESS;
  21. }
  22.  



otro ejemplo que no se si funcionara es

Código: C
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void escribir()
  7. {
  8.        string A;
  9.    
  10.        cout<<" hola ¿que tal?"<<endl;
  11.        cout<<"¿Como te llamas?:"<<endl;
  12.        cin >> A;
  13.        cout<< "hola "<< A << endl;
  14. }
  15.  
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.        escribir();
  20.        system("PAUSE");
  21.        return EXIT_SUCCESS;
  22. }
  23.  

7
Java / Re: Descomposicion de un numero entero
« 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
Java / Descomposicion de un numero entero
« 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.

Código: Java
  1. public class prueba
  2. {
  3.   public static void Descomponer(int numero)
  4.    {
  5.      DescomponEnSumando(numero, 1, 0, " ", numero);
  6.     }
  7.    
  8.  
  9.     public static void DescomponEnSumando(int n, int pos, int ninc, String s, int numero)
  10.     {
  11.      if (ninc == numero)
  12.                System.out.println(s);
  13.      for (int i = pos; i <= n+n; i++)
  14.           DescomponEnSumando(n - i, i, ninc + i, s+Integer.toString(i), numero);
  15.         }
  16.        
  17.    public static void main (String []args)
  18.    {
  19.         Descomponer(4);
  20.        
  21.     }
  22. }
  23.  

9
Java / Re: Prblema al ejecutar archivo | Principiante :(
« 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
Java / Re: Listas Doblemente Enlazadas En Java
« en: Domingo 28 de Marzo de 2010, 14:49 »
Este post es muy antiguo, buscalo en google o utiliza linkedlist

11
Java / Re: Tabla hash Abierta, ArrayList
« en: Viernes 26 de Marzo de 2010, 20:09 »
muchas gracias.

12
Java / Tabla hash Abierta, ArrayList
« 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.


Código: Java
  1.  
  2. import java.util.*;
  3. public class arr
  4. {
  5.     public static void main(String args[]){
  6.         List [] a = new ArrayList[20];
  7.        
  8.         for (int i=0;i<20;i++)
  9.                 a.add(new Integer(i));
  10.         for (int i=0;i<20;i++)
  11.             System.out.println(a[i]);
  12.         }      
  13. }
  14.  

13
Pascal / Re: Agregar una expansion
« 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
Java / Re: ¿ Camino mas corto en un Laberinto ?
« en: Martes 9 de Febrero de 2010, 13:08 »
haber si te sirve este ejemplo que tenia hecho de un ejercicio de backtraking

Código: Java
  1. public class Laberinto
  2. {
  3.    public static boolean hayCamino (char[][] laberinto) {
  4.       int[] incrX = new int[] {1, 0, -1,  0};
  5.       int[] incrY = new int[] {0, 1,  0, -1};
  6.       laberinto[0][0] = 'C';
  7.       boolean exito = buscar (laberinto.length-1, 0, 0, laberinto, incrX, incrY);
  8.       imprimir (laberinto);
  9.       return exito;
  10.    }
  11.    private static boolean buscar (int n_1,
  12.                                   int x,
  13.                                   int y,
  14.                                   char[][] laberinto,
  15.                                   int[] incrX,
  16.                                   int[] incrY) {
  17.       boolean exito = false;
  18.       for (int k=0; k<4 && !exito; k++) {
  19.          int coordX = x + incrX[k];
  20.          int coordY = y + incrY[k];
  21.          if (coordX>=0 && coordX<=n_1 &&
  22.              coordY>=0 && coordY<=n_1)
  23.             if (laberinto[coordY][coordX] == ' ') {
  24.                laberinto[coordY][coordX] = 'C';
  25.                if (coordX==n_1 && coordY==n_1)
  26.                   exito = true;
  27.                else {
  28.                   exito = buscar (n_1, coordX, coordY, laberinto, incrX, incrY);
  29.                   if (!exito)
  30.                      laberinto[coordY][coordX] = ' ';
  31.                }
  32.             }
  33.       }
  34.       return exito;
  35.    }
  36.    
  37.     private static void imprimir (char[][] laberinto) {
  38.       for (int i=0; i<laberinto.length; i++) {
  39.          for (int j=0; j<laberinto.length; j++)
  40.             System.out.print (laberinto[i][j]+" ");
  41.          System.out.println();
  42.       }
  43.    }
  44. }
  45.  
  46.  

15
C/C++ / Re: Menu en C++ con metodos numericos. . . .
« en: Miércoles 27 de Enero de 2010, 11:37 »
Un ejemplo que sale buscando en google:

Código: C++
  1. #include<conio.h>
  2. void main()
  3. {
  4.     int seleccion,repetir=1;
  5.     //Mostramos el menu mientras repetir sea igula a true o 1 ;-)
  6.     while (repetir==1)
  7.     {
  8.         clrscr();//Borrando pantalla
  9.         textcolor(WHITE);//Cambiando el color del texto
  10.         cprintf("Archivo de personal");
  11.         cprintf("1. Agregar");
  12.         cprintf("2. Modificar");
  13.         cprintf("3. Eliminar");
  14.         cprintf("4. Mostrar");
  15.         cprintf("5. Salir a Guindous");
  16.         textcolor(GREEN);
  17.         cprintf("¨Que desea hacer?");
  18.         seleccion=getche();//Capturando la seleccion
  19.         textcolor(YELLOW);
  20.         //La proxima impresion aparecera en esta posicion
  21.         switch(seleccion)
  22.         {
  23.             case '1': cprintf("Entraste en Agregar");getch();break;
  24.             case '2': cprintf("Entraste en Modificar");getch();break;
  25.             case '3': cprintf("Entraste en Eliminar");getch();break;
  26.             case '4': cprintf("Entraste en Mostrar");getch();break;
  27.             case '5': repetir=0;break;//se indica que debe salir
  28.             //Si la opcion es incorrecta, entra aqui
  29.             default:
  30.             {
  31.                 cprintf("Opcion Invalida");
  32.                 getch();
  33.             }
  34.         }
  35.     }
  36. }
  37.  

16
Pascal / Re: carga de archivos, solo me valida rutas en C y las demas no?
« 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.

Código: Pascal
  1.   FUNCTION Existe (VAR fichero:TFichero; nombre:string):Boolean;
  2.       BEGIN
  3.          Assign(fichero,nombre);
  4.          {$I-}
  5.          RESET(fichero);
  6.          {$I+}
  7.          Existe:=(IOResult=0);
  8.       END;
  9.  
  10.    PROCEDURE CargarDatos (VAR m:Tm);
  11.       VAR
  12.          ficher:TFichero;
  13.          nombre:STRING;
  14.       BEGIN
  15.          writeln('nombre del archivo, incluyendo direccion y formato');
  16.          readln(nombre);
  17.  
  18.          IF Existe(ficher,nombre) THEN
  19.             BEGIN
  20.                Assign(ficher,nombre);
  21.                RESET(ficher);
  22.                read(ficher,m);
  23.                CLOSE(ficher);
  24.             END
  25.          ELSE
  26.             writeln('No existe');
  27.       END;
  28.  
  29.  

17
Papelera / Re: Como hacer esta aplicación para socket? Es sencilla ayuden
« en: Lunes 18 de Enero de 2010, 18:48 »
Esto es un ejemplo que te puede sevir para guiarte.

Un saludo y animo.

18
Pascal / Practica necesito ....
« 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:
Código: Text
  1.  
  2. PROGRAM Pobligatoria;
  3.  
  4. VAR
  5. inicio,fin,patron,opcion:integer;
  6.  
  7. FUNCTION comprobar(x:integer):boolean;
  8. VAR
  9.  aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9:integer;
  10. BEGIN
  11.   CASE x OF
  12.           1..9:BEGIN
  13.                   IF x=patron THEN
  14.                      comprobar:=true;
  15.                END;
  16.  
  17.         10..99:BEGIN
  18.                   IF patron<10 THEN
  19.                      aux1:= x div 10;
  20.                      aux2:= aux1 mod 10;
  21.                      IF (x=aux1) OR (x=aux2) THEN
  22.                         comprobar:=true;
  23.                      END;{IF}
  24.                    END;{IF}
  25.                   IF (patron>9) AND (x=patron) THEN
  26.                       comprobar:=true;
  27.                   END;{IF}
  28.                 { END;{CASE 10..99}
  29.       100..999:BEGIN
  30.                 IF patron<10 THEN
  31.                   aux1:= x div 10;
  32.                   aux2:= aux1 mod 10;{el valor ultimo}
  33.                   aux3:= aux1 div 10;{el primer valor}
  34.                   aux4:= aux3 mod 10;{el valor central}
  35.                   IF (x=aux2) OR (x=aux3) OR (x=aux4) THEN
  36.                       comprobar:=true;
  37.                   END;{IF}
  38.                 END;_{IF patron<10}
  39.                 IF (patron>=10) AND (patron<=99) THEN
  40.                    aux1:= x div 10; {parte izquierda}
  41.                    aux2:= x div 100;
  42.                    aux3:= aux2 mod 100; {parte derecha}
  43.                    IF (x=aux1) OR (x=aux3) THEN
  44.                    comprobar:=true;
  45.                    END; {IF}
  46.                 END;{IF patron entre 10 hasta 99}
  47.                 IF (patron>99)  AND (patron<1000) AND (patron=x) THEN
  48.                    comprobar:=true;
  49.                 END;
  50.  
  51.     1000..9999:BEGIN
  52.                 IF patron<10 THEN
  53.                     aux1:= x div 1000; {el primer valor}
  54.                     aux2:= x div 10;
  55.                     aux3:= aux2 mod 10; {el cuarto valor}
  56.                     aux4:= aux2 div 10;
  57.                     aux5:= aux4 mod 10; {el tercer valor}
  58.                     aux6:= aux4 div 10;
  59.                     aux7:= aux4 mod 10; {el segundo valor}
  60.                     IF (x=aux1) OR (x=aux7) OR (x=aux5) OR (x=aux3) THEN
  61.                         comprobar:=true;
  62.                     END;
  63.                 END; {if del patron menor de 10}
  64.                 IF (patron>=10) AND (patron<=99) THEN
  65.                     aux1:= x div 100;{2 primeros numeros}
  66.                     aux2:= aux1 mod 100; {2 ultimos numeros}
  67.                     aux3:= x div 10;
  68.                     aux4:= aux3 div 100;
  69.                     aux5:= aux4 mod 100; {2 numeros del centro}
  70.                     IF (x=aux1) OR (x=aux2) OR (x=aux5) THEN
  71.                        comprobar:=true;
  72.                     END;
  73.                 END;{if de patron 10..99}
  74.                 IF (patron>=100) AND (patron<1000) THEN
  75.                    aux1:= x div 10; {los 3 primeros numeros}
  76.                    aux2:= x div 1000;
  77.                    aux3:= aux2 mod 1000; {los 3 ultimos numeros}
  78.                    IF (x=aux1) OR (x=aux3) THEN
  79.                       comprobar:=true;
  80.                    END;
  81.                 END; {if de patron 100..999}
  82.                 IF (patron>=1000) AND (patron<=9999) THEN
  83.                    IF patron=x THEN
  84.                       comprobar:=true;
  85.                    END;
  86.                 END;
  87.  
  88.   10000..32767:BEGIN
  89.                IF (patron>=0) AND (patron<=9) THEN
  90.                   aux1:= x div 10;
  91.                   aux2:= aux1 mod 10; {quinto numero}
  92.                   aux3:= aux1 div 10;
  93.                   aux4:= aux3 mod 10; {cuarto numero}
  94.                   aux5:= aux3 div 10;
  95.                   aux6:= aux5 mod 10; {tercer numero}
  96.                   aux7:= aux5 div 10;
  97.                   aux8:= aux7 mod 10; {segundo numero}
  98.                   aux9:= aux7 div 10; {primer numero}
  99.                   IF (x=aux2) OR (x=aux4) OR (x=aux6) OR (x=aux8) OR (x=aux9) THEN
  100.                       comprobar:=true;
  101.                   END;
  102.                END;
  103.                IF (patron>=10) AND (patron<=99) THEN
  104.                   aux1:= x div 100;
  105.                   aux2:= aux1 mod 100; {2 ultimos numeros}
  106.                   aux3:= x div 1000; {2 primeros numeros}
  107.                   aux4:= x div 10;
  108.                   aux5:= aux4 div 100;
  109.                   aux6:= aux5 mod 100; {2 penultimos}
  110.                   aux7:= aux1 div 100;
  111.                   aux8:= aux7 mod 100; {el 2 y 3}
  112.                   IF (x=aux2) OR (x=aux3) OR (x=aux6) OR (x=aux8) THEN
  113.                      comprobar:=true;
  114.                   END;
  115.                END;
  116.                IF (patron>=100) AND (patron<=999) THEN
  117.                   aux1:= x div 100; {numeros 123}
  118.                   aux2:= x div 1000;
  119.                   aux3:= aux2 mod 1000; {numeros 345}
  120.                   aux4:= x div 10;
  121.                   aux5:= aux4 div 1000;
  122.                   aux6:= aux5 mod 1000; {numeros 234}
  123.                   IF (x=aux1) OR (x=aux3) OR (x=aux6) THEN
  124.                       comprobar:=true;
  125.                   END;
  126.                END; {if de entre 100 y 999}
  127.                IF (patron>=1000) AND (patron<=9999) THEN
  128.                    aux1:= x div 10; {numeros 1234}
  129.                    aux2:= x div 10000;
  130.                    aux3:= aux2 mod 10000; {numeros 2345}
  131.                    IF (x=aux1) OR (x=aux3) THEN
  132.                       comprobar:=true;
  133.                    END;
  134.                END; {if de patron 1000..9999}
  135.                IF (patron>=10000) AND (patron<=32767) THEN
  136.                   IF x=patron THEN
  137.                      comprobar:=true;
  138.                   END;
  139.                END;
  140.  
  141. END;
  142.  
  143. PROCEDURE MostrarNumEnteros(ini,f,p:integer);
  144. VAR
  145.  
  146. BEGIN
  147.      cont:=0;
  148.      FOR i:=ini TO f DO BEGIN
  149.         comprobar(i);
  150.         IF comprobar=true THEN
  151.           cont:=cont+1;
  152.         END;{IF}
  153.      END;{FOR}
  154.      writeln('Existen ',cont,' numeros entre ',ini,' y ',f,' que tienen patron ',p);
  155.  
  156. END;
  157.  
  158. PROCEDURE EscribirEnteros(inicio,fin,patron:integer);
  159. VAR
  160. BEGIN
  161.  
  162.      FOR i:=ini TO f DO BEGIN
  163.         comprobar(i);
  164.         IF comprobar=true THEN
  165.           writeln('El numero: ',i,' contiene el patron: ',p);
  166.         END;{IF}
  167.      END;{FOR}
  168. END;
  169.  
  170. PROCEDURE Dosultimos(ini,f,p:integer);
  171. VAR
  172. BEGIN
  173.    cont:=0;
  174.    REPEAT
  175.       FOR i:=f DONWTO ini TO
  176.         comprobar(i);
  177.         IF comprobar:=true THEN
  178.           cont:=cont+1;
  179.             IF cont=1 THEN
  180.               aux1:=i;
  181.               IF cont=2 THEN
  182.                 aux2:=i;
  183.               END;
  184.            END;
  185.         END;
  186.    UNTIL (cont=2) OR (i<ini);
  187.    IF cont=0 THEN
  188.       writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son -1 y -1');
  189.    END;
  190.    IF cont=1 THEN
  191.       writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son -1 y ',aux1);
  192.    END;
  193.    IF cont=2 THEN
  194.       writeln('Los 2 numeros mayores comprendidos entre: ',ini,' y ',f,' son ',aux1,' y ',aux2);
  195.    END;
  196.  
  197. END;
  198.  
  199. PROCEDURE salir;
  200. BEGIN
  201.   writeln('Ha decidido salir del programa.');
  202. END;
  203.  
  204.  
  205. BEGIN
  206.   REPEAT
  207.     writeln('a.- Mostrar cu ntos enteros en un rango dado contiene un patr¢n: ');
  208.     writeln('b.- Mostrar los enteros en un rango dado que contiene un patr¢n: ');
  209.     writeln('c.- Mostrar los dos mayores n£meros que contiene un patr¢n en un rango dado: ');
  210.     writeln('d.- Finalizar');
  211.     readlln(opcion);
  212.     CASE opcion OF
  213.       'a':BEGIN
  214.            write('¨Patr¢n?: ');
  215.            readln(patron)
  216.            write('Valor inferior del rango: ');
  217.            readln(inicio);
  218.            write('Valor superior del rango: ');
  219.            readln(fin);
  220.           MostrarNumEnteros(inicio,fin,patron);
  221.           END;
  222.  
  223.       'b':BEGIN
  224.            write('¨Patr¢n?: ');
  225.            readln(patron)
  226.            write('Valor inferior del rango: ');
  227.            readln(inicio);
  228.            write('Valor superior del rango: ');
  229.            readln(fin);
  230.            EscribirEnteros(inicio,fin,patron);
  231.           END;
  232.  
  233.       'c':BEGIN
  234.               write('¨Patr¢n?: ');
  235.               readln(patron)
  236.               write('Valor inferior del rango: ');
  237.               readln(inicio);
  238.               write('Valor superior del rango: ');
  239.               readln(fin);
  240.             Dosultimos(inicio,fin,patron);
  241.  
  242.       'd':salir;
  243.       UNTIL (opc='d') OR (opcion='D');
  244. END.
  245.  

Páginas: [1]