Document

Anuncio
Universidad Rafael Urdaneta
Facultad de Ingeniería - Escuela de Ingeniería de Computación
Cátedra: Programación I – Laboratorio - Semestre 2012-1 (Modelo de Prueba)
Profesor: Jaime Soto
Cédula
Nombre
:
:
1.- Cuantos bytes se requieren para almacenar los datos a, b, c y d (cada uno y el total): [3]
a- 32000
b.- “Udon Perez”
c.- arreglo*10+; el valor del elemento 7 es ‘S’ ( listado*7+=’S’)
d.- registro listado[3]
El tipo de dato registro es el siguiente:
typedef struct {
int dato;
nombre[20];
float valor;
} registro;
Solución:
a.- int.
2 bytes
b.- char.
10 bytes
c.- char
10 bytes
d.- registro es un nuevo tipo de dato. Este dato está conformado por tres tipos de datos: int de 2 bytes, char de
20 bytes y un float de 4 bytes para un total de 26 bytes. En vista de que el arreglo listado tiene 3 elementos y
cada elemento requiere 26 bytes, el total de ese arreglo es 26 x 3 = 78.
El total de los cuatro (4) datos es 2 + 10 + 10 + 78 = 100 bytes.
2.- Se utiliza un arreglo bidimensional para representar un tablero de ajedrez. ¿Cuál es
la secuencia de posiciones o movimientos necesarios para que el caballo (C) se “coma”
al alfil (A)?. Debe representar los movimientos o posiciones con el arreglo y los
subíndices (tip: los valores de los subíndices del arreglo comienzan desde la esquina
superior izquierda) [4]
Solución:





A
C
Se debe definir un arreglo bidimensional de char: char ajedrez[8][8]
Las piezas se colocan desde la posición ajedrez[0][0] en la esquina superior izquierda
El caballo se encuentra en la posición ajedrez[7][2]; es decir, octava fila y tercera columna.
El alfil se encuentra en la posición ajedrez[0][6]; es decir, primera y séptima columna.
Estas movidas dan una posible solución:
o ajedrez[7][2]
o ajedrez[6][4]
o ajedrez[4][5]
o ajedrez[2][6]
o ajedrez[1][4]
o ajedrez[0][6]
3.- Elaborar una tabla con los valores de los datos al “imprimir” desde el inicio hasta el fin del algoritmo. [6]
valor = 2; contador = 0; arreglo[5];
mientras ( contador < 5 ) hacer
k = contador
arreglo[k] = valor * k
valor = valor + 2;
si (k > 2) entonces
arreglo[k] = arreglo[k] + valor
fin_si
imprimir( k, valor, arreglo[k] )
contador++
fin_mientras
Solución:
El contador aumenta después de “imprimir”
Ciclos
K
valor
arreglo[k]
Inicio
0
2
-
1
0
valor =valor+2=2+2= 4
Condiciones
contador < 5 verdadero
k > 2 falso. Primera “imprimir”.
arreglo[0]= valor x k = 2 x 0 = 0
contador < 5 verdadero
(k, valor, arreglo[0])=(0,4,0)
k > 2 falso
2
1
valor =valor+2=4+2= 6
arreglo[1]= valor x k = 4 x 1 = 4
contador < 5 verdadero
(k, valor, arreglo[1]) = (1,4,6)
k > 2 falso
3
2
valor =valor+2=6+2= 8
arreglo[2]= valor x k = 6 x 2 = 12
contador < 5 verdadero
(k, valor, arreglo[2]) = (2,8,12)
4
5
3
4
valor =valor+2=8+2=10
valor =valor+2=10+2=12
arreglo[3]= valor x k = 8 x 3 = 24
arreglo[3]= arreglo[3] + valor= 24 + 10 = 34
arreglo[3]= valor x k = 10 x 4 = 40
arreglo[3]= arreglo[3] + valor= 40 + 12 = 52
k > 2 verdadero
contador < 5 verdadero
(k, valor, arreglo[3])=(3,10,34)
k > 2 verdadero
contador < 5 verdadero
(k, valor, arreglo[4])=(4,12,52)
contador < 5 falso
5
(k, valor, arreglo[4])=(4,12,52)
Termina el ciclo
4.- Un automóvil viaja a una velocidad de 80 km/h. El automóvil debe realizar un recorrido de 150 km.
Almacene en un arreglo los kilómetros recorridos cada 10 minutos desde el inicio hasta el fin del viaje. (la
formula de la velocidad es v = d / t). Realice las siguientes operaciones: Calcular la dimensión o tamaño del
arreglo, definir o declarar el tipo de dato del arreglo y almacenar los valores requeridos. [4]
Solución:
 Se requiere despejar la formula v=d/t para obtener la distancia d=v * t
 Hay que convertir los minutos a horas. En 1 hora hay 60 minutos; es decir, que 10 minutos son aproximadamente
0.17 horas
 Se requiere un arreglo de tipo FLOAT de dimensión 11 ó 12 si quiere almacenar el último valor.
 float distancia[12];
Distancia
d = v * t = 80 * 0 = 0
d = v * t = 80 * (10/60) = 13,3
d = v * t = 80 * (20/60) = 26,7
d = v * t = 80 * (30/60) = 40,0
d = v * t = 80 * (40/60) = 53,3
d = v * t = 80 * (50/60) = 66,7
d = v * t = 80 * (60/60) = 80,0
d = v * t = 80 * (70/60) = 93,3
d = v * t = 80 * (80/60) = 106,7
d = v * t = 80 * (90/60) = 120,0
d = v * t = 80 * (100/60) = 133,3
d = v * t = 80 * (110/60) = 146,7
d = v * t = 80 * (120/60) = 160,0
Tiempo
(minutos)
Número
dato
Índice
0
10
20
30
40
50
60
70
80
90
100
110
120
1
2
3
4
5
6
7
8
9
10
11
12
0
1
2
3
4
5
6
7
8
9
10
11
distancia[0]= 13,3
distancia[1]= 26,7
distancia[2]= 40,0
distancia[3]= 53,3
distancia[4]= 66,7
distancia[5]= 80,0
distancia[6]= 93,3
distancia[7]= 106,7
distancia[8]= 120,0
distancia[9]= 133,3
distancia[10]= 146,7
distancia[11]= 160,0
5.- La Biblioteca de la URU requiere almacenar en un registro la información de los libros de programación.
Escriba un programa en lenguaje C que permita el ingreso de los primeros 100 libros e imprima un listado con
dicha información. Los datos solicitados para cada libro son: nombre del libro, nombre del autor, número ISBN,
año de publicación. Debe utilizar obligatoriamente un dato tipo struct. [8] Nota: debe escribir un código claro,
indentado y bien estructurado.
Solución:
#include <cstdlib>
#include <stdio.h>
using namespace std;
typedef struct {
char titulo[15];
char autor[15];
char isbn[15];
int anio;
} registro;
/*
*
*/
int main(int argc, char** argv) {
int
total = 2;
registro biblioteca[total];
/* Carga de libros */
for (int k=0; k < total; k++) {
printf("Introducir datos del libro #%2i:\n", k+1);
printf("Titulo libro
: ");
scanf("%15S" , &biblioteca[k].titulo);
printf("Nombre autor
: ");
scanf("%15S" , &biblioteca[k].autor);
printf("ISBN
: ");
scanf("%15S" , &biblioteca[k].isbn);
printf("Ano publicacion: ");
scanf("%4i" , &biblioteca[k].anio);
printf("\n");
}
/* Listado */
printf("LISTADO DE LIBROS\n");
for (int k=0; k < total; k++) {
printf("%S\t", biblioteca[k].titulo);
printf("%S\t", biblioteca[k].autor);
printf("%S\t", biblioteca[k].isbn);
printf("%4i\n", biblioteca[k].anio);
printf("\n");
}
return 0;
}
Descargar