Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


Soluciones a los ejercicios propuestos

(Ejercicios incluidos hasta el momento: 170, resueltos: 42)

 


Apartado 0.1.1: Localiza en Internet el intérprete de BASIC llamado Bywater Basic, en su versión para el sistema operativo que estés utilizando (o algún otro intérprete de BASIC clásico, como un emulador de un Amstrad CPC, un MSX o un Commodore 64) y prueba el primer programa de ejemplo que se ha visto en el apartado 0.1. (Nota: no es imprescindible para seguir el curso; puedes omitir este ejercicio si no quieres instalar en tu equipo software que quizá no vuelvas a utilizar).

(-- Fichero no encontrado --)


Apartado 0.1.2: Localiza en Internet el compilador de Pascal llamado Free Pascal, en su versión para el sistema operativo que estés utilizando y prueba el segundo programa de ejemplo que se ha visto en el apartado 0.1. (Nota: no es imprescindible para seguir el curso; puedes omitir este ejercicio si no quieres instalar nada en tu equipo).

(-- Fichero no encontrado --)


Apartado 1.2: Crea un programa que diga el resultado de sumar 118 y 56.

(-- Fichero no encontrado --)


Apartado 1.2b: Un programa que calcule la diferencia entre 12345 y 998.

(-- Fichero no encontrado --)


Apartado 1.2c: Un programa que calcule y muestre el resultado de dividir 3765 entre 18 y el resto de esa división.

(-- Fichero no encontrado --)


Apartado 1.3.1: Calcular (a mano y después comprobar desde C) el resultado de estas operaciones: -2 + 3 * 5 ; (20+5) % 6 ; 15 + -5*6 / 10 ; 2 + 10 / 5 * 2 - 7 % 1

(-- Fichero no encontrado --)


Apartado 1.4.3: Hacer un programa que calcule el producto de los números 121 y 132, usando variables.

(-- Fichero no encontrado --)


Apartado 1.7.1a: Multiplicar dos números tecleados por usuario

(-- Fichero no encontrado --)


Apartado 1.7.1b: El usuario tecleará dos números (x e y), y el programa deberá calcular cual es el resultado de su división y el resto de esa división.

(-- Fichero no encontrado --)


Apartado 1.7.1c: El usuario tecleará dos números (a y b), y el programa mostrar el resultado de la operación (a+b)*(a-b) y el resultado de la operación a2-b2.

(-- Fichero no encontrado --)


Apartado 2.1.1: Multiplicar dos números de 4 cifras que teclee el usuario, usando el modificador "long".

(-- Fichero no encontrado --)


Apartado 2.1.3a: Crea un programa que te diga cuántos bytes son 3 megabytes.

(-- Fichero no encontrado --)


Apartado 2.1.8a: Crea un programa en C que exprese en el sistema decimal los números octales 162, 76, 241, 102.

(-- Fichero no encontrado --)


Apartado 2.1.8b: Crea un programa en C que exprese en el sistema decimal los números hexadecimales 1B2, 76, E1, 2A.

(-- Fichero no encontrado --)


Apartado 2.1.10a: Crear un programa que use tres variables x,y,z. Sus valores iniciales serán 15, -10, 2.147.483.647. Se deberá incrementar el valor de estas variables. ¿Qué valores esperas que se obtengan? Contrástalo con el resultado obtenido por el programa.

(-- Fichero no encontrado --)


Apartado 2.1.10b: ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=++a; c=a++; b=b*5; a=a*2;

(-- Fichero no encontrado --)


Apartado 2.1.11a: Crear un programa que use tres variables x,y,z. Sus valores iniciales serán 15, -10, 214. Se deberá incrementar el valor de estas variables en 12, usando el formato abreviado. ¿Qué valores esperas que se obtengan? Contrástalo con el resultado obtenido por el programa.

(-- Fichero no encontrado --)


Apartado 2.1.11b: ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=a+2; b-=3; c=-3; c*=2; ++c; a*=b;

(-- Fichero no encontrado --)


Apartado 2.2.02a: El usuario de nuestro programa podrá teclear dos números de hasta 8 cifras significativas. El programa deberá mostrar el resultado de dividir el primer número entre el segundo, utilizando tres cifras decimales.

(-- Fichero no encontrado --)


Apartado 2.2.02b: Crear un programa que use tres variables x,y,z. Las tres serán números reales, y nos bastará con dos cifras decimales. Deberá pedir al usuario los valores para las tres variables y mostrar en pantalla cual es el mayor de los tres números tecleados.

(-- Fichero no encontrado --)


Apartado 2.3: Descubrir cual es el espacio ocupado por un "int" en el sistema operativo y compilador que utilizas.

(-- Fichero no encontrado --)


Apartado 2.5.1: Crear un programa que pida al usuario que teclee cuatro letras y las muestre en pantalla juntas, pero en orden inverso, y entre comillas dobles. Por ejemplo si las letras que se teclean son a, l, o, h, escribiría "hola".

(-- Fichero no encontrado --)


Apartado 3.1.1a: Crear un programa que pida al usuario un número entero y diga si es par (pista: habrá que comprobar si el resto que se obtiene al dividir entre dos es cero: if (x % 2 == 0) ...

(-- Fichero no encontrado --)


Apartado 3.1.1b: Crear un programa que pida al usuario dos números enteros y diga cual es el mayor de ellos.

(-- Fichero no encontrado --)


Apartado 3.1.1c: Crear un programa que pida al usuario dos números enteros y diga si el primero es múltiplo del segundo (pista: igual que antes, habrá que ver si el resto de la división es cero: a % b == 0).

(-- Fichero no encontrado --)


Apartado 3.1.3a: Crear un programa que multiplique dos números enteros de la siguiente forma: pedirá al usuario un primer número entero. Si el número que se que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0". Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo número y se mostrará el producto de ambos.

(-- Fichero no encontrado --)


Apartado 3.1.3b: Crear un programa que pida al usuario dos números reales. Si el segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo. Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir entre cero".

(-- Fichero no encontrado --)


Apartado 3.1.4a: Crear un programa que multiplique dos números enteros de la siguiente forma: pedirá al usuario un primer número entero. Si el número que se que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0". Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo número y se mostrará el producto de ambos. (Variante con "else")

(-- Fichero no encontrado --)


Apartado 3.1.4b: Crear un programa que pida al usuario dos números reales. Si el segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo. Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir entre cero". (Variante con "else")

(-- Fichero no encontrado --)


Apartado 3.1.5a: Crear un programa que pida una letra al usuario y diga si se trata de una vocal.

(-- Fichero no encontrado --)


Apartado 3.1.5b: Crear un programa que pida al usuario dos números enteros y diga "Uno de los números es positivo", "Los dos números son positivos" o bien "Ninguno de los números es positivo", según corresponda.

(-- Fichero no encontrado --)


Apartado 3.1.5c: Crear un programa que pida al usuario tres números reales y muestre cuál es el mayor de los tres.

(-- Fichero no encontrado --)


Apartado 3.1.5d: Crear un programa que pida al usuario dos números enteros cortos y diga si son iguales o, en caso contrario, cuál es el mayor de ellos.

(-- Fichero no encontrado --)


Apartado 3.1.9a: Crear un programa que use el operador condicional para mostrar un el valor absoluto de un número de la siguiente forma: si el número es positivo, se mostrará tal cual; si es negativo, se mostrará cambiado de signo.

(-- Fichero no encontrado --)


Apartado 3.1.9b: Crear un programa que use el operador condicional para dar a una variable llamada "iguales" (entera) el valor 1 si los dos números que ha tecleado el usuario son iguales, o el valor 0 si son distintos.

(-- Fichero no encontrado --)


Apartado 3.1.9c: Usar el operador condicional para calcular el mayor de dos números.

(-- Fichero no encontrado --)


Apartado 3.2.1a: Crear un programa que pida al usuario su contraseña (numérica). Deberá terminar cuando introduzca como contraseña el número 4567, pero volvérsela a pedir tantas veces como sea necesario.

(-- Fichero no encontrado --)


Apartado 3.2.1b: Crea un programa que escriba en pantalla los números del 1 al 10, usando "while".

(-- Fichero no encontrado --)


Apartado 3.2.1c: Crea un programa que escriba en pantalla los números pares del 26 al 10 (descendiendo), usando "while".

(-- Fichero no encontrado --)


Apartado 3.2.1d: Crear un programa calcule cuantas cifras tiene un número entero positivo (pista: se puede hacer dividiendo varias veces entre 10).

(-- Fichero no encontrado --)


Apartado 3.2.2a: Crear un programa que pida números positivos al usuario, y vaya calculando la suma de todos ellos (terminará cuando se teclea un número negativo o cero).

(-- Fichero no encontrado --)


Apartado 3.2.2b: Crea un programa que escriba en pantalla los números del 1 al 10, usando "do..while".

(-- Fichero no encontrado --)


Apartado 3.2.2c: Crea un programa que escriba en pantalla los números pares del 26 al 10 (descendiendo), usando "do..while".

(-- Fichero no encontrado --)


Apartado 3.2.2d: Crea un programa que pida al usuario su código de usuario (un número entero) y su contraseña numérica (otro número entero), y no le permita seguir hasta que introduzca como código 1024 y como contraseña 4567.

(-- Fichero no encontrado --)


Apartado 3.2.3a: Crear un programa que muestre los números del 15 al 5, descendiendo (pista: en cada pasada habrá que descontar 1, por ejemplo haciendo i--).

(-- Fichero no encontrado --)


Apartado 3.2.3b: Crear un programa que muestre los primeros ocho números pares (pista: en cada pasada habrá que aumentar de 2 en 2, o bien mostrar el doble del valor que hace de contador).

(-- Fichero no encontrado --)


Apartado 3.2.3c: Crear un programa que muestre las letras de la Z (mayúscula) a la A (mayúscula, descendiendo).

(-- Fichero no encontrado --)


Apartado 3.2.3d: Crear un programa que escriba en pantalla la tabla de multiplicar del 6.

(-- Fichero no encontrado --)


Apartado 3.2.3e: Crear un programa que escriba en pantalla los números del 1 al 50 que sean múltiplos de 3 (pista: habrá que recorrer todos esos números y ver si el resto de la división entre 3 resulta 0).

(-- Fichero no encontrado --)


Apartado 3.3a: Crear un programa que pida un número al usuario (entre 1 y 100) y muestre tantas letras A como indique ese número, usando "break" para terminar.

(-- Fichero no encontrado --)


Apartado 3.4a: Crear un programa que pida un número al usuario (entre 1 y 20) y muestre los números el 1 al 20, excepto el indicado por el usuario, usando "continue" para evitar ese valor.

(-- Fichero no encontrado --)


Apartado 3.7a: Crear un programa que dé al usuario la oportunidad de adivinar un número del 1 al 100 (prefijado en el programa) en un máximo de 6 intentos. En cada pasada deberá avisar de si se ha pasado o se ha quedado corto.

(-- Fichero no encontrado --)


Apartado 3.7b: Crear un programa que descomponga un número (que teclee el usuario) como producto de sus factores primos. Por ejemplo, 60 = 2 • 2 • 3 • 5

(-- Fichero no encontrado --)


Apartado 4.1a: Un programa que pida al usuario un número entero y muestre sus equivalentes en formato hexadecimal y en octal. Deberá seguir pidiendo (y convirtiendo) números hasta que se introduzca 0.

(-- Fichero no encontrado --)


Apartado 4.1b: Un programa que pida al usuario 2 números reales y muestre su división con 2 decimales (excepto si el segundo es 0; en ese caso, deberá decir "no se puede dividir").

(-- Fichero no encontrado --)


Apartado 4.2a: Un programa que pida al usuario un número hexadecimal y muestre su equivalente en base 10.

(-- Fichero no encontrado --)


Apartado 4.2b: Un programa que pida al usuario un número octal y muestre su equivalente en base 10.

(-- Fichero no encontrado --)


Apartado 4.2c: Un programa que pida al usuario una letra, después le pida una segunda letra, y las muestre en el orden contrario al que se introdujeron.

(-- Fichero no encontrado --)


Apartado 4.3: Un programa que escriba las letras de la A (a mayúscula) a la Z (z mayúscula), usando "for" y "putchar".

(-- Fichero no encontrado --)


Apartado 4.4: Un programa que pida al usuario 4 letras (usando "getchar") y las muestre en orden inverso (por ejemplo, si las letras son "h o l a", escribiría "aloh").

(-- Fichero no encontrado --)


Apartado 5.1.1a: Un programa que pida al usuario 4 números, los memorice (utilizando una tabla), calcule su media aritmética y después muestre en pantalla la media y los datos tecleados.

(-- Fichero no encontrado --)


Apartado 5.1.1b: Un programa que pida al usuario 5 números reales y luego los muestre en el orden contrario al que se introdujeron.

(-- Fichero no encontrado --)


Apartado 5.1.2a: Un programa que almacene en una tabla el número de días que tiene cada mes (supondremos que es un año no bisiesto), pida al usuario que le indique un mes (1=enero, 12=diciembre) y muestre en pantalla el número de días que tiene ese mes.

(-- Fichero no encontrado --)


Apartado 5.1.2b: Un programa que almacene en una tabla el número de días que tiene cada mes (año no bisiesto), pida al usuario que le indique un mes (ej. 2 para febrero) y un día (ej. el día 15) y diga qué número de día es dentro del año (por ejemplo, el 15 de febrero sería el día número 46, el 31 de diciembre sería el día 365).

(-- Fichero no encontrado --)


Apartado 5.1.3a: A partir del programa propuesto en 5.1.2, que almacenaba en una tabla el número de días que tiene cada mes, crear otro que pida al usuario que le indique la fecha, detallando el día (1 al 31) y el mes (1=enero, 12=diciembre), como respuesta muestre en pantalla el número de días que quedan hasta final de año.

(-- Fichero no encontrado --)


Apartado 5.1.3b: Crear un programa que pida al usuario 10 números y luego los muestre en orden inverso (del último al primero).

(-- Fichero no encontrado --)


Apartado 5.1.3c: Crear un programa que pida al usuario 10 números, calcule su media y luego muestre los que están por encima de la media.

(-- Fichero no encontrado --)


Apartado 5.1.3d: Un programa que pida al usuario 10 números enteros y calcule (y muestre) cuál es el mayor de ellos.

(-- Fichero no encontrado --)


Apartado 5.2.1a: Un programa que te pida tu nombre y una cifra numérica, y escriba tu nombre tantas veces como indique esa cifra numérica.

(-- Fichero no encontrado --)


Apartado 5.2.1b: Un programa similar al anterior, pero que pida en primer lugar la cifra numérica y después tu nombre, y luego escriba el nombre tantas veces como indique esa cifra numérica.

(-- Fichero no encontrado --)


Apartado 5.2.2: Un programa que pida al usuario que introduzca una palabra, cambie su primera letra por una "A" y muestre la palabra resultante.

(-- Fichero no encontrado --)


Apartado 5.2.3a: Un programa que te pida tu nombre y lo muestre en pantalla separando cada letra de la siguiente con un espacio. Por ejemplo, si tu nombre es "Juan", debería aparecer en pantalla "J u a n".

(-- Fichero no encontrado --)


Apartado 5.2.3b: Un programa que te pida tu nombre y lo muestre en pantalla separando al revés. Por ejemplo, si tu nombre es "Juan", debería aparecer en pantalla "nauJ".

(-- Fichero no encontrado --)


Apartado 5.2.4a: Un programa que te pida una frase y la muestre en pantalla sin espacios. Por ejemplo, si la frase es "Hola, como estás", debería aparecer en pantalla "Hola,comoestás".

(-- Fichero no encontrado --)


Apartado 5.2.4b: Un programa que te pida tu nombre (usando "gets") y una cifra numérica, y escriba tu nombre tantas veces como indique esa cifra numérica.

(-- Fichero no encontrado --)


Apartado 5.2.4c: Un programa similar al anterior, pero que pida en primer lugar la cifra numérica y después tu nombre (con "gets"), y luego escriba el nombre tantas veces como indique esa cifra numérica.

(-- Fichero no encontrado --)


Apartado 5.2.5: Un programa que te pida una palabra, y la almacene en la variable llamada "texto". Luego deberá pedir una segunda palabra, y añadirla al final de "texto". Finalmente, deberá pedir una tercera palabra, y guardarla en la variable "texto" y en otra variable llamada "texto2".

(-- Fichero no encontrado --)


Apartado 5.2.6a: Crear un programa que pida al usuario su contraseña. Deberá terminar cuando introduzca como contraseña la palabra "clave", pero volvérsela a pedir tantas veces como sea necesario.

(-- Fichero no encontrado --)


Apartado 5.2.6b: Crear un programa que pida al usuario su nombre y su contraseña, y no le permita seguir hasta que introduzca como nombre "Pedro" y como contraseña "Peter".

(-- Fichero no encontrado --)


Apartado 5.2.7: Un programa que pida tu nombre, tu día de nacimiento y tu mes de nacimiento y lo junte todo en una cadena, separando el nombre de la fecha por una coma y el día del mes por una barra inclinada, así: "Juan, nacido el 31/12".

(-- Fichero no encontrado --)


Apartado 5.3a: Un programa guarde los nombres de los meses. El usuario deberá indicar un número de mes (por ejemplo, 3) y se le mostrará el nombre de dicho mes (por ejemplo, Marzo).

(-- Fichero no encontrado --)


Apartado 5.3b: Usar un array de 3 dimensiones para guardar los nombres de los meses en español e inglés. El usuario deberá indicar un número de mes (por ejemplo, 3) y se le mostrará el nombre de dicho mes en español (Marzo) y en inglés (March).

(-- Fichero no encontrado --)


Apartado 5.4a: Un programa que pida 10 nombres y los memorice. Después deberá pedir que se teclee un nombre y dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá a pedir otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que se teclee "fin".

(-- Fichero no encontrado --)


Apartado 5.4b: Un programa que prepare espacio para un máximo de 100 nombres (de un máximo de 80 letras cada uno). El usuario deberá ir introduciendo un nombre cada vez, hasta que se pulse Intro sin teclear nada, momento en el que dejarán de pedirse más nombres y se mostrará en pantalla la lista de los nombres que se han introducido hasta entonces.

(-- Fichero no encontrado --)


Apartado 5.5.1: Un "struct" que almacene datos de una canción en formato MP3: Artista, Título, Duración (en segundos), Tamaño del fichero (en KB). Un programa debe pedir los datos de una canción al usuario, almacenarlos en dicho "struct" y después mostrarlos en pantalla.

(-- Fichero no encontrado --)


Apartado 5.5.2a: Ampliar el programa del apartado 5.5.1, para que almacene datos de hasta 100 canciones. Deberá tener un menú que permita las opciones: añadir una nueva canción, mostrar el título de todas las canciones, buscar la canción que contenga un cierto texto (en el artista o en el título).

(-- Fichero no encontrado --)


Apartado 5.5.2b: Un programa que permita guardar datos de "imágenes" (ficheros de ordenador que contengan fotografías o cualquier otro tipo de información gráfica). De cada imagen se debe guardar: nombre (texto), ancho en píxeles (por ejemplo 2000), alto en píxeles (por ejemplo, 3000), tamaño en Kb (por ejemplo 145,6). El programa debe ser capaz de almacenar hasta 700 imágenes (deberá avisar cuando su capacidad esté llena). Debe permitir las opciones: añadir una ficha nueva, ver todas las fichas (número y nombre de cada imagen), buscar la ficha que tenga un cierto nombre.

(-- Fichero no encontrado --)


Apartado 5.5.3: Ampliar el programa del apartado 5.5.2, para que el campo "duración" se almacene como minutos y segundos, usando un "struct" anidado que contenga a su vez estos dos campos.

(-- Fichero no encontrado --)


Apartado 5.6a: Un programa que pida el nombre, el apellido y la edad de una persona, los almacene en un "struct" y luego muestre los tres datos en una misma línea, separados por comas.

(-- Fichero no encontrado --)


Apartado 5.6b: Un programa que pida datos de 8 personas: nombre, dia de nacimiento, mes de nacimiento, y año de nacimiento (que se deben almacenar en una tabla de structs). Después deberá repetir lo siguiente: preguntar un número de mes y mostrar en pantalla los datos de las personas que cumplan los años durante ese mes. Terminará de repetirse cuando se teclee 0 como número de mes.

(-- Fichero no encontrado --)


Apartado 5.6c: Un programa que sea capaz de almacenar los datos de hasta 50 personas: nombre, dirección, teléfono, edad (usando una tabla de structs). Deberá ir pidiendo los datos uno por uno, hasta que un nombre se introduzca vacío (se pulse Intro sin teclear nada). Entonces deberá aparecer un menú que permita: Mostrar la lista de todos los nombres; Mostrar las personas de una cierta edad; Mostrar las personas cuya inicial sea la que el usuario indique; Salir del programa (lógicamente, este menú debe repetirse hasta que se escoja la opción de "salir").

(-- Fichero no encontrado --)


Apartado 5.6d: Mejorar la base de datos de ficheros (ejemplo 53) para que no permita introducir tamaños incorrectos (números negativos) ni nombres de fichero vacíos.

(-- Fichero no encontrado --)


Apartado 5.6e: Ampliar la base de datos de ficheros (ejemplo 53) para que incluya una opción de búsqueda parcial, en la que el usuario indique parte del nombre y se muestre todos los ficheros que contienen ese fragmento (usando "strstr").

(-- Fichero no encontrado --)


Apartado 5.6f: Ampliar la base de datos de ficheros (ejemplo 53) para que se pueda borrar un cierto dato (habrá que "mover hacia atrás" todos los datos que había después de ese, y disminuir el contador de la cantidad de datos que tenemos).

(-- Fichero no encontrado --)


Apartado 5.6g: Mejorar la base de datos de ficheros (ejemplo 53) para que se pueda modificar un cierto dato a partir de su número (por ejemplo, el dato número 3). En esa modificación, se deberá permitir al usuario pulsar Intro sin teclear nada, para indicar que no desea modificar un cierto dato, en vez de reemplazarlo por una cadena vacía.

(-- Fichero no encontrado --)


Apartado 5.6h: Ampliar la base de datos de ficheros (ejemplo 53) para que se permita ordenar los datos por nombre. Para ello, deberás buscar información sobre algún método de ordenación sencillo, como el "método de burbuja", y aplicarlo a este caso concreto.

(-- Fichero no encontrado --)


Apartado 5.7: Un programa que cree un array de 7 números enteros y lo ordene con cada uno de estos tres métodos, mostrando el resultado de los pasos intermedios.

(-- Fichero no encontrado --)


Apartado 6.1: Crea un programa que vaya leyendo las frases que el usuario teclea y las guarde en un fichero de texto. Terminará cuando la frase introducida sea "fin" (esa frase no deberá guardarse en el fichero).

(-- Fichero no encontrado --)


Apartado 6.2: Crea un programa que lea las tres primeras líneas del fichero creado en el apartado anterior y las muestre en pantalla. Si el fichero no existe, se deberá mostrar un aviso.

(-- Fichero no encontrado --)


Apartado 6.3a: Un programa que pida al usuario que teclee frases, y las almacene en el fichero "frases.txt". Acabará cuando el usuario pulse Intro sin teclear nada. Después deberá mostrar el contenido del fichero.

(-- Fichero no encontrado --)


Apartado 6.3b: Un programa que pregunte un nombre de fichero y muestre en pantalla el contenido de ese fichero, haciendo una pausa después de cada 25 líneas, para que dé tiempo a leerlo. Cuando el usuario pulse intro, se mostrarán las siguientes 25 líneas, y así hasta que termine el fichero. (Pista: puedes usar un contador, volverlo a poner a cero tras cada 25 líneas o bien comprobar si has avanzado otras 25 líneas usando la operación "resto de la división", y hacer la pausa con "getchar()").

(-- Fichero no encontrado --)


Apartado 6.4a: Crear un "struct" que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado "gente.dat". Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado.

(-- Fichero no encontrado --)


Apartado 6.4b: Ampliar el programa anterior para que use un "array de structs", de forma que se puedan tener datos de 10 personas. Se deberá pedir al usuario los datos de las 10 personas y guardarlos en el fichero. Después se pedirá al usuario un número del 1 al 10 y se mostrarán los datos de la persona indicada por ese número, que se deberán leer de fichero (1 será la primera ficha, y 10 será la última). Por ejemplo, si el usuario indica que quiere ver los datos de la persona 3 (tercera), se deberá leer las dos primeras, ignorando su contenido, y después leer la tercera, que sí se deberá mostrar.

(-- Fichero no encontrado --)


Apartado 6.4c: Una agenda que maneje los siguientes datos: nombre, dirección, tlf móvil, email, y día, mes y año de nacimiento (estos tres últimos datos deberán ser números enteros cortos). Deberá tener capacidad para 100 fichas. Se deberá poder añadir un dato nuevo, visualizar los nombres de las fichas existentes, o mostrar todos los datos de una persona (se preguntará al usuario cual es el nombre de esa persona que quiere visualizar). Al empezar el programa, leerá los datos de un fichero llamado "agenda.dat" (si existe). Al terminar, guardará todos los datos en ese fichero.

(-- Fichero no encontrado --)


Apartado 6.6a: Un programa que pida al usuario que teclee frases, y las almacene en el fichero "registro.txt", que puede existir anteriormente (y que no deberá borrarse, sino añadir al final de su contenido). Cada sesión acabará cuando el usuario pulse Intro sin teclear nada.

(-- Fichero no encontrado --)


Apartado 6.6b: Crear un programa que pida al usuario pares de números enteros y escriba su suma (con el formato "20 + 3 = 23") en pantalla y en un fichero llamado "sumas.txt", que se encontrará en un subdirectorio llamado "resultados". Cada vez que se ejecute el programa, deberá añadir los nuevos resultados a continuación de los resultados de las ejecuciones anteriores.

(-- Fichero no encontrado --)


Apartado 6.8a: Crear un "struct" que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado "gente.dat", usando "fwrite". Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con "fread".

(-- Fichero no encontrado --)


Apartado 6.8b: Ampliar el programa anterior para que use un "array de structs", de forma que se puedan tener datos de 10 personas. Se deberá pedir al usuario los datos de las 10 personas y guardarlos en el fichero, usando "fwrite". Después se pedirá al usuario un número del 1 al 10 y se mostrarán los datos de la persona indicada por ese número, que se deberán leer de fichero (1 será la primera ficha, y 10 será la última). Por ejemplo, si el usuario indica que quiere ver los datos de la persona 3 (tercera), se deberá leer las dos primeras (con "fread"), ignorando su contenido, y después leer la tercera, que sí se deberá mostrar.

(-- Fichero no encontrado --)


Apartado 6.8c: Mejorar la agenda anterior (del apartado 6.4), para guardar y leer cada "ficha" (struct) de una vez, usando fwrite/fread y sizeof, como en el último ejemplo.

(-- Fichero no encontrado --)


Apartado 6.9a: Ampliar el programa anterior (el "array de structs" con 10 personas) para que el dato que indique el usuario se lea sin leer y descartar antes los que le preceden, sino que se salte directamente a la ficha deseada usando "fseek".

(-- Fichero no encontrado --)


Apartado 6.10a: Mejorar la última versión de la agenda anterior (la que usa fwrite, fread y sizeof) para que no lea todas las fichas a la vez, sino que lea una única ficha del disco cada vez que lo necesite, saltando a la posición en que se encuentra dicha ficha con "fseek".

(-- Fichero no encontrado --)


Apartado 6.10b: Hacer un programa que muestre información sobre una imagen en formato GIF (se deberá localizar en Internet los detalles sobre dicho formato): versión, ancho de la imagen (en píxeles), alto de la imagen y cantidad de colores.

(-- Fichero no encontrado --)


Apartado 6.10c: Hacer un programa que muestre información sobre una imagen en formato PCX: ancho de la imagen (en píxeles), alto de la imagen y cantidad de colores.

(-- Fichero no encontrado --)


Apartado 6.10d: Mejorar la base de datos de ficheros (ejemplo 53) para que los datos se guarden en disco al terminar la sesión de uso, y se lean de disco cuando comienza una nueva sesión.

(-- Fichero no encontrado --)


Apartado 6.10e: Mejorar la base de datos de ficheros (ejemplo 53) para que cada dato introducido se guarde inmediatamente en disco, sin esperar a que termine la sesión de uso. En vez de emplear un "array de structs", debe existir un solo "struct" en memoria cada vez, y para las búsquedas se recorra todo el contenido del fichero.

(-- Fichero no encontrado --)


Apartado 6.10f: Mejorar el ejercicio anterior (ejemplo 53 ampliado con ficheros, que se manejan ficha a ficha) para que se pueda modificar un cierto dato a partir de su número (por ejemplo, el dato número 3). En esa modificación, se deberá permitir al usuario pulsar Intro sin teclear nada, para indicar que no desea modificar un cierto dato, en vez de reemplazarlo por una cadena vacía.

(-- Fichero no encontrado --)


Apartado 6.14a: Pedir al usuario dos números y la operación (suma o resta) a realizar con ellos, y mostrar el resultado de dicha operación. Utilizar "fgets" y "sscanf" para la lectura de teclado.

(-- Fichero no encontrado --)


Apartado 7.4a: Crear una función que calcule el cubo de un número real (float). El resultado deberá ser otro número real. Probar esta función para calcular el cubo de 3.2 y el de 5.

(-- Fichero no encontrado --)


Apartado 7.4b: Crear una función que calcule cual es el menor de dos números enteros. El resultado será otro número entero.

(-- Fichero no encontrado --)


Apartado 7.4c: Crear una función llamada "signo", que reciba un número real, y devuelva un número entero con el valor: -1 si el número es negativo, 1 si es positivo o 0 si es cero.

(-- Fichero no encontrado --)


Apartado 7.4d: Crear una función que devuelva la primera letra de una cadena de texto. Probar esta función para calcular la primera letra de la frase "Hola"

(-- Fichero no encontrado --)


Apartado 7.4e: Crear una función que devuelva la última letra de una cadena de texto. Probar esta función para calcular la última letra de la frase "Hola".

(-- Fichero no encontrado --)


Apartado 7.5a: Crear una función "escribirGuiones" que escriba en pantalla tantos guiones ("-") como se indique como parámetro y no devuelva ningún valor.

(-- Fichero no encontrado --)


Apartado 7.5b: Crear una función "dibujarRectangulo", que reciba como parámetros la anchura y la altura del rectángulo a mostrar, y muestre en pantalla un rectángulo de ese tamaño, relleno de caracteres "#".

(-- Fichero no encontrado --)


Apartado 7.5c: Crear una función que borre la pantalla dibujando 25 líneas en blanco. No debe devolver ningún valor.

(-- Fichero no encontrado --)


Apartado 7.5d: Crear una función que reciba un número y muestre en pantalla el perímetro y la superficie de un cuadrado que tenga como lado el número que se ha indicado como parámetro.

(-- Fichero no encontrado --)


Apartado 7.5e: Crear una función "escribirCentrado" que reciba un texto y lo escriba centrado en la siguiente línea de pantalla (suponiendo 80 columnas en pantalla). Por ejemplo, si el texto es "Hola", que tiene 4 letras, se escribirán 38 espacios antes de él.

(-- Fichero no encontrado --)


Apartado 7.6a: Crear una función "pedirEntero", que reciba como parámetros el texto que se debe mostrar en pantalla, el valor mínimo aceptable y el valor máximo aceptable. Deberá pedir al usuario que introduzca el valor tantas veces como sea necesario, volvérselo a pedir en caso de error, y devolver un valor correcto. Probarlo con un programa que pida al usuario un año entre 1800 y 2100.

(-- Fichero no encontrado --)


Apartado 7.6b: Crear una función "escribirTablaMultiplicar", que reciba como parámetro un número entero, y escriba la tabla de multiplicar de ese número (por ejemplo, para el 3 deberá llegar desde 3x0=0 hasta 3x10=30).

(-- Fichero no encontrado --)


Apartado 7.6c: Crear una función "esPrimo", que reciba un número y devuelva el valor 1 si es un número primo o 0 en caso contrario.

(-- Fichero no encontrado --)


Apartado 7.6d: Crear una función que reciba una cadena y una letra, y devuelva la cantidad de veces que dicha letra aparece en la cadena. Por ejemplo, si la cadena es "Barcelona" y la letra es 'a', debería devolver 2 (aparece 2 veces).

(-- Fichero no encontrado --)


Apartado 7.6e: Crear una función que reciba un número cualquiera y que devuelva como resultado la suma de sus dígitos. Por ejemplo, si el número fuera 123 la suma sería 6.

(-- Fichero no encontrado --)


Apartado 7.6f: Crear una función que reciba una letra y un número, y escriba un "triángulo" formado por esa letra, que tenga como anchura inicial la que se ha indicado. Por ejemplo, si la letra es * y la anchura es 4, debería escribir
****
***
**
*

(-- Fichero no encontrado --)


Apartado 7.9.1a: Crea un programa que escriba varias veces "Hola" (entre 5 y 10 veces, al azar).

(-- Fichero no encontrado --)


Apartado 7.9.1b: Crear un programa que genere un número al azar entre 1 y 100. El usuario tendrá 6 oportunidades para acertarlo.

(-- Fichero no encontrado --)


Apartado 7.9.1c: Crea un programa que muestre un "fondo estrellado" en pantalla: mostrará 24 líneas, cada una de las cuales contendrá entre 1 y 78 espacios (al azar) seguidos por un asterisco ("*").

(-- Fichero no encontrado --)


Apartado 7.9.2a: Crear un programa que halle cualquier raíz de un número. El usuario deberá indicar el número (por ejemplo, 2) y el índice de la raiz (por ejemplo, 3 para la raíz cúbica). Pista: hallar la raíz cúbica de 2 es lo mismo que elevar 2 a 1/3.

(-- Fichero no encontrado --)


Apartado 7.9.2b: Crear un programa que resuelva ecuaciones de segundo grado, del tipo ax2 + bx + c = 0 El usuario deberá introducir los valores de a, b y c. Pista: la solución se calcula con x = +- raíz (b2 – 4•a•c) / 2•a

(-- Fichero no encontrado --)


Apartado 7.9.2c: Crear un programa que muestre el seno de los ángulos de 30 grados, 45 grados, 60 grados y 90 grados. Cuidado: la función "sin" espera que se le indique el ángulo en radianes, no en grados. Tendrás que recordar que 180 grados es lo mismo que Pi radianes (con Pi = 3,1415926535). Puedes crearte una función auxiliar que convierta de grados a radianes.

(-- Fichero no encontrado --)


Apartado 7.9.3a: Crea un programa que escriba la raíz cuadrada de 10 y muestre la cantidad de cifras que se han escrito en pantalla. (Pista: mira el valor devuelto por "printf").

(-- Fichero no encontrado --)


Apartado 7.10a: Crear una función que calcule el valor de elevar un número entero a otro número entero (por ejemplo, 5 elevado a 3 = 53 = 5 •5 • 5 = 125). Esta función se debe crear de forma recursiva.

(-- Fichero no encontrado --)


Apartado 7.10b: Como alternativa, crear una función que calcule el valor de elevar un número entero a otro número entero de forma NO recursiva (lo que llamaremos "de forma iterativa"), usando la orden "for".

(-- Fichero no encontrado --)


Apartado 7.10c: Crear un programa que emplee recursividad para calcular un número de la serie Fibonacci (en la que los dos primeros elementos valen 1, y para los restantes, cada elemento es la suma de los dos anteriores).

(-- Fichero no encontrado --)


Apartado 7.10d: Crear un programa que emplee recursividad para calcular la suma de los elementos de un vector.

(-- Fichero no encontrado --)


Apartado 7.10e: Crear un programa que emplee recursividad para calcular el mayor de los elementos de un vector.

(-- Fichero no encontrado --)


Apartado 7.10f: Crear un programa que emplee recursividad para dar la vuelta a una cadena de caracteres (por ejemplo, a partir de "Hola" devolvería "aloH").

(-- Fichero no encontrado --)


Apartado 7.10g: Crear, tanto de forma recursiva como de forma iterativa, una función diga si una cadena de caracteres es simétrica (un palíndromo). Por ejemplo, \"DABALEARROZALAZORRAELABAD\" es un palíndromo.

(-- Fichero no encontrado --)


Apartado 7.10h: Crear un programa que encuentre el máximo común divisor de dos números usando el algoritmo de Euclides: Dados dos números enteros positivos m y n, tal que m > n, para encontrar su máximo común divisor, es decir, el mayor entero positivo que divide a ambos: - Dividir m por n para obtener el resto r (0 = r < n) ; - Si r = 0, el MCD es n.; - Si no, el máximo común divisor es MCD(n,r).

(-- Fichero no encontrado --)


Apartado 9.5a: Crear una función que calcule las dos soluciones de una ecuación de segundo grado (Ax2 + Bx + C = 0) y devuelva las dos soluciones como parámetros.

(-- Fichero no encontrado --)


Apartado 9.8a: Mejorar la versión de la agenda que leía todos los datos al principio de la ejecución y guardaba todos los datos cuando terminábamos su uso (apartado 6.4). Esta nueva versión deberá estar preparada para manejar hasta 1000 fichas, pero sólo reservará espacio para las que realmente sean necesarias.

(-- Fichero no encontrado --)


Apartado 9.9a: Crear un programa llamado "suma", que calcule (y muestre) la suma de dos números que se le indiquen como parámetro. Por ejemplo, si se teclea "suma 2 3" deberá responder "5", y si se teclea "suma 2" deberá responder "no hay suficientes datos.

(-- Fichero no encontrado --)


Apartado 9.9b: Crear una calculadora básica, llamada "calcula", que deberá sumar, restar, multiplicar o dividir los dos números que se le indiquen como parámetros. Ejemplos de su uso sería "calcula 2 + 3" o "calcula 5 * 60".

(-- Fichero no encontrado --)


Apartado 9.10a: Crea una "pila de enteros", que permitirá añadir un nuevo número (lo que llama¬remos "apilar") o bien extraer el número que se encuentra en la parte más alta de la pila ("desapilar"). En una primera aproximación, usa un array para guardar los datos.

(-- Fichero no encontrado --)


Apartado 9.10b: Crea una nueva versión de la "pila de enteros", que utilice memoria dinámica.

(-- Fichero no encontrado --)


Apartado 9.10c: Crea una "cola de enteros", que permitirá añadir un nuevo número al final de la cola (lo que llama¬remos "encolar") o bien extraer el número que se encuentra al principio de la cola ("desencolar"). En esta primera aproximación, usa un array para guardar los datos.

(-- Fichero no encontrado --)


Apartado 9.10d: Crea una nueva versión de la "cola de enteros", que utilice memoria dinámica.

(-- Fichero no encontrado --)


Apartado 9.10e: Implementa una lista doble enlazada que almacene números enteros.

(-- Fichero no encontrado --)


Apartado 10.4a: Crea un menú para MsDos que muestre varias opciones en el centro de la pantalla, y el reloj en la parte superior derecha de la pantalla. Mientras el usuario no pulse una tecla, el reloj debe actualizarse continuamente.

(-- Fichero no encontrado --)


Apartado 10.4b: Crea, tanto para MsDos como para Linux, un "protector de pantalla" que muestre tu nombre rebotando en los laterales de la pantalla. Deberá avanzar de posición cada segundo.

(-- Fichero no encontrado --)


Apartado 10.5.1a: Crea (o busca en Internet) una imagen de fondo de tamaño 800x600 que represente un cielo negro con estrellas, y tres imágenes de planetas con un tamaño menor (cercano a 100x100, por ejemplo). Entra a modo gráfico 800x600 con 24 bits de color usando SDL, dibuja la imagen de fondo, y sobre ella, las de los tres planetas. El título de la ventana deberá ser "Planetas". Las imágenes deberán mostrarse durante 7 segundos.

(-- Fichero no encontrado --)


Apartado 10.5.2a: Amplía el ejercicio anterior, añadiendo la imagen de una nave espacial, que deberá moverse cada vez que el usuario pulse una de las flechas del cursor. Ya no se saldrá al cabo de varios segundos, sino cuando el usuario pulse la tecla ESC.

(-- Fichero no encontrado --)


Apartado 10.5.3a: Amplía el ejercicio anterior, para que la imagen de la nave espacial tenga el contorno transparente (y quizá también alguna zona interior).

(-- Fichero no encontrado --)


Apartado 10.5.3b: Crea una imagen que contenga varias letras (al menos H, O, L, A), y úsala para escribir las frases HOLA y OH en modo gráfico con SDL.

(-- Fichero no encontrado --)


Apartado 10.5.4a: Amplía el ejercicio de la nave, para que emplee un doble buffer que permita evitar parpadeos.

(-- Fichero no encontrado --)


Apartado 10.5.5a: Amplía el ejercicio de la nave, para que emplee tenga una función "buclePrincipal", que siga la apariencia de un bucle de juego clásico, llamando a funciones con los nombres "comprobarTeclas", "dibujarElementos", "moverEstrellas", "mostrarPantallaOculta". Existirán algunas estrellas, cuya posición cambiará cuando se llame a "moverEstrellas" y que se dibujarán, junto con los demás componentes, al llamar a en "dibujarElementos". Al final de cada "pasada" por el bucle principal habrá una pausa de 20 milisegundos, para que la velocidad del "juego" no dependa del ordenador en que se ejecute.

(-- Fichero no encontrado --)


Apartado 10.5.5b: Ampliar el ejercicio anterior, para que también exista un "enemigo" que se mueva de lado a lado de la pantalla.

(-- Fichero no encontrado --)


Apartado 10.5.5c: Ampliar el ejercicio anterior, para que haya 20 "enemigos" (un array) que se muevan de lado a lado de la pantalla.

(-- Fichero no encontrado --)


Apartado 10.5.5d: Ampliar el ejercicio anterior, para añadir la posibilidad de que nuestro personaje "dispare".

(-- Fichero no encontrado --)


Apartado 10.5.5e: Ampliar el ejercicio anterior, para que si un "disparo" toca a un "enemigo", éste deje de dibujarse.

(-- Fichero no encontrado --)


Apartado 10.5.5f: Ampliar el ejercicio anterior, para que la partida termine si un "enemigo" toca a nustro personaje.

(-- Fichero no encontrado --)