Pascal/Turbo Pascal - podeis ayudarme? gracias

   
Vista:

podeis ayudarme? gracias

Publicado por dani (1 intervención) el 26/12/2008 04:45:05
Hola! y gracias de antemano!!

Veamos... se trata de una practica de la uni, y aunque en un principio me parecio bastante fácil no era asi. El problema esta en que dado un patron, tienes cuantas veces se repite en un intervalo, por ejemplo:

dado el patron 13:

podemos deducir que entre 1 y 100 solo hay un numero que lo contiene
sin embargo, entre 100 y 1000 hay 19
entre 1.000 y 10.000 hay 279
entre 10.000 y 100.000 hay 3671

hay que tener en cuenta que solo contabilizamos el patron si se encuentra unido, es decir, 103 no contiene el patro 13, pero por ejemplo en 133 si que contiene dicho patron.

el patron puede tener de 1 a 5 cifras.

yo al principio habia pensado en lo siguiente:

1..100 100.....1.000 1.000....10.000 10.000.....100.000
2 cifras 1 19 279 3671
3 cifras 0 1 19 279
4 cifras 0 0 1 19
5 cifras 0 0 0 1

las de 1 cifra no consegui sacarlas, pero luego cuando estaba a punto de hacerlo en pascal me di cuenta que si me dan (es un ejemplo) de patron 31 y de intervalo 1 - 180 en un principio le corresponderia 20 ( uno del 1º intervalo y 19 del 2º intervalo) pero si lo hacemos vemos que no es verdad, entonces me di cuenta que realmente lo que habia hecho no habia servido de nada, pero en fin... la cuestion es que yo creo, incluso me atrevo a decir segura que detras hay una regla matematica o algo parecido, pero no logra encontrarla, si alguien me puede decir como hacer esta parte de la pracitca le estaria muy agradecido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:podeis ayudarme? gracias

Publicado por Alexis (44 intervenciones) el 30/12/2008 23:43:30
No se si todavía estés a tiempo de hacer tu practica, aunque considerando las fechas creo que si.

Lo primero que se me ocurre (aunque sinceramente no se si sea lo mejor) es lo siguiente:

Diseña procedimientos (procedure) que te separen las cifras de los números en números individuales y lo guardas en un vector, es decir, si tienes el número 6139 lo guardas en

vector[1]:=6;
vector[2]:=1;
vector[3]:=3;
vector[4]:=9;

luego que tienes esto, separas de igual manera tu número patrón

patron[1]:=1;
patron[2]:=3;

y por último comparas

si vector[n]=patron[1] entonces
si vector[n+1]=patron[2]
contador:=contador+1;

Ten en cuenta que:
* Los números que vas a guardar en la variable "vector" deberían ser generados con un ciclo for por lo que la manera de separarlos varían según la cantidad de cifras.

* Tu patrón, si no es un dato dado por el usuario, es una constante por lo que puedes declararla de manera global y así comparar en cualquier parte del programa.

* Como consejo yo realizaría una función para separar cada cantidad de cifras.

Espero que me haya explicado bien y que te sirva de algo. Cualquier otra duda enviame un correo

Saludos y felices fiestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

lo as podido sacar??

Publicado por jesus (1 intervención) el 19/01/2009 17:50:10
oye tio, lo has podido conseguir?? me ha tocado una practica igualito a lo que estás preguntando, y por mas que lo doy vueltas con el pascal y hechandole tiempo, no lo consigo sacar, me podias ayudar?' Gracias, de antemano, te dejo mi e-mail. katanga_cs_@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar