|
HQH
|
 |
« : Agosto 04, 2003, 11:48:48 » |
|
Este es un post para plantear ejercicios para quien quiera resolverlos. Cualquiera puede plantear un ejercicio aqui. Debe quedar claro que este post es SOLO para plantear los ejercicios, NO ES PARA DUDAS NI OPINIONES SOBRE ELLOS. Para eso esta el resto del sub-foro. Los ejercicios se postearan indicando claramente que numero de ejercicio es. Este es el ejercicio 1. El siguiente en postear debe observar cual es el ultimo ejercicio y colocar el numero siguiente en su post. Ejemplo, si el ultimo ejercicio es el 3 , en tu post con un nuevo ejercicio pondras EJERCICIO 4 Esta nomenclatura se usara tambien para las soluciones, que iran en otro post paralelo. Si por ejemplo, tu ejercicio es el 2 y quieres postear la solucion, en el post de soluciones deberas colocar SOLUCION EJERCICIO 2 sin importar el orden, solo que haga referencia al numero de ejercicio posteado. Para comenzar este post, coloco un viejo reto de programacion, publicado en La nueva red y pensado por Uninauta. EJERCICIO 1Bajar el archivo adjunto y disfrutarlo.
|
|
|
« Última modificación: Agosto 04, 2003, 03:32:10 por ]_HQH_[ »
|
En línea
|
|
|
|
|
HQH
|
 |
« Respuesta #1 : Agosto 04, 2003, 03:24:42 » |
|
EJERCICIO 2
El enunciado es simple:
Encontrar todas las ternas pitagóricas para lados del triángulo menores de 500
Pero ¿qué es una terna pitagórica? Bien, un triángulo rectángulo puede tener todos los valores de sus tres lados enteros. Para eso se ha de cumplir pitágoras: hip^2 = cat1^2 + cat2^2
Pues bien el ejercicio consiste en encontrar todas las ternas pitagóricas, o lo que es lo mismo, toda combinación de valores para hipotenusa y catetos que nos dan un triángulo válido, mientras sus lados sean menores de 500. El ejercicio está resuelto con un enfoque de fuerza bruta.
Un saludo (Escrito por Zheo)
|
|
|
|
« Última modificación: Noviembre 23, 2008, 11:44:29 por HQH »
|
En línea
|
|
|
|
|
ZeNnEka
|
 |
« Respuesta #2 : Agosto 14, 2003, 01:40:59 » |
|
EJERCICIO 3
SuponeR que se tiene dada la funci?n Punto(x,y,color). Esta funci?n, como su nombre indica, pintar? un punto en la posici?n (x,y) del color indicado en la variable color. A partir de esta funci?n, desarrollar los algoritmos para las siguientes primitivas de dibujo. Como ayuda en algunas, se dan las ecuaciones param?tricas.
LINEA(x0,y0,x1,y1,color) RECTANGULO(x0,y0,x1,y1,color) CIRCULO(centroX,centroY,radio,color) ELIPSE(centroX,centroY,SemA,SemB,color)Las ecuaciones param?tricas de la circunferencia son:
x = centroX + radio*cos(angulo) y = centroY + radio*sin(angulo) y angulo var?a entre 0 y 360 grados, o bien entre 0 y 2PI radianes.
Las ecuaciones param?tricas de la elipse son:
x = centroX + SemA*cos(angulo) y = centroY + SemB*sin(angulo) y angulo var?a entre 0 y 360 grados, o bien entre 0 y 2PI radianes.
SemA es el semieje mayor, y SemB es el semieje menor.
Escribir tambi?n un algoritmo que pinte las figuras rellenas. ?Se les ocurre alguna forma de mejorar y/o acelerar los c?lculos?
La primitiva m?s dif?cil es la LINEA. Si no se les ocurre, y la necesitan para otras primitivas, usarla como si ya la tuvieran hecha...
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #3 : Agosto 14, 2003, 01:44:54 » |
|
EJERCICIO 4
Decimos que una matriz cuadrada de orden n x n tal que contiene todos los enteros del 1 al n2 es m?gica cuando la suma de los elementos de las filas da el mismo resultado en todas las filas, este resultado es el mismo para la suma de los elementos de las columnas y, adem?s, tambi?n coincide con las suma de los elementos de las diagonales. Hay un algoritmo para resolver el problema de construir matrices cuadradas cuando n es impar:
Situamos un 1 a la mitad de la fila superior de la matriz. Entonces, moverse a la celdilla superior izquierda y colocar el n?mero consecutivo, y as? sucesivamente. En caso de que la celdilla superior izquierda est? ocupada, moverse a la celdilla inferior.
Por ejemplo, para n=5:
-------------------------- | 15 | 8 | 1 | 24 | 17 | 65 -------------------------- | 16 | 14 | 7 | 5 | 23 | 65 -------------------------- | 22 | 20 | 13 | 6 | 4 | 65 -------------------------- | 3 | 21 | 19 | 12 | 10 | 65 -------------------------- | 9 | 2 | 25 | 18 | 11 | 65 -------------------------- 65 65 65 65 65 65 65
Les he dado el algoritmo, ahora, ustedes, hagan un programa en C que dado n impar calcule la matriz m?gica y la muestre por pantalla.
C Ya n Thanx...!!
|
|
|
|
« Última modificación: Agosto 14, 2003, 01:46:32 por ZeNnEka »
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #4 : Agosto 14, 2003, 01:50:02 » |
|
EJERCICIO 5No s? cu?ntos de ustedes habr?n tenido la oportunidad de conocer el lenguaje LOGO (yo NO soy una de esas personas), sin embargo, si que qued? en el "ambiente" su famosa "tortuga". La tortuga era (creo) una forma sencilla de hacer gr?ficos (el LOGO estaba pensado para que aprendieran a programar los ni?os), y contaba para ello con unas ?rdenes muy simples: ARRIBA(n) : Me voy, desde donde estoy, n "cuadritos" hacia arriba ABAJO(n) : Me voy, desde donde estoy, n "cuadritos" hacia abajo IZQUIERDA(n): Me voy, desde donde estoy, n "cuadritos" hacia la izqda DERECHA(n) : Me voy, desde donde estoy, n "cuadritos" hacia la derecha VETE_A(x,y) : Me voy a la posici?n (x,y) GIRA(n) : Giro un ?ngulo de n grados.Vamos ahora a por lo que yo quiero: nos manejaremos en modo texto, ya saben, 80 columnas y 25 filas. Podemos usar, como representaci?n de caracteres para dibujar, | - \ / Los ?ngulos permitidos para GIRA ser?n pues de 45 en 45 grados. La pantalla en modo texto ser? una matriz, sobre esa matriz escribir?n, usando las ?rdenes de dibujo LOGO, alg?n dibujo. Despu?s de escribir en esa matriz, hacen un volcado a pantalla. Obviamente, tienen que escribir alg?n cierto c?digo para las funciones LOGO explicadas arriba, y luego llamar a esas funciones desde una funci?n o programa principal. Es posible que tengan que pasar m?s par?metros a las funciones, como la posici?n actual (si es necesario), o no, seg?n si usan variables locales o globales. Les recomiendo las primeras. Les voy a poner un ejemplo de lo que quiero (que creo que no se entiende nada): PROCEDIMIENTO ARRIBA(ENTERO n,ENTERO x,ENTERO y) Variables ENTEROS: i inicio desde i=1 hasta i=n hacer matriz(y-i,x)=| fin desde fin procedimientoY luego, en su programa principal, la pueden llamar (por ejemplo) LLAMAR_A ARRIBA(3,5,7) Es por dar una idea, pero lo pueden hacer como quieran siempre que haga lo que tiene que hacer. Pueden usar variables globales (con lo que no har?a falta el paso de x,y al procedimiento), u otras cosas. Al gusto El que sepa gr?ficos, si quiere y se anima, que haga gr?ficos. C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #5 : Agosto 14, 2003, 01:53:15 » |
|
EJERCICIO 6
Vamos a resolver un problema matem?tico que una leyenda dice que resolvi? el historiador romano del siglo I d.C, Flavius Josephus. La leyenda dice lo siguiente:
"Durante la guerra Romano-Judia (sobre el 70 d.C) un personaje llamado Flavius Josephus se encontraba formando parte de una banda de 41 judios rebeldes atrapados por los romanos en una cueva (Josephus era un infiltrado romano). Los rebeldes prefiriendo el suicidio antes que entregarse, buscan una forma para decidir el orden en el cual van a morir. Entonces se disponen en c?rculo, cuentan de tres en tres personas y la persona se?alada sale del c?rculo y se suicida. As? hasta que solo queda uno. Pero Josephus y otro espia que estaba con ?l no quer?an morir, as? que r?pidamente realiz? el c?lculo de la posici?n donde ?l y su amigo deber?an ponerse para quedar los ?ltimos en el c?rculo y salvarse."
Nuestro programa va a hacer algo parecido. Vamos a disponer un c?rculo con n elementos numerados de 1 a n y vamos a eliminar elementos cada k-veces hasta que solo quede uno. El problema es determinar el n?mero del superviviente J(n,k).
Pista: lista circular doblemente ligada.
Pregunta: ?Qu? funci?n matem?tica resuelve el problema?
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #6 : Agosto 14, 2003, 01:56:04 » |
|
EJERCICIO 7
Hay un problema de Martin Gardner que se trata de lo siguiente. Tenemos un cubo (de madera, p.ej.) que tiene una de sus caras pintada de rojo. Lo ponemos en una de las esquinas de un tablero de ajedrez (o cualquier casillero de 8x8), con la cara roja apuntando hacia afuera del tablero. Para hacer un movimiento hay que volcar el cubo gir?ndolo sobre una arista, mientras ?sta descansa sobre la l?nea que separa dos casillas. El cubo gira, pues un cuarto de vuelta en cada movimiento.
Se trata de recorrer con el cubo todas las casillas del tablero, pasando una sola vez por cada casilla, sin que la cara roja toque el tablero en ning?n momento, y acabe en la casilla adyacente a la de partida. Por lo que dice Gardner hay una ?nica soluci?n, descontando simetr?as y giros.
El problema que propongo es obvio: hacer un programa que encuentre el recorrido.
Quien se quiera divertir primero con el cubo, quiz? le apetezca hacerlo en papel recortando un desarrollo y peg?ndolo, con s?lo tener en cuenta que el tama?o ha de ser m?s o menos parecido al de la casilla de su tablero de ajedrez. Quiz? valga incluso un dado grande (p.ej. de Trivial) y un ajedrez peque?o (p.ej. magn?tico).
La salida del programa puede ser por ejemplo de este tipo:
+-+-+-+-+-+-+-+-+ |I**| | | | | | | +-+*+-+-+-+-+-+-+ |***| | | | | | | +*+-+-+-+-+-+-+-+ |F| | | | | | | | +-+-+-+-+-+-+-+-+ | | | | | | | | | +-+-+-+-+-+-+-+-+ | | | | | | | | | ... con I marcando la casilla de inicio y F marcando la de final. Obviamente el ejemplo expuesto dista mucho de estar completo.
No se trata de competir a ver cu?l es m?s r?pido ni m?s corto, etc.; s?lo se trata de resolverlo.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #7 : Agosto 14, 2003, 02:00:39 » |
|
EJERCICIO 8
El m?todo de Newton es un m?todo iterativo de b?squeda de ra?ces usado para resolver ecuaciones NO lineales f(x)=0 basado en la aproximaci?n por tangentes (si alguien quiere saber exactamente en qu? consiste, que me lo pregunte). Dicho m?todo iterativo consiste en tomar una aproximaci?n inicial x0 a la ra?z, y, a partir de ella, obtenemos los siguientes iterados mediante la recurrencia: f(x0) x1 = x0 - -------- f'(x0) Una posible forma de decidir cu?ndo dejamos de iterar es cuando la diferencia (en valor absoluto) entre dos iterados consecutivos sea menor que una cantidad prefijada por nosotros de antemano. Este m?todo no siempre converger?, y por ello es conveniente poner un n?mero m?ximo de iterados, de manera que si superamos ese n?mero de iteraciones del proceso, se termine el c?lculo dando un mensaje que notifique lo que ha sucedido y mostrando la aproximaci?n conseguida.
En particular, el m?todo de Newton nos sirve para hallar ra?ces cuadradas, ya que si queremos calcular la ra?z cuadrada de A, consideramos la ecuaci?n x^2-A=0. Una soluci?n de la ecuaci?n es x=RAIZ_C(A), lo que buscamos.
Por consideraciones que no vienen al caso, resulta que el m?todo de Newton no presenta problemas de convergencia para hallar ra?ces cuadradas. Adem?s, para este caso particular la iteraci?n que tenemos que realizar es (son unas operaciones muy sencillas):
1 ( A ) x1 = --- ( x0 + ---- ) 2 ( x0 ) Por si fuera poco, como aproximaci?n inicial podemos tomar, tranquilamente, x0=A.
Para estimar el error cometido (entendiendo como error el valor absoluto de la diferencia entre la ra?z correcta y la aproximaci?n) , basta con tomar como estimaci?n de error el valor absoluto de la diferencia entre una iteracion y la anterior.
Con todos estos datos, escribir un algoritmo que calcule ra?ces cuadradas usando el m?todo de Newton con un error menor que E, donde E ser? un n?mero que entrar? el usuario. Como seguridad, poner un tope de 100 iteraciones.
Pueden generalizar este ejercicio para hallar ra?ces de ?ndice entero positivo cualquiera.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #8 : Agosto 14, 2003, 02:08:41 » |
|
EJERCICIO 9
''Number'' es un signed short. Se pide que escriban el c?digo necesario para obtener a la salida un color seg?n el valor de ''Number' 'y las siguientes reglas: Si es positivo y divisible por 2 (par), Azul. Si es positivo, divisible por 3 pero no por 2, Amarillo. Si es positivo y divisible por 2 y por 3, Naranja. Si es positivo pero no divisible ni por 2 ni por 3, Rojo. Si es negativo y divisible por 2, Rosa. Si es negativo, divisible por 3 pero no por 2, Negro. Si es negativo y divisible por 2 y por 3, Verde. Si es negativo pero no divisible ni por 2 ni por 3, Fucsia.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #9 : Agosto 16, 2003, 07:49:14 » |
|
EJERCICIO 10
Programa que lee un hotel de 100 habitaciones el tipo de habitacion en el vector de nombre Tipo que sera 'i' para endividual y 'd' para doble, y almacena en el vector de nombre Ocupada el valor 1 si la habitaci?n se encuentra ocupada y el valor 0 si esta vacia.
Pedira el precio de la habitacion individual, que se incrementara en un 50% si es doble y a continuacion preguntara repetidamente que tipo de habitacion se busca. Se pulsar? i para individual y d para doble y f para finalizar.
El programa mostrara el n?mero de habitacion que es, el precio y la pondra como ocupada.Al finalizar el programa escribir? el n?mero de habitaciones que quedan libles y de estas, cuantas son dobles y cuantas individuales.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #10 : Agosto 16, 2003, 07:55:34 » |
|
EJERCICIO 11
Escriba una clase llamada Inventario, para almacenar referencias a todos los animales existentes en una tienda de mascotas. Esta clase debe cumplir con los siguientes requisitos:
Los animales deben almacenarse en un array privado de tama?o 100 dentro de la clase Inventario. El tama?o del array debe definirse como una constante en la clase. En la tienda existir?n diferentes tipos de animales: perros, gatos, conejos, etc. La clase debe tener un constructor que inicialice el inventario a vacio, y m?todos para insertar y eliminar animales del inventario. Debe existir otro m?todo que imprima el nombre, la raza y la edad de todos los animales de la tienda. Cree tambi?n un m?todo que devuelva un Enumeration con todos los perros de la tienda. Utilice lo mas que pueda interfaces y polimorfismo para realizar este ejercicio.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #11 : Agosto 16, 2003, 08:03:48 » |
|
EJERCICIO 12
Escribe un algoritmo que lea 2 n?meros enteros positivos y un car?cter. En funci?n de este car?cter le?do efectuar? las siguientes operaciones:
'p': Calcula los n?meros perfectos en el rango dado por los 2 n?meros.
'm': Calcula el minimo com?n m?ltiplo de ambos n?meros.
'd': Calcula el m?ximo com?n divisor de los mismos.
'+','*','-','/' : Realiza la operaci?n correspondiente con los n?meros.
'&': Salir del programa
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #12 : Agosto 26, 2003, 10:31:25 » |
|
EJERCICIO 13
Escribe un programa para tratar las notas de una asignatura en la que se realizan dos examenes y se han matriculado 7 alumnos. El programa primero lee el nombre de cada alumno y sus dos notas.
Despues calcula la media de cada estudiante y la de toda la clase. El resultado lo muestra por pantalla mediante un listado con los nombres de los alumnos, sus dos notas y su media, escribiendo al final del todo la media de la clase.
Dicho listado debe mostrar los numeros alineados a la derecha y cada uno en su columna correspondiente.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #13 : Agosto 26, 2003, 10:34:06 » |
|
EJERCICIO 14
El programa lee una lista de 6 numeros reales del teclado y despues los muestra por pantalla en notaci?n cient?fica indicando al lado de cada n?mero si es el valor m?ximo o m?nimo.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|
ZeNnEka
|
 |
« Respuesta #14 : Agosto 26, 2003, 10:37:27 » |
|
EJERCICIO 15 Modifica el programa anterior de modo que, al mostrar por pantalla la lista, indique que numeros son positivos y cuales negativos.
Antes de finalizar, el programa debe decir el numeros total de valores positivos y negativos.
C Ya n Thanx...!!
|
|
|
|
|
En línea
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"...Ash Nazg Durbatuluk Ash Nazg Gimbatul Ash Nazg Thrakatuluk Agh burzum-ishi krimpatul..."
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
J.R.R Tolkien
|
|
|
|