Trabajo práctico Nº 5 (Resolución de problemas – Arreglos

Anuncio
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
Trabajo práctico Nº 5
(Resolución de problemas – Arreglos bidimensionales ).
Realiza el programa en Lenguaje C correspondiente.
1-
Qué hay de incorrecto en los siguientes códigos?
int main()
{
int x,y;
int mat[10][3];
for (x=0; x<3;x++)
for (y=0;y<10;y++)
mat[x][y]=0;
}
int main()
{
double d [2] [10];
.
d[ 1, 9] = 2.345;
.
.
}
2- Cargar en un arreglo de dos dimensiones de 4, 4 posiciones, números pares comenzando
por el 12.
3- Hacer un procedimiento que genere la matriz unidad de dimensión N.
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
4- Realizar un procedimiento que:
a) Recorra una matriz y cuente los elementos pares que hay en ella, deberá además
cambiarlos por (-1).
b) Escribir otro procedimiento que a partir de la matriz anterior genere un vector cuyos
elementos indiquen cuantos (-1) hay en cada fila.
5- En memoria se encuentra almacenado un arreglo bidimensional de n, m posiciones cuyas
componentes guardan un número que indica la cantidad de lluvia promedio de cada zona
(n) de cada campo (m). Considerar que un campo (ej. el campo 1) está particionado para el
estudio en varias zonas (ej. zona 1, zona 2, etc.). Se realizar funciones que me permitan
determinar:
- El promedio de lluvias por zona.
- El promedio de lluvias en cada campo, en todas las zonas del mismo.
- El campo y la zona que más lluvias contabilizó.
- El promedio de todas las mediciones que están almacenadas en el arreglo.
- Mostrar las componentes de todo el arreglo.
6- Teniendo el arreglo del ejercicio 5, se pide armar y mostrar un arreglo de una dimensión
que almacene la cantidad de lluvias mayores de cada campo.
-1-
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
7- En un arreglo bidimensional que almacena la cantidad de computadoras vendidas por
tres vendedores en cuatro zonas diferentes. Se pide mostrar:
- La zona que más computadoras vendió.
- El vendedor que menos computadoras vendió.
- La cantidad de computadoras vendidas por todos los vendedores en todas las zonas.
8- Escriba un programa que ponga números aleatorios menores a 100 en un vector de dos
dimensiones de 5 por 4. Imprima los valores en pantalla en columnas. Se pide:
 calcular promedio de todos los números.
 mostrar el valor maximo y minimo
 intercambiar los valores de la diagonal principal por los valores de la última fila.
 mostrar matriz modificada.
9- Modifique el programa del apartado anterior para generar una función en donde se
trasladen los números mayores a 10 de la matriz a un vector unidimensional. Ordene la
matriz resultante de mayor a menor y mostrar. Muestre el promedio de todos los números
del vector y los valores del vector.
Nota: no se olvide de detenerse brevemente y borrar la pantalla cada 6 elementos que
muestre por pantalla.
10- Ingresar dos valores, M (< 30) y N (< 25) y a continuación por filas todos los
componentes de una matriz MATRIZA de M filas y N columnas. Desarrollar un programa
que:
a) Imprima la matriz MATRIZA por columnas.
b) Calcule e imprima el valor promedio de los componentes de la matriz.
c) Genere e imprima un vector VECSUMCOL donde cada componente sea la suma de la
columna homóloga.
d) Genere e imprima un vector VECMAXFIL donde cada componente sea el valor máximo
de cada fila.
11- Ingresar un valor N (< 25 y par) y luego por filas una matriz cuadrada CUADRA de N
filas y columnas. Desarrollar un programa que determine e imprima:
a) Todos los elementos de la diagonal principal o secundaria según de cual resulte mayor la
sumatoria de elementos.
b) Los elementos del cuarto (N/2 filas y N/2 columnas).
c) Los elementos de la triangular superior o inferior dependiendo de cual tenga mayor
sumatoria de elementos.
12- Se deben ingresar n x n, números que representan las notas obtenidas en los parciales
de “Análisis Matemático I”. Se pide intercambiar los elementos de la triangular superior,
con los elementos de la triangular inferior.
NOTA: Los elementos que están en la triangular superior son aquellos donde el número que
indica la fila es menor al de la columna.
2
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
Los elementos de la triangular inferior son los que el número que indica la fila es mayor al
de la columna. Mostrar los elementos del arreglo luego del intercambio.
13- Escribir un programa que contenga un menú de opciones para:
a) sumar dos matrices. (validar las dimensiones)
b) Multiplicar una matriz por un escalar.
12- Escriba un procedimiento que genere una matriz cuadrada de dimensión N que tenga la
siguiente forma:
1
2
0
0
N=4
3
1
2
0
0
3
1
2
0
0
3
1
14- Dada una matriz de M x N de elementos de tipo entero:
a) Escribir un procedimiento que busque la posición en la matriz del menor elemento
si el elemento esta repetido debe devolver la primera posición que fue encontrado.
b) Escribir un subprograma que genere un vector en el que cada elemento es T (true) o
F (false) indicando si el menor elemento hallado en el inciso anterior esta o no en la
fila.
1
5
7
1
T
2
3
4
6
F
7
9
4
2
F
8
1
10
15
T
15- Una matriz con m filas y n columnas tiene (mxn) elementos, y en C se almacena en la
memoria por filas. Se pide realizar un programa que haga lo siguiente: 1) leer m, n y los
elementos de una matriz (mxn). 2) Leer unos valores p y q, y con los mismos elementos de
la matriz (mxn) leída previamente, crear otra matriz de p filas y q columnas, que tenga el
mismo número de elementos que la anterior (comprobar que pxq = mxn, y si no se cumple
volver a leer p y q), de modo que los elementos estén almacenados en la memoria en el
mismo orden, o dicho de otra forma, que el orden por filas se mantenga
16- Una empresa que distribuye mercadería hacia distintas localidades del interior dispone
de los siguientes datos de los viajes realizados por los camiones de la empresa:
* patente del camión (2 digitos)
* número de destino (1..6)
* número de chofer (1..150)
* distancia en kilómetros.
Se pide desarrollar un programa que informe:
- Cantidad de viajes realizados a cada destino
- Número de chofer con el viaje de menor cantidad de km recorridos.
3
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
-
Generar un vector con las patente de los camiones que viajaron al destino 6
ordenado de mayor a menor.
No se sabe la cantidad de viajes a ingresar, el usuario debe tener la opción de detener la
carga. Un camión puede tener varios viajes.
17- Escribir un programa que cargue una matriz de 3 x n de elementos enteros y un vector
de n elementos enteros. Genere una matriz de 3 x m ( siendo m calculada) con los números
enteros que no se encuentran en el vector. El programa debe imprimir las estructuras.
18- Una empresa tiene cuatro vendedores (1 a 4) los cuales vende cinco productos (1 a 5).
Una vez al día, cada vendedor introduce un registro para cada tipo de producto vendido.
Cada registro contiene lo siguiente:
a) número de vendedor
b) El número de producto
c) El monto total del producto vendido del día.
Por lo tanto, cada vendedor pasa entre 0 y 5 registros por día. Suponga que están
disponibles los registros del último mes. Escribir un programa que lea toda esta
información de las ventas del último mes y sume el total de ventas por vendedor y por
producto. Todos los totales se deben almacenar en un arreglo con dos subíndices, ventas.
Una vez procesada toda la información del último mes, despliegue los resultados en
formato tabular en donde cada una de las columnas representa a un vendedor y cada una de
las filas representa un producto en particular. Obtenga la suma de cada fila para el total de
ventas de cada producto del último mes; obtenga la suma de cada columna para el total de
ventas por vendedor del último mes. Su salida tabular debe incluir estos totales a la derecha
para las filas y en el fondo para las columnas.
Ejercicios Propuestos
1- Escribir un programa que inicialice cada elemento de una matriz de enteros con el valor
de la suma del número de fila y columna en que está situado.
2- Hacer un algoritmo que llene una matriz de 7 * 7. Calcular la suma de cada renglón y
almacenarla en un vector, la suma de cada columna y almacenarla en otro vector.
3- Considerando el arreglo del ejercicio 2- se pide mostrar las componentes que se
encuentran almacenadas en la diagonal principal. (Las componentes que están en la
diagonal principal son aquellas que se encuentran en las posiciones donde el número de fila
es igual al número de columna).
4- Hacer un algoritmo que llene una matriz de 20 * 20. Sumar las columnas e imprimir que
columna tuvo la máxima suma y la suma de esa columna.
4
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
5- Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la diagonal principal
en un vector. Imprimir el vector resultante.
5- Hacer un algoritmo que cargue una matriz de 5 * 6 e imprima cuantos de los números
almacenados son ceros, cuantos son positivos y cuantos son negativos.
6- Diseñe un programa que escriba el numero de la hilera cuya suma sea mayor que las
demás hileras. Suponga que todas las hileras suman diferente cantidad.
7- El dueño de una cadena de tiendas de artículos deportivos desea controlar sus ventas por
medio de una computadora . Los datos de entrada son :
a) El numero de la tienda (1 a 10)
b) Un numero que indica el deporte del articulo (1 a 20)
c) El costo del articulo.
Hacer un programa que escriba al final del día lo siguiente
1. Las ventas totales en el día para cada tienda
2.Las ventas totales para cada uno de los deportes.
3. Las mayor venta de todas las tienda y a que deporte pertenece.
8- El departamento de policía de la ciudad de Tuxtepec ha acumulado información
referente a las infracciones de los límites de velocidad durante un determinado periodo de
tiempo. El departamento ha dividido la ciudad en cuatro cuadrantes y desea realizar una
estadística de las infracciones a los límites de velocidad en cada uno de ellos. Para cada
infracción se ha preparado una tarjeta que contiene la siguiente información:
- numero de registro del vehículo;
- cuadrante en el que se produjo la infracción
- limite de velocidad en milla por hora
Diseñe un diagrama para producir 2 informes; el 1o. que contiene una lista de la multa de
velocidad recolectadas, donde la multa se calcula como la suma del costo de la corte
($20,000) mas $ 1,250 por cada mph que exceda la velocidad limite. Prepare una tabla con
los siguientes resultados:
INFRACCIONES A LOS LIMITES DE VELOCIDAD
Registro del
Velocidad
Velocidad
Multa
vehículo
registrada (MPH)
limite
Este informe debe ser seguido de un segundo en el cual se proporcione un análisis de las
infracciones por cuadrante. Para cada uno de los 4 cuadrantes mencionados,
debe darse el numero de infracciones y la multa promedio ordenado por éste último.
Utilizar para este ejercicio un menú de entrada que me permita seleccionar la acción a
realizar.
9- Diseñe un algoritmo que llene una matriz de 10 * 10 y determine:
El numero mayor almacenado en la matriz
El numero mayor almacenado en cada renglón
5
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
La columna que tuvo la máxima suma
El renglón que tuvo la máxima suma
Diseña una función para cada inciso.
10- Sea una matriz de M x N
a) Calcular el promedio de cada fila e imprimirlo.
b) Mostrar el promedio mas alto.
11- Escribir un programa que calcule los puntos de silla de una matriz de enteros. Un
elemento de una matriz es un punto de silla si es el mínimo de su fila y el máximo de su
columna.
12- Realizar un el programa en C para calcular la moda de un arreglo de 3,3 posiciones de
números enteros, la moda es el elemento de dicho arreglo que aparece más veces en el
mismo, si distintos números son repetidos con la misma frecuencia no hay moda, se debe
imprimir la moda si es que existe y la cantidad de veces que se encuentra en el vector, de no
existir moda se debe imprimir un cartel adecuado.
13- Dada una matriz de M x N, escribir un función para que dado un elemento, busque su
primera aparición en la matriz y a partir de esta verifique si el elemento cumple con estas
dos condiciones:
a) Se repite una cantidad par de veces en su fila
b) no esta repetido en su columna
El procedimiento debe devolver una variable booleana indicando si la matriz cumplió o no
con las condiciones.
Ejemplo:
8
4
5
ELEMENTO = 1
1
2
1
ESTA EN FILA 2
5
6
2
COLUMNA 1
**
EL ELEMENTO CUMPLE CON LA CONDICIÓN YA QUE ESTA UNA CANTIDAD
PAR DE VECES EN SU FILA Y NO ESTA REPETIDO EN SU COLUMNA.
14- GENERAR MATRICES
Diseñar un programa que pida la dimensión n de una matriz cuadrada n*n, y
luego dé a elegir entre las siguientes opciones:
6
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
- Generar una matriz en espiral:
1 2 3 4 5 6 7 8 9
32 33 34 35 36 37 38 39 10
31 56 57 58 59 60 61 40 11
30 55 72 73 74 75 62 41 12
29 54 71 80 81 76 63 42 13
28 53 70 79 78 77 64 43 14
27 52 69 68 67 66 65 44 15
26 51 50 49 48 47 46 45 16
25 24 23 22 21 20 19 18 17
-Generar una matriz en ángulo recto:
1 2 3 4 5 6 7 8 9
2 2 3 4 5 6 7 8 9
3 3 3 4 5 6 7 8 9
4 4 4 4 5 6 7 8 9
5 5 5 5 5 6 7 8 9
6 6 6 6 6 6 7 8 9
7 7 7 7 7 7 7 8 9
8 8 8 8 8 8 8 8 9
9 9 9 9 9 9 9 9 9
-Generar una matriz en diagonal:
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 8
3 4 5 6 7 8 9 8 7
4 5 6 7 8 9 8 7 6
5 6 7 8 9 8 7 6 5
6 7 8 9 8 7 6 5 4
7 8 9 8 7 6 5 4 3
8 9 8 7 6 5 4 3 2
9 8 7 6 5 4 3 2 1
-Generar una matriz en antidiagonal:
1 2 3 4 5 6 7 8 9
2 1 2 3 4 5 6 7 8
3 2 1 2 3 4 5 6 7
4 3 2 1 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4
7 6 5 4 3 2 1 2 3
8 7 6 5 4 3 2 1 2
9 8 7 6 5 4 3 2 1
Ejercicios de autoevaluación
1. Diga cuales de los siguientes enunciados son verdaderos o falsos. Si la respuesta es
falso, explique por qué.
a) Si tenemos la siguiente inicialización de un arreglo:
int tabla [3][3]= {{1, 8}, {2, 4, 6}, { 5 }}; los elementos no inicializados contienen
basura.
b) C lleva un control estricto con los límites de los vectores.
c) Un programa en C que suma el número de elementos de un arreglo con dos
subíndices por columnas debe contener instrucciones for anidadas, haciendo variar
primero el índice de filas y luego columnas.
d) La diagonal principal es cuando i=j y la triangular inferior es i>j.
e) Para recorrer una columna o fila de una matriz solo se requiere de un ciclo for.
2. Un bucle para recorrer una tabla bidimensional de 20 por 30 enteros sería de la forma:
for (i=0;i=20;i++) for (j=0;j=30;j++)
for (i=0;i==20;i++) for (j=0;j==30;j++)
Ninguna de las restantes respuestas es correcta
7
Algoritmo y Estructura de Datos
Ing. en Sistemas de Información
– 1º año –
Docente: Gabriela Ribotta
Ayudante: María Laura López
for (i=0;i<=20;i++) for (j=0;j<=30;j++)
for (i=0;i<20;i++) for (j=0;j<30;j++)
3. ¿Cuál de las siguientes expresiones localiza la información del tercer elemento de la
cuarta fila de la tabla m?
Ninguna de las restantes respuestas es correcta
m(3,4)
m[3][4]
m[3;4]
m[3,4]
4. Qué doble bucle for imprime los elementos de una matriz n×n que se encuentren por
debajo de la diagonal principal en orden de columnas. Es decir dada
int t[3][3]={1,2,3,4,5,6,7,8,9}
imprimiría 4 7 8.
for(i=0;i<n;i++) for(j=0;j<i;j++) printf ("%d ",t[i][j]);
for(i=0;i<n;i++) for(j=0;j<i+1;j++) printf ("%d ",t[i][j]);
for(i=0;i<n;i++) for(j=i;j<n;j++) printf ("%d ",t[i][j]);
for(i=0;i<n;i++) for(j=i+1;j<n;j++) printf ("%d ",t[i][j]);
for(i=0;i<n;i++) for(j=0;j<=i;j++) printf ("%d ",t[i][j]);
8
Descargar