Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad de Ciencias
Escuela Profesional de Ciencia de la Computación
Introducción a la Programación
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
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
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
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
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