Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios:
1. Se pide hacer un programa en C, tal que permita leer una cadena de caracteres(string) de hasta 20 posiciones
e imprimir la cadena al revés: Ejemplo: “casa”, deberá imprimirse “asac”.
FIN }
Comentario: La forma de almacenar el array leyéndolo del teclado es mediante la función scanf(). Luego,
mediante un bucle while se determina el número de letras. La forma de chequear la condición de final del bucle
es por reconocimiento del carácter \0 que tienen todas las cadenas de caracteres al final.
2. Se pide hacer un programa en C, tal que permita leer una cadena de caracteres(string) de hasta 20 posiciones
e imprimir cuantas vocales tiene.
La anterior solución, no tiene en cuenta las vocales en mayúsculas “A”, “E”, “I”, “O”, “U”. Construir una nueva
solución que las tenga en cuenta.
Ejercicio: Se dice que un rey aburrido porque no tenia guerras, llamo a un inventor para que le hiciera un juego
de guerra. De esta petición nació el conocido juego del ajedrez. El Rey después de utilizar el juego, se emociono
mucho y le dijo al inventor que le dijera como pagarle. El inventor le dijo al Rey, mirando el tablero de ajedrez,
que es de 8x8 cuadros, por favor coloque en el primer cuadro un grano de trigo de la cosecha del reino, en el
segundo cuadro el doble del anterior y así sucesivamente hasta completar los 64 cuadros.
Se pide construir un algoritmo tal que muestre para cada cuadro cuantos granos debió el Rey colocar. Así:
ContadorGranosTrigo ß 1
Imprima i , “ “ , ContadorGranosTrigo
ContadorGranosTrigo ß ContadorGranosTrigo * 2
Proximo i
FIN
switch (<variable>)
{
case 1: // código que se ejecuta si elige la opción 1
instrucción 1;
instrucción 2;
instrucción…. n
break;
SOLUCIÓN
1. Objetivos: Determinar qué día del año es un día definido por el número de día y número de mes.
2. Condicionantes: Año bisiesto o no bisiesto. Conteo a partir del cero (¿Existe día cero?) o del uno. Viabilidad
del dato de partida (p. ej. un número de mes igual a 15 no es viable).
4. Método o estrategia de resolución: Un problema puede tener distintas vías para ser resuelto. Vamos a enfocarlo
hacia una resolución usando la instrucción Según (Caso) Hacer.
En primer lugar y como variantes globales contemplaremos dos posibilidades: datos correctos o datos incorrectos.
Se considerarán datos correctos aquellos en los que el número de día esté comprendido entre 1 y 31 y el número
de mes entre 1 y 12. Se podría afinar más restringiendo mes a mes las posibilidades (p. ej. en el mes de febrero
no admitir un número de día que fuera 30, ya que ese valor es inviable), cosa que no haremos para simplificar el
ejercicio.
Por otro lado, para el cálculo del día del año se considerarán 12 casos posibles, que son los doce meses del año.
Para cada mes, se calculará el día del año como el día del mes correspondiente más el total de días acumulados
correspondientes a los meses anteriores. Por ejemplo: el día del año que es el día 15 del mes 2 (15 de febrero) se
calcula como 15 + 31 siendo 31 el acumulado de días de los meses anteriores.
5. Resultados a obtener.: Día del año expresado como un valor comprendido entre 1 y 365.
Pseudocódigo:
1 Inicio [Cálculo del día del año ejemplo aprenderaprogramar.com]
2 Mostrar “Introduzca el número del día y número del mes”
3 Pedir NDia, Nmes
4 Si Ndia>= 1 y Ndia <= 31 y Nmes >= 1 y Nmes <= 12 Entonces
Según Nmes Hacer
Caso, = 1
DDA = NDia [DDA es día del año]
Caso, = 2
DDA = NDia + 31
Caso, = 3
DDA = NDia + 31 + 28
Caso, = 4
DDA = NDia + 31 + 28 + 31
Caso, = 5
DDA = NDia + 120
Caso, = 6
DDA = NDia + 151
Caso, = 7
DDA = NDia + 181
Caso, = 8
DDA = NDia + 212
Caso, = 9
DDA = NDia + 243
Caso, = 10
DDA = NDia + 273
Caso, = 11
DDA = NDia + 304
Caso, = 12
DDA = NDia + 334
FinSegún
Mostrar “El ”, NDia, “del ”, Nmes, “es el día ”, DDA, “del año”
SiNo
Mostrar “Datos proporcionados no válidos”
FinSi
5 Fin
Esta “sentencia” sirve para crear muchas condiciones de igualdad. Es útil por ejemplo para la creación de un
menú. Imagínese que tenemos un menú con cuatro (4) opciones. Púes con el switch podemos hacer que
dependiendo de la opción que elijas se ejecute un código u otro.
Y así con todas las opciones que queramos introducir. Si el usuario no elige una opción del 1 al 4, entonces se
podría ejecutar otro código diferente; lo haremos a través de un "default" que se pondrá al final de todas las
opciones, como vamos a ver en el ejemplo práctico de C.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
switch(num)
{
case 1: //Si has elegido el 1
printf("num es igual a 1. \n");
break;
case 2: //Si has elegido el 2
printf("num es igual a 2. \n" );
break;
case 3: //Si has elegido el 3
printf("num es igual a 3. \n" );
break;
case 4: //Si has elegido el 4
printf("num es igual a 4. \n" );
break;
//AsÌ con todos los casos que queramos...
default: //Si has elegido otro numero distinto
printf("No elegiste un numero del 1 al 4. \n" );
}
system("PAUSE");
}
Es necesario poner el "break" después de cada "case", ya que esto hará que una vez se ejecute el código que hay
en ese "case" el programa se salga del switch, saltándose el resto de código que tenga por debajo del "break".
Lo que hacemos es crear la variable "num", pedir al usuario que introduzca un número y lo asignamos a la variable
"num". Luego switch comprueba que número ha sido el introducido por el usuario, y dependiendo del número,
nos muestra una cosa u otra por pantalla.
Este tipo de sentencias solo vale para igualdades, es decir, no podemos poner en un case: num < 5.
Realmente case 1, significa: si num es igual a 1... y así con todas las opciones.
EJEMPLOS
Ejemplo de uso de la instrucción “switch” en C. Programa que lee dos números y una operación y realiza la
operación entre esos números.
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int A,B, Resultado;
char operador;
printf( "Introduzca un numero:");
scanf(“%i”, &A);
printf( "\n Introduzca otro numero:");
scanf(“%i”, &B);
printf("\n Introduzca un operador (+,-,*,/):");
scanf(“%c”, &operador);
Resultado = 0;
switch (operador)
{
case '-' : Resultado = A - B;
break;
case '+' : Resultado = A + B;
break;
case '*' : Resultado = A * B;
break;
case '/' : Resultado = A / B; //suponemos B!=0
break;
default : printf(“\n”, "Operador no valido");
}
printf("El resultado es: ");
printf("%i", Resultado);
system("pause");
}
Problema 1: Diseñe un algoritmo que, dado un número real que entra como dato, nos indique si está contenido
dentro de los límites predeterminados. El límite inferior es de 100 y el superior de 200.
Encuentre todas las ternas de Pitágoras para el cateto opuesto, cateto adyacente e hipotenusa, todos ellos no
mayores de 500.
Ejercicios propuestos
Problema 1: Escribir un programa que, dado un número real cualquiera, encuentre su valor absoluto. El valor
absoluto de un número x es igual a x si x > 0, y a -x si x es menor o igual a 0. Por ejemplo, el valor absoluto de
0.5 es 0.5, valor absoluto de -3 es 3.
Problema 2: En un videoclub se ofrece la promoción de llevarse tres películas por el precio de las dos más
baratas. Haga un programa que, dados los tres precios de las películas, determine la cantidad a pagar.
Problema 4: Considere siguiente proceso repetitivo para un número entero dado: si el número es 1, el proceso
termina. De lo contrario, si es par se divide entre 2, y si es impar se multiplica por 3 y se le suma 1. Si empezamos
con 6, por ejemplo, obtendremos la sucesión de números 6, 3, 10, 5, 16, 8, 4, 2, 1. La conjetura de Collatz dice
que, a partir de cualquier número inicial, la sucesión obtenida siempre termina en 1.
Escriba un programa que permita verificar la conjetura de Collatz para cualquier entero dado, y que imprima la
secuencia correspondiente.
Restricciones: Debe utilizar estructuras de selectivas e iterativas.