Você está na página 1de 3

Programación – Trabajo Práctico 1 Fecha: 09 de agosto de 2018

Fecha de entrega: 16 de agosto de 2018

Tema 1
Dado un número 𝑛, imprimir en pantalla sus factores primos de la siguiente manera:
150 = 21 ∗ 31 ∗ 52

Considerando como ejemplo el valor de 𝑛 = 150.

La salida sería así:

Tema 2
Una empresa quiere transmitir datos mediante la línea telefónica, pero les preocupa que sus teléfonos
pudieran estar intervenidos. Todos sus datos se transmiten como enteros de cuatro dígitos. A usted le pidieron
que escriba un programa que encripte sus datos de manera que se transmitan de forma más segura. El
programa debe leer un entero de cuatro dígitos y encriptar la información de la siguiente manera:

• Remplace cada dígito con el residuo de la división entre 10 de la suma de dicho dígito más 7.
• Posteriormente, intercambie el primer dígito con el tercero, e intercambie el segundo dígito con el
cuarto.
• Luego, despliegue el entero encriptado.

La ejecución del programa sería así:

Tema 3: “Par o Impar”


Hay varias versiones de “par o impar”, y es habitualmente jugado por los competidores para decidir cuestiones
aleatorias (como “¿quién codificará este problema?”). En una de las versiones, para dos jugadores, el juego
comienza con cada jugador eligiendo pares o impares. Luego se cuenta hasta tres. En ese momento, cada
jugador muestra un número de dedos con una mano. Si la suma de los dedos de ambas manos es un número
par, entonces la persona que eligió “pares” gana. Si la suma de los dedos de ambas manos es un número impar,
entonces la persona que eligió “impares” gana.

Juan y María jugaron varios juegos de pares o impares. En cada juego Juan eligió impares (y, en consecuencia,
María “escogió” pares). Durante la partida cada jugador escribió, en pequeñas tarjetas, cuántos dedos él/ella
mostró, usando una tarjeta para cada juego (María utiliza tarjetas azules, mientras Juan utiliza tarjetas rojas).
Su objetivo era ser capaz de volver a comprobar los resultados después de mirar las cartas para cada juego. Sin
embargo, al final del día, Juan dejó caer el mazo de cartas, y aunque podían separar las tarjetas de color, las
mismas estaban (muy) posiblemente desordenadas.

Teniendo en cuenta el conjunto de los números escritos en las tarjetas rojas y azules, debe escribir un
programa para determinar el número mínimo de partidos que con seguridad María ganó.

Entrada del programa: la entrada contiene varios casos de prueba. La primera línea de un caso de prueba
contiene un entero 𝑁 que representa el número de juegos jugados (1 ≤ 𝑁 ≤ 100). La segunda línea de un caso
de prueba contiene 𝑁 enteros 𝑋𝑖 , indicando el número de dedos mostrados por María en cada uno de los
juegos (0 ≤ 𝑋𝑖 ≤ 5, para 1 ≤ 𝑖 ≤ 𝑁). La tercera línea de un caso de prueba contiene 𝑁 enteros 𝑌𝑖 , indicando el
número de dedos mostrados por Juan en cada uno de los juegos (0 ≤ 𝑌𝑖 ≤ 5, para 1 ≤ 𝑖 ≤ 𝑁). El fin de la
entrada está indicado por 𝑁 = 0.
Salida del programa: Para cada caso de prueba, su programa debe escribir una línea conteniendo un entero,
indicando el número mínimo de juegos que con seguridad María ganó.

Ejemplo de entrada Ejemplo de salida

3 0
1 0 4 3
3 1 2
9
0 2 2 4 2 1 2 0 4
1 2 3 4 5 0 1 2 3
0

Tema 4: “Direcciones IP”


Supongamos que usted está leyendo secuencias de bytes desde cualquier dispositivo, representando las
direcciones IP. Su tarea es la de convertir a 32 caracteres una larga secuencia de '1 s 'y '0 s' (bits) para el
formato decimal con puntos. El formato decimal con puntos para obtener una dirección IP se forma mediante
la agrupación de 8 bits a la vez y convirtiendo la representación binaria en una representación decimal.
Cualesquiera 8 bits son una parte válida de una dirección IP. Para convertir números binarios en números
decimales se debe recordar que ambos son sistemas numéricos posicionales, donde las primeras ocho
posiciones de los sistemas binarios son:

Entrada del programa: la entrada tendrá un número 𝑁 (1 ≤ 𝑁 ≤ 9) en su primera línea representando el


número de direcciones IP binarias a convertir. Le seguirán 𝑁 líneas.

Salida del programa: La salida deberá tener N líneas con una dirección IP decimal con puntos. La misma se
forma agrupando 8 bits y convirtiendo la representación binaria a una representación decimal.

Ejemplo de entrada Ejemplo de salida

4 0.0.0.0
00000000000000000000000000000000 3.128.255.255
00000011100000001111111111111111 203.132.229.128
11001011100001001110010110000000 80.16.0.1
01010000000100000000000000000001

Observación: no se pueden usar vectores.

Consejo: Para verificar que los casos de prueba presentados produzcan la salida pedida (Temas 3 y 4), podría
hacerse lo siguiente para no escribir los datos de entrada en cada ejecución:

• Compilar el programa en el IDE (sea Codeblocks o Dev-C++). En nuestro ejemplo de muestra, el archivo
es Tema4.exe.
• Copiar el ejemplo de entrada en un archivo de texto y guardarlo en el mismo directorio que el archivo
ejecutable (.exe) generado en el paso anterior. Por ejemplo, este archivo puede llamarse in.txt:

• Abrir una ventana de línea de comandos (suponiendo que se usa Windows), y situarse en el directorio
donde se encuentran el ejecutable y el archivo de texto creado.
• Escribir lo siguiente: nombre_ejecutable.exe<archive_texto.txt (en nuestro ejemplo, sería
Tema4.exe<in.txt). Esto hace que el programa tome como entrada el contenido del archivo de texto
(como si fuesen datos introducidos por teclado). Con esto nos evitamos introducir los datos por teclado
cada vez que ejecutemos el programa.
Modelo de encabezado para cada programa:

/*Ejercicio X. Integrantes:
Nombre 1
Nombre 2
Nombre 3
*/
#include<stdio.h>
char mayusculas(char c);

int main(){
char c;
printf("Ingrese el caracter: \n");
scanf("%c",&c);
c=mayusculas(c);
printf("El nuevo caracter es: %c",c);
return 0;
}

char mayusculas(char c){


if((c>='a')&&(c<='z')) return (c+('A'-'a'));
else return c;
}

Você também pode gostar