• Lunes 29 de Abril de 2024, 11:23

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 - Valten

Páginas: [1]
1
Pascal / Re: Orientacion Con Operaciones De Matrices
« en: Domingo 6 de Mayo de 2007, 10:11 »
Cita de: "rak40"
hola, a todos. Estoy haciendo un programa el que trabajo con una matriz cubica :comp: , y todo lindo, pero para cargarla me gustaria poner unas restricciones como por ejemplo, que solo se puedan ingresar numeros, y que los demas caracteres esten permitidos, y que la suma de las filas de esta matriz no sean superior a un numero determinado, esto me desconcierta, por que no lo puedo imaginar, si alguien me puede tirar una pista. si quieren mas informacion acerca de lo que quiero hacer diganlo nomas. bueno, espero que se entienda lo que quiero, saludos :hola:
Hola rak, jejeje. Te puedo decir que en Pascal he utilizado un par de veces los arrays cúbicos en los 16 ó 17 años que llevo con él, y siempre fué porque algún estudiante se puso pesadillo con que quería ver un ejemplo.

No te preocupes, para recorrerlos, sólo hace falta poner tres bucles anidados como bien ha dicho Enko. En cuanto a los "ejes", lo puedes entender como quieras ya que dentro de la memoria del ordenador se va a almacenar todo seguido uno detrás de otro como si fuera un vector (array de una dimensión). Por ejemplo, supongo que tomes el primer índice como filas, y el segundo como columnas. Pues sigue así, y entiende el tercero como "profundidad" o "capas".

El orden en que recorres la matriz viene dado por el orden en que pongas los bucles anidados, es decir, si primero pones filas, luego columnas, y por último capas, recorreras así: primero la fila 1 por columnas de cada capa, luego la 2, y así sucesivamente. Es fácil aunque un poco lío de contar por escrito.

En cuanto a lo de limitar la entrada del usuario, ese ya es un problema más complejo. Te diré para o asfixiarte demasiado que, si estás con Turbo Pascal 7.0, te eches un vistazo al procedimiento VAL. Ese es la clave. Cuando leas el valor, lee un string (no importa que sea un número, tú lee un string). Después llamas a VAL y éste te dirá si era un número correcto o no. Por lo tanto, te dirá si tienes que volver a preguntar el valor o ya vale. Mételo todo en un REPEAT UNTIL y lo tienes hecho. Para lo de la suma, ese ya es otro cantar, así que ve por partes como decía Jack el destripador. Ahí ya tendrás que hacerte tu propia función booleana que haga la comprobación y utilizarla igual casi que el VAL.

Pues nada, espero haber aclarado algo más el tema.

2
Pascal / Re: Motrar El Nombre De Un Tipo De Dato
« en: Domingo 6 de Mayo de 2007, 10:01 »
Hola Enko, pues me vas a perdonar, pero con Turbo PAscal 7.0 yo sí que he hecho lo que dices. Ahora bien, hay un problema o dos que surgen:

1. Lógicamente si vas a emplear el mismo resultado de la misma función más de una vez, es mucho más lógico guardarlo primero en una variable y luego ya usar ésta las veces que sea necesario.

2. Se ve que tiene un tipo de datos enumerado con los días de la semana, y eso por ejemplo sí que no se puede mostrar en pantalla directamente en Turbo Pascal 7.0 (al menos). Para ello la única que se me ocurre medianamente decente es la siguiente (no voy a poner el código para que lo pueda intentar escribir rak40 por su cuenta:

Primero declaras el tipo enumerado.
Luego declaras una constante de tipo array unidimensional en la que los índices sean lunes..domingo y los valores de las casillas 'lunes' .. 'domingo' (fíjate en los apóstrofes. Ahora son strings)

Cuando vayas a pintar en pantalla una variable del tipo días de la semana, por ejemplo dia, lo que haces es pintar la casilla día de ese array.

Luego ya, respecto de tu código y el error que te da, no te puedo decir mucho, salvo que verifiques que la función leer, y la función describir no sean de tipo enumerado o algo similar que no se pueda sacar directamente en pantalla.

Espero haber sido de ayuda

3
Diseño de Algoritmos / Re: ¿cómo Generar Un Calendario Deportivo?
« en: Domingo 6 de Mayo de 2007, 09:45 »
Cita de: "lencho"
No tiene nada que ver, en los dos podes usar recursividad, ademas que problema con la recursividad en C ??
Buenos días lencho, gracias por responder. Perdona pero quizá me he expresado mal. Sé que en C puedo utilizar la recursividad, eso no es problema. Pero ¿conjuntos? eso no lo tiene el amigo C ¿o sí? Para mí es una estructura que me acostumbré a usar en Pascal y que, en muchos casos, echo de menos cuando estoy en otros lenguajes. Ojo que no pretendo sonar pedante. No es que sepa mil. Conozco un poquillo de 3 ó 4.

De todos modos, me conectaba esta mañana para comentar que una solución al tema lleva dos palabras mágicas: Round Robin. El bendito territorio de las rotaciones de equipos. Es una patochada muy sencilla de implementar y que, no sé si será lo más eficiente del "mercado", pero que desde luego a mi me resulta práctico. Phew!  :kicking:

4
Diseño de Algoritmos / ¿cómo Generar Un Calendario Deportivo?
« en: Sábado 5 de Mayo de 2007, 11:17 »
Buenos días, no he encontrado nada sobre el tema, y sé que no se hace los deberes a la gente (cosa que me parece genial por otra parte).

Por eso lo que pido es nada más alguna pista para resolver un problemilla que me trae de cabeza. Me explico:

Tengo una liga con dieciséis equipos cuyos nombres almaceno en un vector de strings.

Como en esta liga no hay ida y vuelta, sólo necesito generar quince jornadas con ocho partidos cada una. Después he de leer los resultados, calcular la clasificación atendiendo a una serie de condiciones y presentarlo en pantalla. Todo esto no es problema, pero lo de generar el calendario y colocar cada jornada sin que el mismo equipo juegue dos veces me mata.

Tengo pensado utilizar una matriz bidimensional con 15 columnas y 8 filas en la que cada casilla sea una estructura con los dos equipos que juegan ese partido y el resultado del mismo, pero ¿Cómo relleno los equipos de forma eficaz, sencilla, o de cualquier forma?

Está claro, creo, que tengo que generar combinaciones de equipos y generar los partidos no me parece difícil con dos bucles anidados, algo así:

Código: Text
  1. for (local=1;local<15;local++)
  2.    for (visitante=local+1;visitante<16;visitante++)
  3.  
  4.  

Con esto, local y visitante me dan las combinaciones correspondientes a los 120 partidos de la temporada, pero ¿cómo los reparto en las distintas jornadas?

Agradecería cualquier ayuda o pista sobre cómo hacerlo porque me está matando. Todo lo demás lo tengo ya encarrilado en la cabeza, pero con el calendario no puedo. Si hubiera estado en Pascal, probablemente utilizando recursividad y conjuntos podría hacer algo, pero en C no sé qué hacer.

Estoy utilizando el Dev-C++ en caso de que pudiera influir. Muchas gracias por cualquier pista que me podáis dar. Entiendo que es un problema habitual, pero no recuerdo haberme enfrentado con él nunca y me tiene despistado.

Gracias otra vez. Un saludo desde Santander (España)

Páginas: [1]