Los ejercicios se deben hacer dentro de JSLinux, y con el editor de texto vi
.
1 o 2 participantes.
1. limpiar
2. girar a la derecha
3. avanzar
1. limpiar
2. girar a la derecha
3. avanzar
1. limpiar
2. girar a la derecha
3. avanzar
1. limpiar
2. girar a la derecha
3. avanzar
FIN
El programa debe tener las funciones void pasos(void)
y main
. La función pasos
se encarga de imprimir solo lo siguiente:
1. limpiar
2. girar a la derecha
3. avanzar
void fecha(int a)
, para que muestre:Estamos en el 2000!
Estamos en el 2016!
Estamos en el 2999!
Queremos que 2000
, 2016
, 2999
sean parámetros reales de las llamadas a la función fecha
.
1 o 2 participantes.
Escribir un programa bool.c que tenga el main
siguiente:
main(){
int i;
for ( i = 0; i < 30 ; i = i + 1 )
if ( divisible_por_3(i) )
printf("%d es divisible por 3.\n", i);
}
Completar este programa con la función int divisible_por_3(int a)
que devuelve:
1
(uno) si su argumento es divisible por 30
(cero) sino.1 o 2 participantes.
Trabajamos en un archivo funciones.c nuevo.
int cuadrado(const int a)
que calcula la función matemática : x ↦ x2.Llamarla desde el main
sobre algun entero aleatorio entre -50 y 50:
main(){
int a;
srand(time(0));
a = (rand() % 101) - 50; /* a tiene un valor entre -50 y +50 */
printf("a vale %d\n", a);
printf("a^2 vale %d\n", cuadrado(a));
}
int absoluto(const int a)
que calcula la función matemática : x ↦ |x| (valor absoluto). Se puede hacer de la forma siguiente: si el parametro formal a es positivo, devolver a, sino, devolver − a.Llamarla desde el main:
int mayor(const int a, const int b)
que calcula la función matemática (x, y) ↦ {x si x ≥ y, sino y}.Llamarla desde el main:
int b;
....
b = rand() %100; /* b tiene algun valor entre 0 y 99 */
...
printf("mayor(a, b) vale %d\n", mayor(a,b) );
int mayor_abs(const int a, const int b)
que calcula el mayor del valor absoluto de dos enteros: (x, y) ↦ |x| si |x| ≥ |y|, sino |y|. Definir mayor_abs
haciendo llamadas a las funciones existentes mayor
y absoluta
, sin usar condiciones.1 o 2 participantes.
En un programa cadenas.c:
Escribir la función int es_minuscula(const char c)
que devuelve 1 si el carácter dado es dentro del rango ‘a’ hasta ‘z’, y 0 sino.
Escribir la función int es_mayuscula(const char c)
que devuelve 1 si el carácter dado es dentro del rango ‘A’ hasta ‘Z’, y 0 sino.
Escribir la función char cambiar_char(const char c)
que, dada una minúscula, devuelve la correspondiente mayúscula, y vice versa. Si es dada otro carácter, devuelve el mismo carácter.
Escribir la función void cambiar_cadena(char cadena[])
que aplica carácter por carácter la función cambiar_char
a una cadena.
Escribir un programa cadenas.c que lee una cadena dada por el usuario le aplica cambiar_cadena
y la muestra de nuevo:
main(){
char entrada[100];
gets(entrada); // gets acepta texto con espacios
cambiar_cadena(entrada);
printf("%s\n"entrada);
}
El resultado esperado es:
main
1 o 2 participantes.
La función main
tiene parámetros. Se pueden acceder escribiendo el main
así:
Tenemos acceso a la variable argv
que es un arreglo de elementos de tipo char *
, es decir, es un arreglo de cadena de carácteres:
argv[0]
es la cadena que representa el nombre que tiene el programa cuando lo ejecutamosargv[1]
es la primer argumento del programa (si existe)argv[2]
es la segundo argumento del programa (si existe)Cuidado que argv[i]
no está siempre definido para valores i > 0.
argc
. Esta nos indica cuántos argumentos fueron dados a nuestro programa.rot13
Hacer un programa rot13.c que pide una frase al usuario, luego la codifica usando el algoritmo rot13
, e imprime la versión codificada.
Implementar ese algoritmo rot13
en una función void rot13(char cadena[])
.
rot13
es un algoritmo de codificación de mensajes muy sencillo, que permite disfrazar un mensaje mediante substitución de carácteres.
“rot13” significa “rotar 13 posiciones”, y consiste en reemplazar cada letra por la letra que está 13 posiciones adelante en el alfabeto. El resto de los caracteres no es modificado.
Por ejemplo, el texto siguiente:
En el capitulo 45 de Games of Cards, muere Kenny.
es convertido en:
Ra ry pncvghyb 45 qr Tnzrf bs Pneqf, zhrer Xraal.
rot13
es simétrico. Es decir que al mismo tiempo sirve para codificar y para decodificar un mensaje.
Pueden probar un convertidor en línea rot13.
Implementar este programa pidiendo una frase al usuario con scanf
. Usar por lo menos una función aparte del main
(llamada rot13
). Se pueden definir más funciones para ayudar a definir rot13
.
Hacer una versión modificada de este programa donde no se usa scanf
si el programa recibe una frase como parámetro. Es decir, si se ejecuta el programa desde la linea de comando de la forma siguiente: