Sunteți pe pagina 1din 6

Deber

Fundamentos de Programación - Segundo Bimestre

1. Introducción
Escriba un menu recursivo que le permita elegir el número de ejercicio hasta
que usted digite la opción salir.
Escriba funciones por ejemplo ejercicio1().
El deber será enviado hasta el dı́a martes 10 de Julio de 2018, 6h59 am. Si el
deber es entregado fuera de plazo usted tendrá la calificación de cero. El deber
será evaluado de acuerdo a la nota de la prueba.

2. Ejercicios
1. La norma del vector X se define como:

||X|| = (x21 + x22 + ... + x2N )1/2

Escriba la función norma.

2. Crear una función que tome como dato de entrada un número entero y
que guarde en un vector el número transformado de la siguiente manera:
Divida el número entero para 2 hasta que el dividendo sea menor que
el divisor.
Ej: número entero: 26
26 /2
0 13 /2
1 6 /2
0 3 /2
1 1
Guarde los datos en un vector. Imprima el vector.

1 1 0 1 0

3. Dada una matriz NxN extraiga la matriz triangular superior.


4. Dada una matriz NxN extraiga la matriz triangular inferior.
5. Dada una matriz NxN contar cuantos números pares tiene la matriz.

1
2 Ejercicios 2

6. Escribir una función que tenga 3 datos de entrada: (una matriz de números
enteros, entero 1, entero 2 ), la función busca dentro de la matriz si entero
1 existe y reemplaza el número por el valor de entero 2. Este proceso se
repite si en la matriz aparece varias veces el número entero 1.
7. Dada una matriz NxN, intercambiar las diagonales de la matriz.
 
1 2 3
4 5 6
7 8 9
 
3 2 1
4 5 6
9 8 7

Crear una función y usar las variables de entrada que sean necesarias,
imprimir la matriz original y la intercambiada.
8. Sea una matriz M x N, sumar los elementos de la matriz que se encuentran
en la posición (q,k) cuya suma (q+k) sea par.
9. Dada una matriz M x N. Sumar los elementos impares por columnas.
Guarde los datos en un vector. Imprimir el vector.
10. Si f es una función continua en el intervalo [−1, 1], entonces el área bajo
la curva f se puede calcular usando la siguiente regla
N
X
A= wN,k f (xN,k )
k=1

Sea N el número de nodos o puntos. La regla es exacta para funciones


polinomiales de grado menor o igual que 2N − 1. Los nodos xN,k y los
pesos wN,k que hay que usar están tabulados y se muestran en la siguiente
tabla:

N Nodos xN,k Pesos wN,k


2 -0.5773502692 1
0.5773502692 1
3 ±0.7745966692 0.555555556
0 0.8888888888
4 ±0.8611363116 0.3478548451
±0.3399810436 0.6521451549

Ası́ por ejemplo, el cálculo del área dada una función f para N = 3 serı́a:

Area = 0,555555556f (−0,7745966692)+0,8888888888f (0)+0,555555556f (0,7745966692)


Escriba un programa que calcule el área.
2 Ejercicios 3

11. Utilice un arreglo de un subı́ndice para resolver el siguiente problema.


Una empresa la paga a su personal de ventas a base de comisión. Los
vendedores reciben $200 por semana más 9 % de sus ventas brutas de dicha
semana. Por ejemplo, un vendedor que vende $3000 en ventas brutas en
una semana recibe 200$ más 9 % de 3000, o sea un total de $470. Escriba
un programa en C (utilizando un arreglo de contadores) que determine
cuántos de los vendedores ganaron salarios en cada uno de los rangos
siguientes (suponiendo que el salario de cada vendedor se trunca en una
cantidad entera):
a) $200 - $299
b) $300 - $399
c) $400 - $499
d ) $500 - $599
e) $600 - $699
f ) $700 - $799
g) $800 - $899
h) $900 - $999
i ) $1000 o superior
12. Qué es lo que ejecuta el siguiente programa ?

Listing 1: Programa
#include<s t d i o . h>
#define SIZE 10

int w h a t I s T h i s ( int [ ] , int ) ;

main ( ) {
int t o t a l , a [ SIZE ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ;
t o t a l=w h a t I s T h i s ( a , SIZE ) ;
p r i n t f ( ” T o t a l o f a r r a y e l e m e n t v a l u e s i s %d \n” , t o t a l ) ;
return 0 ;
}

int w h a t I s T h i s ( int b [ ] , int s i z e ) {


i f ( s i z e ==1)
return b [ 0 ] ;
else
return b [ s i z e −1]+ w h a t I s T h i s ( b , s i z e −1);

}
2 Ejercicios 4

13. Utilice un arreglo de doble subı́ndice para resolver el problema siguiente.


Una empresa tiene 4 vendedores (1 a 4) que venden 5 productos diferentes
(1 a 5). Una vez al dı́a, cada vendedor emite un volante para cada tipo
distinto de producto vendido. Cada volante contiene:
a) El número del vendedor.
b) El número del producto.
c) El valor total en dólares del producto vendido ese dı́a.
Por lo tanto, cada vendedor entrega por dı́a entre 0 y 5 volantes de ven-
tas. Suponga que está disponible la información de todos los volantes co-
rrespondientes al mes anterior. Escriba un programa que lea toda esta
información correspondiente a las ventas del mes anterior, y que resuma
las ventas totales por vendedor y por producto. Todos los totales deberán
almacenarse en un arreglo de doble subı́ndice sales. Después de procesar
toda la información correspondiente al mes anterior, imprima los resul-
tados en forma tabular, con cada una de las columnas representando a
un vendedor en particular y cada uno de los renglones representando un
producto en particular. Totalice en forma cruzada cada renglón, para ob-
tener las ventas totales de cada producto del mes pasado. Su impresión
en forma tabular deberá incluir estos totales a la derecha de los renglones
totalizados y en la parte inferior de las columnas totalizadas.
14. Escriba un programa que simule tirar dos dados. El programa deberá
utilizar rand para tirar el primer dado, y después volverá a utilizar rand
para tirar el segundo dado. La suma de los dos valores deberá entonces
ser calculada. Nota: en vista de que cada dado puede mostrar un valor
entero de 1 a 6, entonces la suma de los dos valores variará desde dos
hasta 12, siendo 7 la suma más frecuente y 2 y 12 las menos frecuentes.
En la tabla se muestra las 36 combinaciones posibles de los dados, ver Fig
1. Su programa deberá tirar 36 veces los dados. Utilice un arreglo de un
subı́ndice para llevar cuenta el número de veces que aparece cada suma
posible. Imprima los resultados en un formato tabular. También determine
si los totales son razonables, es decir, existen 6 formas de llegar a un 7,
por lo que aproximadamente una sexta parte de todas las tiradas deberán
ser 7.
15. Escribir una función recursiva que tome un arreglo y el tamaño de un
arreglo como argumentos y que no devuelva nada. La función deberá dejar
de procesar y regresar cuandon reciba un arreglo de tamaño cero.
16. Escriba una función recursiva que tome un arreglo entero y el tamao del
arreglo como argumento y regrese el elemento más pequeño del mismo. La
función deberá detener su proceso y regresar cuando reciba un arreglo de
un solo elemento.
17. Una pequeña aerolı́nea acaba de adquirir una computadora para su sistema
automatizado de reservaciones. El presidente le ha solicitado a usted que
2 Ejercicios 5

Fig. 1: Las 36 posibles combinaciones de tirar dos dados.

programe el nuevo sistema en C. Usted debe escribir un programa que


asigne asientos en cada vuelo del único avión de la erolı́nea (capacidad: 10
asientos).
Su programa deberá mostrar el siguiente menú de alternativas:
Please type 1 for ((smoking))
Please type 2 for ((nonsmoking))
Si la persona escribe 1, entonces su programa deberá asignar un asiento
en la sección de fumar (asientos de 1 al 5) si la persona escribe 2, entonces
su programa deberá asignar una asiento en la sección de no fumar (asien-
tos del 6 al 10). Su programa a continuación deberá imprimir un pase de
abordaje, indicando el número de asiento de la persona y si está en la
sección de fumar o no fumar en el avión.
Utilice un arreglo de un subı́ndice para representar el diagrama de asientos
del avión. Inicialice todos los elementos del arreglo a cero para indicar que
todos los asientos están vacios. Conforme se asigne cada asiento, defina los
elementos correspondientes del arreglo a 1 para indicar que dicho asiento
ya no está disponible.
Su programa no deberá, naturalmente, asignar nunca un asiento que ya
haya sido asignado. Cuando esté llena la sección de fumar su programa de-
berá solicitar a la persona, si le parece aceptable ser colocada en la sección
de no fumar (o viceversa). Si dice que si, entonces efectúe la asignación
apropiada de asiento. Si dice que no, entonces imprima el mensaje ((Next
flight leaves in 3 hours)).
18. (Palı́ndromos). Un palı́ndromo es una cadena que se escribe de la mis-
ma forma hacia adelante y hacia atrás. Algunos ejemplos son ((radar)),
((somos)), ((A ti no, bonita)). Escriba una función recursiva, que devuelva
uno si la cadena almacenada en el arreglo es un palı́ndromo y 0 de lo
contrario. La función deberá ignorar espacios y puntuaciones incluidas en
la cadena.
2 Ejercicios 6

19. Declare y defina una cadena de caracteres inicializada en Universite de


Perpignan.
Imprimir la cadena de izquierda a derecha.
Imprimir los diez primeros caracteres de derecha a izquierda.
Imprimir la cadena de derecha a izquierda.
Imprimir los diez primeros caracteres de derecha a izquierda. En este
ejercicio, %c es el único formato aceptado. No utilizar el formato %s
La ejecución del programa muestra lo siguiente.

Universite de Perpignan
Universite
nangipreP ed etisrevinU
etisrevinU

20. Escribir un programa que realice las siguientes acciones.


Definir una función aff que imprima una cadena de caracteres de
izquierda a derecha de cualquier longitud. Esta longitud será un
parámetro de aff.
21. Usando las siguientes definiciones
#define LONGUEURMOT 23
#define UP Universite de Perpignan
Escriba un programa que realice las cuatro operaciones del ejercicio 9,
utilizando las definiciones.
22. Modificar el programa anterior y en la definición use Universite de Per-
pignan Via Domitia.
23. Escriba un programa que realice las acciones del ejercicio 9. Ingrese pala-
bras por teclado, suponga que el conjunto de palabras no excede de 180
caracteres.
Escriba una función longitud que retornará el número de letras de
una cadena de caracteres. La cadena de caracteres es dato de entrada
de la función.
Escribir una función concatena que retornará la concatenación de dos
cadenas de caracteres.