Está en la página 1de 13

ARREGLOS DE UNA DIMENSIÓN

Los ejercicios de programación deben resolverse utilizando funciones. Para ello divida el
problema en sub-problemas y programe la solución de cada uno de ellos por medio de las
funciones.

1. Suponga las siguientes declaraciones:

int puntos [500];


int prueba, menor, indice;

¿Cuál segmento de programa encontrará el valor más pequeño de este arreglo y


almacenará el subíndice del elemento donde está guardado este valor?

a) for (prueba = 0; prueba < 500; prueba++)


if (puntos[prueba] < menor)
menor = puntos[menor];

b) for (prueba = 0; prueba < 500; prueba++)


if (puntos[prueba] < menor)
menor = prueba;

c) menor = puntos[0];
for (prueba = 1; prueba < 500; prueba++)
if (puntos[prueba] < menor)
menor = puntos[prueba];

d) indice = 0;
for (prueba = 1; prueba < 500; prueba++)
if (puntos[prueba] < puntos[indice])
indice = prueba;

e) indice = 0;
for (prueba = 1; prueba < 500; prueba++)
if (puntos[prueba] < indice)
indice = prueba;

Arreglos de Una Dimensión 43


2. Considere el segmento:

int arreglo1[4], arreglo2[4], i, j;

for (i = 0; i <= 3; i++) {


scanf (“%i”, &arreglo1[i]);
for (j = i; j <= 3; j++)
scanf (“%i”, &arreglo2[ j]);
}

y los datos de entrada:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Después de ejecutarse el código, ¿cuál será el contenido de los arreglos arreglo1


y arreglo2?

a) arreglo1: 1 2 3 4 b) arreglo1: 1 6 7 8 c) arreglo1: 1 6 10 13


arreglo2: 5 6 7 8 arreglo2: 2 3 4 5 arreglo2: 2 7 12 14

d) arreglo1: 1 6 10 13 e) arreglo1: 1 2 3 4 f) faltan datos de


arreglo2: 2 7 11 14 arreglo2: 12 13 14 15 entrada

3. Observe el siguiente trozo de programa y diga qué imprime, suponiendo que los
datos son:

5 41 68 32 74 55

int i, j, n, sor[25];

scanf (“%i”,&n);
i = 0;
while (i <= n - 1) {
scanf (“%i ”, &sor[i]);
i++;
}
for (i = 0; i <= n - 1; i++) {
printf (“%i \n”, sor[i]);
for (j = n - 1; j > i; j--)
printf (“%i “,sor[i]);
}

Arreglos de Una Dimensión 44


4. Sean los datos enteros:

n, k (en la primera línea)


a0 (en la segunda línea)
a1 (en la tercera línea)
.
an-1 (en la última línea)

Con: |k| ≤ n; 1 ≤ n ≤ 50

Elabore un programa completo que resuelva progresivamente por funciones cada


uno de los siguientes incisos:

a) Leer los datos y almacenarlos en un arreglo vec, de tal manera que


queden:

vec
a0 a1 . . . an-1

b) Copiar los datos a otro arreglo llamado inverso, de tal forma que queden
almacenados como se indica a continuación:

inverso
an-1 . . . a0

c) Reemplazar cada ai en vec por (ai * 2i) sin utilizar la función de potencia y
optimizando el número de operaciones:

vec
ao* 20 (a1* 21) . . .

d) Correr los elementos del vec anterior

|k| lugares a la derecha si k > 0, y


|k| lugares a la izquierda si k < 0

Al correr los elementos, Elabore entrar ceros a los lugares vacíos; así, si k = 2 se
pierden los dos últimos datos (an-2 y an-1) y el arreglo quedaría:

0 0 ao a1 . . . an-3

5. Los tres arreglos reales x, y y z, tienen almacenados m, n, y o valores,


respectivamente. Elabore un programa que lea los datos de cada arreglo y calcule
e imprima las sumatorias de todos sus elementos, para lo cual deberá contar con
una función para sumar todos los elementos de un arreglo y una función para leer
los datos de un arreglo. Considere que las dimensiones de los arreglos se leen en
el programa principal con 1 ≤ m,n,o ≤ 50.

Arreglos de Una Dimensión 45


6. Se tiene el arreglo

ventas
0 1 2 10 11
vene vfeb vmar . . vnov vdic

donde se almacenan las ventas mensuales de una empresa.

Elabore una función que regrese los siguientes datos:

a) ¿En qué mes se dieron las ventas máximas de la empresa?


b) ¿A cuánto ascendieron las ventas máximas?
c) ¿Cuál fue el total de las ventas?
d) ¿Cuál fue el promedio de las ventas?

7. Dados los datos:

n, a0,a1,. . .,an-1, b0,b1, . . . ,bn-1

con: 1 ≤ n ≤ 50, entero


ai, bi reales

Elabore funciones por separado para calcular:

n -1


i=0
a i * bi

n -1


i=0
a i * bn −1−i

¿Requiere de arreglos? ¿Cuántos? ¿Por qué?

8. Una fábrica de llantas quiere un programa para calcular el costo total de


producción de los n modelos de llantas que produce. Los datos con que cuenta
son los siguientes:

n, ao, a1, ..., an-1, c0, c1, ..., cn-1,

con: 1 ≤ n ≤ 50, entero


ai enteros
ci enteros

Donde:

ai representa la cantidad de llantas producidas del modelo i


ci representa el costo de producción de una llanta del modelo i

Arreglos de Una Dimensión 46


9. Se tienen los siguientes datos:

n, ic0, ic1, ..., icn-1

con: 1 ≤ n ≤ 32, entero


ici reales

Donde:

ici representa el ingreso per cápita de cada entidad federativa de la República


Mexicana.

Elabore una función para calcular e imprimir el ingreso per cápita promedio de la
República, así como para escribir cuántas entidades tienen un ingreso menor que
este promedio y cuántas lo tienen mayor o igual.

10. Sean los datos:

n, x1, x2, . . . , xn

con: 1 ≤ n ≤ 25, entero


xi reales

Elabore un programa que realice funciones por cada inciso y la función principal
que las mande llamar e imprima los resultados:

a) Lea los datos y almacene los xi en un arreglo.


b) Calcule e imprima la media de los datos dada por la fórmula:

n
− ∑ xi
x= i =1
n
c) Calcule e imprima la desviación estándar dada por la fórmula:

n −
∑ (x i − x) 2
a= i =1
n

11. Un casino desea llevar a cabo unas estadísticas sobre el juego de ruleta. Se
solicita un programa modular que cuente el número de veces que cada número es
ganador en una jornada y al final del día imprima un reporte con lo siguiente:

a) ¿Cuántas veces resultó ganador cada elemento de la ruleta?


b) ¿Cuáles elementos no resultaron ganadores en toda la jornada?
c) ¿Cuál fue el número de cada color que ganó más veces?(suponga que sólo
hay uno)
d) ¿Cuál fue el elemento que ganó en más ocasiones?

Arreglos de Una Dimensión 47


Recuerde que la ruleta está formada por 70 elementos. Existen del 1 al 34 rojos,
del 1 al 34 negros, el 0 y el 00. El casino desconoce el número de juegos de una
jornada. Los datos que el casino proporcionará son los siguientes:

número, color
número, color
...
-1, X

Donde:
número representa el número correspondiente al elemento ganador
con 0 ≤ número≤ 34
donde el 0 se representa como un 0 rojo y el 00 se representa como
un 0 negro.
color representa el color correspondiente al elemento ganador.
con: R = rojo, N = negro
-1,X representan el fin de la jornada

12. Una compañía ha clasificado a sus n (1 ≤ n ≤ 50) empleados dentro de los grupos
1 y 2. Cada empleado del grupo 1 recibirá, a partir de ahora, un aumento de
$250.00 a la semana sobre su sueldo actual, mientras que a cada uno de los del
grupo 2 sólo se le dará $150.00 adicionales por semana. La información que se
proporciona de cada empleado es: clave del empleado (comprendida entre 100 y
2500, inclusive), grupo al que pertenece (1 o 2) y sueldo semanal actual (entre
$300.00 y $6000.00). Si un empleado del grupo 1 con el nuevo sueldo gana
semanalmente más que el sueldo promedio del grupo, entonces debe cambiar al
grupo 2.

Elabore un programa modular que:

a) Lea la información de los n empleados e imprima la clave, grupo y sueldo


semanal nuevo para cada empleado, actualizando el grupo si es el caso.
b) Calcule el sueldo promedio de los empleados por grupo y calcule también
el promedio general de todos, sin considerar el grupo.
c) Indique cuántos empleados cambiaron del grupo 1 al 2.

13. Se tienen n alumnos (1 ≤ n ≤ 50) de los cuales se conoce la clave y la calificación


final. Elabore un programa modular que:

a) Lea dicha información, la cual se da ya ordenada en forma descendente,


con respecto a la clave.

b) Imprima la clave y calificación de todos los alumnos que obtuvieron


calificación superior al promedio del grupo.

c) Imprima la calificación que obtuvieron los alumnos cuyas claves


proporcionará el usuario. Se sabrá que el usuario ya no quiere conocer más
calificaciones cuando, en lugar de una clave, proporcione un cero. Utilice
búsqueda binaria para buscar las claves que el usuario solicita.

Arreglos de Una Dimensión 48


14. Se tiene un conjunto de n parejas de datos Xi, Yi donde cada pareja representa las
coordenadas del punto i de un polígono irregular de n lados. Suponga que las
coordenadas se proporcionarán en orden adyacente. Elabore una función para
leer el número de lados del polígono, leer las coordenadas de los puntos y obtener
el área del polígono irregular utilizando la siguiente fórmula:

Area = [(X0+X1)*(Y0-Y1 ) + (X1+X2)*(Y1-Y2)+. . .+ (Xn-1+X0)*(Yn-1-Y0)]/2

Suponga que los Xi ,Yi son reales y n es entero con 1 ≤ n ≤ 50.

15. Elabore una serie de funciones para leer una serie de n datos desordenados,
almacenarlos en el arreglo val (de máximo 50 localidades), ordenarlos de manera
creciente, utilizando el algoritmo de selección directa, en ese mismo arreglo y, por
último, imprimirlos en orden.

val
0 1 2 n-1 49
vo v1 v2 . . vn-1 ...

Variante: En el arreglo final no debe haber datos repetidos.

16. Partiendo del ejercicio anterior, elabore un programa que contenga funciones para:

a) Buscar un valor x dentro del arreglo utilizando el algoritmo de búsqueda


secuencial. La función debe regresar como resultado la posición en la que
se encuentra el valor buscado. Si x no se encuentra en el arreglo, la función
calcula la posición en la que debería encontrarse y regresa: posición –1.

b) Buscar un valor x dentro del arreglo utilizando el algoritmo de búsqueda


binaria.

c) Insertar un valor x en el arreglo de tal forma que se siga conservando el


orden ascendente de los valores. Al insertar se debe verificar que haya
espacio libre y que x no exista en el arreglo. La función debe regresar como
resultado 1 si se insertó x en el arreglo, 0 si x ya existía en el arreglo y –1 si
no existe espacio libre en el arreglo.

d) Eliminar un valor x del arreglo, compactando si es necesario para que no


haya espacios libres entre valores. La función debe regresar como
resultado 1 si se eliminó x, 0 si x no se encontraba en el arreglo y –1 si el
arreglo estaba vacío.

e) Sustituir un valor x ya existente en el arreglo con un valor y de tal manera


que el arreglo siga conservando su orden creciente. La función debe
regresar como resultado 1 si se hizo la sustitución, 0 si x no se encontraba
en el arreglo y –1 si el arreglo estaba vació.

17. Elabore un programa modular que lea dos arreglos de diferente número de
elementos, los ordene y posteriormente los mezcle en un tercer arreglo guardando
el orden. Ho hay repetidos.

Arreglos de Una Dimensión 49


Restricción: no se deben unir los arreglos en desorden, ni copiar un arreglo
completo, es decir, los elementos que se almacenen en el tercer arreglo se deben
ir guardando en orden.

18. Elabore un programa modular para leer un arreglo cuyos datos se proporcionan en
orden ascendente, leer un segundo arreglo cuyos datos se proporcionan en orden
descendente, mezclarlos en un tercer arreglo cuyos datos aparezcan en orden
ascendente, y por último, imprimir el arreglo resultante.

19. En el departamento de matemáticas necesitan un programa en C modular (un


módulo por inciso) que calcule el producto escalar de dos vectores, la norma de un
vector y el coseno del ángulo que forman.

Análisis del problema:


El producto escalar de dos vectores de n componentes se define de la siguiente
forma:

n
pe(n,a,b) = ∑ a(i) * b(i)
i =1
la norma de un vector de n componentes se define de la siguiente forma:

n
norma(n,a) = ∑ a(i) * a(i) =
i =1
pe(n, a, a )

el coseno del ángulo que forman dos vectores de n componentes se define de la


siguiente forma:

∑ a(i) * b(i)
i =1 pe(n, a, b)
coseno(n,a,b) = =
n n norma(n, a) * norma(n, b)
∑ a(i) * a(i) *
i =1
∑ b(i) * b(i)
i =1

a) Haga un módulo llamado leerArreglo que lea los datos del arreglo (los
datos son reales).
b) Haga un módulo llamado calcularProdEscalar que calcule y regrese el
producto escalar.
c) Haga un módulo llamado calcularNorma que calcule y regrese la norma,
utilizando el módulo calcularProdEscalar.
d) Haga un módulo llamado calcularCosen que calcule y regrese el coseno
utilizando los módulos anteriores.
e) Por último, haga el módulo principal, incluyendo las declaraciones
necesarias, para leer el número (n) de datos que el usuario va a ingresar (1
≤ n ≤ 50), mandar llamar a las funciones anteriores e imprimir el producto
escalar, la norma y el coseno.

Arreglos de Una Dimensión 50


20. Haga un módulo llamado mayoritario que calcule y regrese un uno (1) si un
arreglo es mayoritario o cero (0) si no lo es.

Análisis del problema:

Mayoritario: se dice que es mayoritario, si existe un elemento almacenado en el


vector que se repite más de n/2 veces, siendo n el total de valores guardados en el
arreglo.

21. Elabore un programa modular que lea los datos de dos polinomios como se explica
posteriormente y que, utilizando un menú, efectúe las siguientes operaciones
sobre polinomios:
a) Suma.
b) Resta.
c) Multiplicación.

Al seleccionar el usuario una de estas tres opciones dará los polinomios sobre los
cuales se realizará la operación solicitada.

Los datos que el usuario proporcionará son los coeficientes (reales) y los
exponentes (enteros, ≥ 0 y ≤ 15) de ambos polinomios, los cuales pueden o no
estar ordenados. El final de cada polinomio está dado por un –1 como coeficiente
y como exponente.

Los términos del polinomio resultante deberán ser desplegados en orden


descendente, observando el siguiente formato:

± cX ^e

Donde:

± representa el signo del término


c representa el coeficiente del término
^ significa exponenciación
e representa el valor del exponente

Por ejemplo, suponga que los datos son:

2.5 3 -4 2 6.5 1 3 4 -1 -1
-2 2 -3 4 9.1 1 6.9 8 -1 -1

Entonces, los polinomios que se van a operar son:

+2.5X3 - 4X2 + 6.5X1 + 3X4


-2X2 - 3X4 + 9.1X1 + 6.9X8

De tal forma que el resultado de la suma es:

6.9X8 + 2.5X3 - 6X2 + 15.6X1

y se desplegaría como:

Arreglos de Una Dimensión 51


+ 6.9X^8 + 2.5X^3 - 6X^2 + 15.6X^1
22. Dado un número natural n de 4 cifras, no todas iguales, encuentre e imprima el
número mayor y el menor que se puede formar con las mismas cifras.

Por ejemplo, si n = 6174, entonces el número mayor que se puede formar es 7641
y el menor 1467.

23. Elabore un programa que utilizando “la criba de Eratóstenes” encuentre los
números primos entre 1 y 999, la cual funciona como sigue:

a) Inicialice todos los elementos de un arreglo (comenzando en el índice 2),


de 1000 enteros, con 1 (verdadero). Los elementos con índices 0 y 1 deben
inicializarse con 0 (falso).

b) Comience con el índice i=2 del arreglo. Recorra el arreglo, del elemento i+1
al último, y cada vez que encuentre un elemento cuyo valor sea 1, póngale
0 si su índice es múltiplo de i. Vuelva a hacer lo mismo, pero ahora
considerando el primer elemento que sea 1 y cuyo índice sea mayor a i.
Continúe este proceso hasta que haya probado todos los elementos iguales
a 1.

Cuando se haya terminado este proceso, los índices del arreglo cuyos elementos
sean 1 son primos.

24. Se necesita programar una materia para el próximo semestre. En principio se han
establecido 10 grupos para la misma. Para conocer cuántos alumnos hay
interesados en cada uno de ellos, se les pidió que votaran indicando su
preferencia. La información se proporciona de la siguiente manera:

clavealumno votogrupo
clavealumno votogrupo
.
.
.
-1 -1

donde:

clavealumno es un entero positivo que representa la clave única del alumno.


votogrupo es un entero entre 1 y 10 para elegir al grupo que prefiere el alumno.

Se desea conocer el total de alumnos que votaron por cada grupo de la materia,
para saber cuáles grupos se abren o se cancelan.

a) Haga una función que calcule las suma de votos y regrese cuántos
alumnos votaron en total.
b) Haga una función que elimine los grupos que tienen menos de 25 alumnos.
c) Haga una función que imprima los grupos que pertenecerán abiertos. (son
aquellos que tienen 25 o más alumnos)
d) Haga la función principal que mande llamar las dos funciones anteriores.

Arreglos de Una Dimensión 52


25. En estadística, la moda de una serie de números es aquel número que aparece
con más frecuencia. Por ejemplo, dada la lista 1,2,2,3,6,4,7,5,4,6,9,4, la moda es
4, ya que aparece tres veces. Calcule e imprima la moda. Si todos los números
son diferentes entonces no hay moda, con lo cual se debe indicar que hubo error.
Haga un programa completo en C que deberá tener una función que lea la serie de
números, otra función que reciba como parámetro la serie de números y arroje la
moda o si no la hay –1 y la función principal que mande llamar las anteriores e
imprima la moda (número que mas veces se repitió en caso de haber dos iguales o
más mencione el primero).

26. La tienda “Dulcecito” vende como máximo 100 productos diferentes.


La información sobre los productos se encuentra almacenada en los siguientes
arreglos paralelos:

Producto Cantidad
0 0
1 1
2 2
… …
99 99

Producto guarda la clave de los diferentes dulces.


Cantidad es la cantidad de cajas de dulces de un productoi.

El administrador necesita un programa en C modular (un módulo por inciso) para:

f) Saber: ¿cuál es la clave del producto que tiene la mayor cantidad de cajas?
(Función llamada mayor que reciba como parámetro el arreglo Cantidad y
regrese el índice de la mayor cantidad de cajas. Asuma que no habrá
cantidades iguales.)
g) Saber: ¿cuáles son los productos que necesita pedir al proveedor ya que
tiene más de una caja y menos de 50 cajas en existencia?
(Función llamada pedido que regrese como parámetro el total de productos
que necesita pedir al proveedor y generar un vector con las claves de los
productos cuya cantidad sea 0<cantidad<50)
h) Eliminar los productos que tengan cero cajas en existencia.
(Función llamada eliminar que elimine la clave del producto y la cantidad
correspondiente al producto que tiene cero cajas. Realizando las
validaciones pertinentes)
i) Ya eliminados Ordenar en forma descendente ( de mayor a menor) por
clave del producto.
(Función llamada Ordenar que ordene en forma descendente la clave del
producto con su respectiva cantidad)

Hacer el programa principal que mande llamar cada una de las funciones
anteriores e imprima la información requerida en cada uno de los incisos.

Suponga que las claves de los 100 productos y cantidades ya están


almacenadas en los arreglos.

Arreglos de Una Dimensión 53


27. Se tienen los siguientes datos

n
x0 f (x0)
x1 f (x1)
.
.
.
xn-1 f (xn-1)
valx

donde:
n es el número de xi y f(xi) que se proporcionarán (1<= n <= 50)
xi son los valores de x (en orden creciente)
f(xi) es el valor de una función para xi
valx es el valor de x con el que se va a trabajar.

Realiza un programa en C que:

Lea en arreglos paralelos los valores de x y f(x).


Si existe una xi = valx, imprima f(valx).
Si no existe una xi = valx, calcule f(valx) de acuerdo a la fórmula que se da a
continuación, inserte este nuevo valor de x (valx) así como el valor calculado
f(valx) en sus respectivos arreglos manteniendo el orden creciente de las x´s sin
utilizar ningún algoritmo de ordenamiento, e imprima el valor calculado de f(valx) .

Suponiendo que valx debe insertarse en la posición k,


si k=0 entonces f(valx)=f(x0)
si k=n entonces f(valx)=f(xn-1)
en cualquier otro caso
f(valx) = f(xk-1) + ( (valx - xk-1)* (f(xk) – f(xk-1))/(xk- xk-1) )

Arreglos de Una Dimensión 54


28. Una cooperativa de productores de naranjas almacena el total de toneladas
cosechadas durante el último año en N parcelas (1≤ N ≤ 50). En cada parcela se
pueden cultivar dos tipos de naranjas: para jugo y para comer. Se conoce el total
de toneladas cosechadas de cada uno de los tipos de naranjas. Si en una parcela
no se hubiera cosechado alguno de los tipos, entonces habrá 0.

La información se almacena en un arreglo como se muestra en el siguiente


ejemplo:

Naranjas para Naranjas para


jugo comer

100 500 600 0 800 700 ... ...


0 1 2 3 4 5 2N--2 2N-1
2N MAX - 1

Parcela 1 Parcela 2 Parcela 3 Parcela N

• En la parcela 1 se cosecharon: 100 toneladas de naranjas para jugo y 500


toneladas de naranjas para comer.
• En la parcela 2 se cosecharon: 600 toneladas de naranjas para jugo y 0 toneladas
de naranjas para comer.

NOTA: Observe que la información de una misma parcela ocupa posiciones


consecutivas en el arreglo.

Se le pide que haga un programa en C, usando módulos, que pueda:

a) Leer la información: N (1≤ N ≤ 50) y las toneladas por tipo de naranja de cada
una las parcelas.
b) Calcular e imprimir el total de la producción por parcela.
c) Eliminar la información de una parcela. El dato requerido para esta opción es el
número de parcela a eliminar.
d) Buscar e imprimir el número de una parcela (si hubiera) que no haya tenido
producción de ninguno de los tipos de naranjas. Es decir, durante el último año
su producción total fue 0.

Arreglos de Una Dimensión 55

También podría gustarte