You are on page 1of 4

Universidad Nacional de Ingeniería

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

Cuarta Práctica Calificada


CC102-AB Ciclo: 2017-2

1. [5 ptos.] Escriba un programa que solicite un entero n>0, luego solícita n enteros que los alojará en
memoria dinámica, finalmente los imprime, ejemplo de salida:
Cuantos numeros va a ingresas ?: 2
Número 1: 10
Número 2: 20
Números ingresados:
Número 1: 10
Número 2: 20

2. [5 ptos.] Escriba un programa que reserve memoria dinámica para 3 matrices de enteros: A[2][3], B[3]
[2] y c[2][2]. Asigne datos: elementos de A = 1, elementos de B = 2, C = A x B. Imprima A, B
y C, ejemplo de salida:
Matriz A
1 1 1
1 1 1
Matriz B
2 2
2 2
2 2
Matriz C
6 6
6 6
Sugerencia: Complete el programa:
#include<stdio.h>
#include<stdlib.h>
int * espacio(int m, int n);
void asigna(int *pa, int m, int n, int k);
void por(int *pa, int *pb, int *pc, int k, int m, int n);
void imp(int *p, int m, int n);
void main(void){
int *pa, *pb, *pc;
int k=2, m=3, n=2;
// complete las operaciones
}
int * espacio(int m, int n){
// reserva espacio para m*n enteros
}
void asigna(int *pa, int m, int n, int k){
// asigna el valor k a todos los elementos del espacio de m*n elementos
}
void por(int *pa, int *pb, int *pc, int k, int m, int n){ // C = A x B
int i, j, l;
int suma;
for(i=0; i<k; i++)
for(j=0; j<n; j++){
suma=0;
for(l=0; l<m; l++) suma += pa[i*m+l] * pb[l*n+j];
*pc++ = suma;
}
}
void imp(int *p, int m, int n){
// imprimir un espacio de m*n enteros en formato de matriz
}

3. [5 ptos.] El sueldo mensual de un vendedor de autos es el sueldo base más su comisión; dicha comisión
surge del producto de la tasa del mes por la cantidad de autos vendidos. Implemente una
estructura "vendedor" cuyos miembros sean una cadena de caracteres (para almacenar el
nombre) y un tipo de dato numérico (para almacenar el sueldo base). La tasa es de 200
soles/auto vendido y se vende menos de 10 autos/vendedor, simule este dato. Calcule el
sueldo de dos vendedores estrella: ingrese el nombre de pila y el sueldo base de cada
vendedor; finalmente calcule el total de pagos. Ejemplo de salida:
Datos de vendedores[1]:
Nombre : AA
Sueldo base: 200
Datos de vendedores[2]:
Nombre : BB
Sueldo base: 300

Nombre Base Comisión Pago


AA 200.00 1600.00 1800.00
BB 300.00 800.00 1100.00
Total pagos: 2900.00

4. [5 ptos.] Se tiene una tabla de profesores con los siguientes datos:


Nombre Sueldo Edad // estructura: profe
Juan 1000 27
Pedro 4000 40
Carlos 120 1200
Martín 2000 21
Defina un arreglo de estructuras y asigne los datos anteriores, luego suba los sueldos de los
profesores al doble, excepto a Carlos, quien debe ganar 20000 y corregir su edad a 25. Reporte la
tabla antes y después de la actualización. Ejemplo de salida:
Datos iniciales
(la tabla anterior)
Datos actualizados:
Nombre Sueldo Edad
Juan 2000 27
Pedro 8000 40
Carlos 20000 25
Martín 4000 21
Sugerencia: para identificar el caso especial, puede usar:
#include<string.h>
char carlos[] = "Carlos", dato[7]; // define variables
strncpy(dato, profe[i].nombre, 6) // asigna valor a dato para la fila i
if(strcmp(carlos, dato)==0) // identifica el caso especial

CC102-CD Ciclo: 2017-2

1. [5 ptos. ] Escriba un programa que solicite las filas m y columnas n de una matriz, alójela en memoria
dinámica y asigne los valores 1, 2, … m*n a los elementos de la matriz, finalmente imprime.

2. [5 ptos. ] Escriba un programa que reserve memoria dinámica para 2 matrices de enteros: A[2][3] y
B[3][2]. Asigne datos: elementos de A = {1, 2, 3, 4, 5, 6}; B = transpuesta de A. Imprima A y
B, ejemplo de salida:
Matriz A
1 2 3
4 5 6
Matriz B
1 4
2 5
3 6
Sugerencia: Complete el programa:
#include<stdio.h>
#include<stdlib.h>
int * espacio(int m, int n);
void asigna(int *pa, int m, int n);
void trans(int *pa, int *pb, int m, int n);
void imp(int *p, int m, int n);
void main(void){
int *pa, *pb, *pc;
int m=2, n=3;
// complete las operaciones
}
int * espacio(int m, int n){
// reserva espacio para m*n enteros
}
void asigna(int *pa, int m, int n){
// asigna valores 1, 2, .. a un espacio de m*n enteros
}
void trans(int *pa, int *pb, int m, int n){
int i, j;
for(i=0; i<n; i++)
for(j=0; j<m; j++) *pb++ = pa[j*n+i] ;
}
void imp(int *p, int m, int n){
// imprime un espacio de m*n enteros en formato de matriz
}

3. [5 ptos. ]Una tienda está dando el 10% de descuento; calcule las compras de 2 compradores estrella y el
total comprado por ellos. Para eso: solicite los datos: nombre y compra en soles. Guarde los datos
de cada comprador en una estructura comprador en dos campos: nombre y compra . Ejemplo de
salida:
Pedido del comprador[1]:
Nombre: aa
Compra: 200
Pedido del comprador[2]:
Nombre: bb
Compra: 300

Nombre compra Descuento Factura


aa 200.00 20.00 180.00
bb 300.00 30.00 270.00
Total facturas: 450.00

4. [5 ptos. ] Se tiene una tabla de profesores con los siguientes datos:


Nombre Sueldo Edad
Juan 1100 27
Pedro 4300 40
Carlos 2010 70
Martín 3100 21
Defina un arreglo de estructuras y asigne los datos anteriores, luego actualice los sueldos de
acuerdo a:
cuadruple: sueldo < 2000
triple : 2000 <= sueldo < 3000
doble : 3000 <= sueldo < 4000
suba la mitad en otro caso
Ejemplo de salida:
Datos iniciales
(la tabla anterior)

Datos actualizados:
Nombre Sueldo Edad
Juan 4400 27
Pedro 6450 40
Carlos 6030 70
Martín 6200 21

You might also like