Sei sulla pagina 1di 4

Universidad Nacional de Ingeniería

Facultad de Ciencias
Escuela Profesional de Ciencia de la Computación
Introducción a la Programación

Tercera Práctica Calificada


CC102-AB Ciclo: 2017-2
Normas:
1. El alumno entregará esta hoja de examen debidamente llenada con sus datos.
2. La solución de la prueba se guardarán en Escritorio, carpeta: ApellidoNombreCodigo (sin
espacios en blanco), la pregunta n se guardará en el archivo: n.c (n = 1, 2, ..).
3. No se permite: El uso de celulares, internet, USB, ingresar después de 15 min. de iniciado el
examen ni salir antes de la hora de finalización.
4. Todo acto anti-ético será amonestado y registrado en el historial del estudiante.

Apellidos : ______________________________ Nombres : _______________________________


Sección : ____ Grupo: ___

1. [5 ptos.] Defina una matriz arr[4][5], asigne 1 a cada elemento, luego multiplique i a cada fila de arr.
Salida:
Matriz inicial
11111
11111
11111
11111
Matriz cambiada
00000
11111
22222
33333

Sugerencia: Escriba las funciones del prototipo. UTILICE APUNTADORES!!!


#include <stdio.h>
void cargar (int *a, int m, int n); // Carga 1 en cada elemento de arr
void imprimir(int *a, int m, int n); // Imprime arr
void cambiar (int *a, int m, int n); // multiplica i a cada fila i de arr
void main(void){
int m=4, n = 5, arr[m][n], *a = &arr[0][0];
cargar(a, m, n);
printf("Matriz inicial\n");
imprimir(a, m, n);
cambiar(a, m, n);
printf("Matriz cambiada\n");
imprimir(a, m, n);
}

2. [5 ptos.] Generar el código cod de un estudiante de la UNI, cod es una cadena de caracteres con el formato:
AAAANNNNL, donde:
AAAA = Año de ingreso, ejemplo: 2017
NNNN = Puesto de ingreso, ejemplo: 34
L = Letra de validación de AAAANNNN: calculada en la función codigo( ):
Salida: Código: 20170034B
Sugerencia: Complete la función codigo( ):
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void codigo(char *cod, int a, int n);
void main(void){
int a=2017, n = 34; // datos de prueba
char cod[10];
codigo(cod, a,n);
printf("Código: %s\n", cod); // Salida: Código: 20170034B
}
void codigo(char *cod, int a, int n){
char abc[] = "ABCDEFGHJKLMNPQRSTUVWXYZ"; // no contiene I ni O
char L = abc[20170034%strlen(abc)-1] // = ‘B’
// completar
}

3. [5 ptos.] Escriba un programa que cuente el número de palabras en una cadena, ejemplo:
char c[] = "hola cómo estás Marvelí? "
Salida: 4 palabras

Sugerencia: Complete el programa:


#include<stdio.h>
int cantidad(char *c);
void main(void){
char c[] = "hola como estás Marvelí? ";
printf("%s\n", c);
printf("palabras = %d \n", cantidad(c));
}
int cantidad(char *pc){
// completar
}

4. [5 ptos.] Escriba un programa que tome el arreglo {1, 2, 3, 4, 5, 6, 7, 8}, y llame a una función que reciba
un puntero p al arreglo, de tamaño n y un número m para rotar los elementos del arreglo hacia la derecha
m posiciones, de modo que los números de la derecha aparezcan por la izquierda, ejemplo: m = 3
Salida:
Entrada: 1 2 3 4 5 6 7 8
Salida : 6 7 8 1 2 3 4 5

Sugerencia:
Use un segundo arreglo arr[] temporal
desplace en arr: for(i=0;i<n;i++) arr[(i+m)%n] = p[i];
Copie de arr : for(i=0;i<n;i++) p[i] = arr[i];

Secciones CD:

1. [5 ptos.] Defina una matriz arr[4][5], asigne 1 a cada elemento, luego sume i a cada fila de arr.
Salida:
Matriz inicial
11111
11111
11111
11111
Matriz cambiada
11111
22222
33333
44444

Sugerencia: Escriba las funciones del prototipo. UTILICE APUNTADORES!!!


#include <stdio.h>
void cargar (int *a, int m, int n); // Carga 1 en cada elemento de arr
void imprimir(int *a, int m, int n); // Imprime arr
void cambiar (int *a, int m, int n); // suma i a cada fila i de arr
void main(void){
int m=4, n = 5, arr[m][n], *a = &arr[0][0];
cargar(a, m, n);
printf("Matriz inicial\n");
imprimir(a, m, n);
cambiar(a, m, n);
printf("Matriz cambiada\n");
imprimir(a, m, n);
}

2. [5 ptos.] Verificar que el código cod = “20170034J” de un estudiante de la UNI: es correcto, para ello debe
verificar que la letra J cumple una condición.
Salida:
Si el código es correcto:
Código correcto
Año = 2017, puesto = 34, clave = B
Si el código es incorrecto:
Código incorrecto: 20170034B

Sugerencia: Complete la función valCod( ):


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int valCod(char *cod, int *anno, int *puesto, char *clave);
void main(void){
char cod[] = "20170034J", clave;
int anno, puesto;
if(valCod(cod, &anno, &puesto, &clave)){
printf("Código correcto\n");
printf("Año = %d, puesto = %d, clave = %c\n", anno, puesto, clave);
}
else printf("Código incorrecto: %s\n", cod);
}
int valCod(char *cod, int *anno, int *puesto, char *clave){
char abc[] = "ABCDEFGHJKLMNOPQRSTUVWXYZ"; // no contiene I ni O
// Debe verificar
‘J’ == abc[20170034%strlen(abc)-1] // ‘j’ es la letra del código
// completar
}

3.[5 ptos.] A”Mathematician’s Apology” es un ensayo escrito por el matemático británico G. H. Hardy en 1940.
Un extracto de texto ha sido codificado en cifrado (ver programa). La llave que te permite descifrar
consiste en restar cada carter (ASCII) del mensaje dos unidades. Si el caracter ASCII a descifrar fuese
0 o 1, su caracter descifrado serı́a 126 o 127, respectivamente. Implemente una función que descifre lo
que Hardy escribió y lo guarde en la cadena descifrado y luego lo muestre.
Salida: A mathematician
Sugerencia: complete la función descifrar( ):
#include <stdio.h>
#define lon 400
void descifrar(char * ent, char * sal);
void mostrar(char * p);
void main(){
char cifrado[lon] = "C\"ocvjgocvkekcp";
char descifrado[lon];
mostrar (cifrado);
descifrar (cifrado, descifrado);
mostrar (descifrado);
}
void descifrar(char * ent, char * sal){
// completar
}
void mostrar(char * p){
while (*p != ’\0’) printf("%c", *p++);
printf("\n");
}

4. [5 ptos.] Escribir un programa que rellene aleatoriamente utilizando solo números menores a 100 en un vector
de 15 espacios, muestre por medio de punteros los valores del vector, la dirección de memoria del
numero guardado en el espacio 15 y en el espacio 10
Ejemplo de Salida
25 7 89 72 80 80 35 67 23 74 97 2 14 1 18
Direccón en el espacio 15: 0x7ffff26ea798
Dirección en el espacio 10: 0x7ffff26ea784

Potrebbero piacerti anche