Respuestas Guia 04 (Arreglos)

13
Página 1 de 13 Fundamentos de Programación 2008 UNIDAD 4 Arreglos Prof. Gerardo Sas Respuestas a los ejercicios de la Guía Nº 4 Ejercicio 4.1 Escribir un algoritmo que permita leer una lista de N datos numéricos (N mayor o igual a 23) e informar solamente los elementos del mismo que ocupan las posiciones 7, 23 y N. Determinar e informar además, cuántos elementos son divisibles por 6. Proceso Ejercicio41 Dimension V(100); C <- 0 Escribir "Ingrese la cantidad de Números: "; Leer N; Para i <- 1 Hasta N hacer Leer V ( i ); Si (Trunc(V ( i )/6) = V ( i ) / 6) entonces C <- C + 1 FinSi FinPara Escribir V (7), V(23), V (N); Escribir C,' elementos son divisibles por 6 '; FinProceso

Transcript of Respuestas Guia 04 (Arreglos)

Page 1: Respuestas Guia 04 (Arreglos)

Página 1 de 10

Fundamentos de Programación 2008

UNIDAD 4

ArreglosProf. Gerardo Sas

Respuestas a los ejercicios de la Guía Nº 4

Ejercicio 4.1Escribir un algoritmo que permita leer una lista de N datos numéricos (N mayor o igual a 23) e informar solamente los elementos del mismo que ocupan las posiciones 7, 23 y N. Determinar e informar además, cuántos elementos son divisibles por 6.

Proceso Ejercicio41Dimension V(100);C <- 0Escribir "Ingrese la cantidad de Números: ";Leer N;Para i <- 1 Hasta N hacer

Leer V ( i );Si (Trunc(V ( i )/6) = V ( i ) / 6) entonces

C <- C + 1FinSi

FinPara Escribir V (7), V(23), V (N);Escribir C,' elementos son divisibles por 6 ';FinProceso

Page 2: Respuestas Guia 04 (Arreglos)

Página 2 de 10

Ejercicio 4.2Leer las calificaciones y nombres de un grupo de alumnos que asistieron a una evaluación parcial de programación. Generar un vector con los nombres de los alumnos aprobados y otro con los nombres de los no aprobados [ Nota<7 ]. Se desea obtener como información de salida en el orden indicado:

a. Un listado de los nombres de los alumnos aprobados.b. Las 2 mayores calificaciones y los nombres de los alumnos que las obtuvieron.c. Un listado con los nombres de los alumnos que no aprobaron la evaluación.

Proceso Ejercicio42Dimension AP(100), NoAp(100);May2 <- 0; May1 <- 0; Nomb2 <- ' ';Cnap <- 0; Cap <- 0;Escribir "Ingrese la cantidad de Numeros: ";Leer N;Para i <- 1 hasta N hacer Escribir "Ingrese Nombre";

Leer Nombre;Escribir "Ingrese Nota";Leer Nota;Si Nota > May1 entonces

May2 <- May1;Nomb2 <- Nomb1;May1 <- Nota;Nomb1 <- Nombre;

SinoSi Nota > May2 entonces

May2 <- Nota;Nomb2 <- Nombre;

FinSi

FinSiSi Nota >= 7 entonces

Cap <- Cap+1;AP[Cap] <- Nombre;

SinoCnap <- Cnap+1;NoAP[Cnap] <- Nombre;

FinSiFinPara//a) Listado de los alumnos aprobadosPara x <- 1 hasta Cap hacer

Escribir AP[x];FinPara//b) Las dos mayores notas y sus nombresEscribir May1, May2;//c) Listado de los alumnos no aprobadosPara x <- 1 hasta Cnap hacer

Escribir NoAP[x];FinParaFinProceso

Ejercicio 4.3Leer las calificaciones y nombres de un grupo de alumnos que asistieron a una evaluación parcial de programación. Generar un arreglo con los nombres y otro con las notas de aquellos alumnos que obtuvieron calificación igual o superior a 8. Informar las listas obtenidas. Si ningún alumno obtuvo 8 o más emitir un mensaje correspondiente.

Proceso Ejercicio43Dimension A(100), Not(100);Ap <- 0; Escribir "Ingrese la cantidad de Alumnos:";Leer N;Para x <- 1 hasta N hacer

Escribir "Ingrese Nombre:";Leer Nomb;Escribir "Ingrese Nota:";

Leer Nota;Si (Nota >= 8) entonces

Ap <- Ap + 1;A[Ap] <-Nomb;Not[Ap] <-Nota;

FinSiFinParaSi Ap = 0 entonces Escribir 'Nadie aprobo con 8 o mas'

Page 3: Respuestas Guia 04 (Arreglos)

Página 3 de 10

Sino Para x <- 1 hasta Ap hacer

Escribir A[x],' ',Not[x];

FinParaFinSiFinProceso.

Ejercicio 4.4Codifique un algoritmo que ingrese como datos un vector A de 120 elementos y un valor numérico en la variable M. Insertar M en la posición 32 del arreglo. Informar el vector modificado.

Proceso Ejercicio44Dimension A[121];Para x <- 1 hasta 120 hacer

Escribir 'Ingrese datos: ';Leer A[x];

FinParaEscribir "Ingrese M:";Leer M;Para x <- 121 hasta 33 hacer

A[x] <- A[x - 1];FinParaA[32] <- M;Para x <- 1 hasta 121 hacer

Escribir A[x];FinParaFinProceso.

Ejercicio 4.5Leer una arreglo lineal de 120 elementos. Informar separadamente:

a. El menor de la listab. Los elementos que ocupan las posiciones pares.c. Los elementos que sean múltiplos de 9. Si no hay, indicar tal situación.

Proceso Ejercicio45Dimension A[121];Menor <- 9999; Bandera <- 1;Para x <- 1 hasta 120 hacer

Escribir "Ingrese Numero: ";Leer A[x];Si A[x] < Menor entonces

Menor <- A[x];FinSi

FinParaEscribir "El menor es: ", Menor;Para x <- 2 hasta 120 con paso 2 hacer

Escribir A[x];FinParaPara x <- 1 hasta 120 hacer

Si (A[x]/9) = (Trunc(A[x]/9)) entonces

Page 4: Respuestas Guia 04 (Arreglos)

Página 4 de 10

Escribir A[x];Bandera <- 1;

FinSiFinParaSi Bandera = 0 entonces

Escribir "No hay multiplos de 9";FinSiFinProceso.

Ejercicio 4.6Leer N datos numéricos. Obtener la media M y la desviación standard DS de la lista. Las expresiones para el cálculo son las siguientes:

Proceso Ejercicio46Dimension A[100];Sum <- 0;Escribir "Ingrese la cantidad de Datos:";Leer N;Para x <- 1 hasta N hacer

Escribir "Ingrese Dato:";Leer A[x];Sum <- Sum + A[x];

FinParaM <- Sum / N;Sum <- 0;Para x <- 1 hasta N hacer

Sum <- Sum + (A[x] - M)^2;FinParaDS <- RC (Sum / N);Escribir "Media: ",M," D.S.:",DS;FinProceso.

Ejercicio 4.7Leer en un arreglo lineal una lista de 60 nombres. Eliminar del arreglo el nombre 'Juan López'. Si hubiera más de uno, eliminar solamente el que esté ubicado antes en la lista.

Proceso Ejercicio47Dimension N[60];Para x <- 1 hasta 60 hacer

Escribir x," Ingrese Nombre:";Leer N[x];

FinParaC <- 1;

Page 5: Respuestas Guia 04 (Arreglos)

Página 5 de 10

Mientras (C <= 60) & (N[c] <> "Juan Lopez") hacerC <- C + 1;

FinMientrasSi (C > 60) entonces

Escribir "Juan Lopez no se encuentra en la lista"Sino

Para x <- C hasta 59 hacerN[x] <- N[ x + 1];

FinParaEscribir "Se ha Eliminado a Juan Lopez de la lista, ahora cuenta con 59 elementos"

FinSiFinProceso.

Ejercicio 4.8Leer una matriz de 6x4 elementos. Informar el elemento ubicado en la fila 2 columna 4 con un mensaje alusivo. Obtener también los elementos de la 3er columna y fila 5.

Proceso Ejercicio48Dimension M[6,4];Para f <- 1 hasta 6 hacer Para c <- 1 hasta 4 hacer

Escribir "Leer dato:";Leer M[ f, c];

FinParaFinParaEscribir 'Fila 2, Columna 4= ', M[2, 4];Escribir 'Columna 3 ';Para f <- 1 hasta 6 hacer

Escribir M[f, 3];FinParaEscribir 'Fila 5 ';Para c <- 1 hasta 4 hacer Escribir M[5, c];FinParaFinProceso.

Ejercicio 4.9Leer una matriz cuadrada de 10x10 elementos. Generar un vector con los elementos que estén por encima de la diagonal principal. Informar el vector generado y los elementos de la fila 7 de la matriz.

Proceso Ejercicio49Dimension M[10, 10], V[45]; Para f <- 1 hasta 10 hacer Para c <- 1 hasta 10 hacer

Escribir "Leer dato: ";Leer M[ f, c];

FinPara Escribir ' ';FinPara

conta <- 0;Para f <- 1 hasta 10 hacer Para c <- 1 hasta 10 hacer

si c < f entonces conta <- conta + 1; V[conta] <- M[ f, c] ; FinSi FinParaFinPara

Page 6: Respuestas Guia 04 (Arreglos)

Página 6 de 10

Para r <- 1 hasta conta hacer Escribir V[r];FinParaPara c <- 1 hasta 10 hacer

Escribir M[ 7, c];FinParaFinProceso.

Ejercicio 4.10Una empresa distribuidora comercializa 10 artículos. Posee 4 sucursales y desea analizar el desempeño de las mismas. Para ello se ingresan los datos correspondientes a las cantidades vendidas de cada artículo por cada sucursal en cierto período. Primero las 10 cantidades de la sucursal 1, luego las 10 de la sucursal 2,... ,hasta la 4ta sucursal.

Determine e informe:a. Las cantidades vendidas por la empresa de cada artículo.b. El total de unidades vendidas por la sucursal 3, sumando todos los artículos.c. La cantidad vendida por la sucursal 1 del artículo 6.

Proceso Ejercicio410Dimension E[4, 10]; Para S <- 1 hasta 4 hacer Para A <- 1 hasta 10 hacer

Escribir "Cantidad de articulos:";Leer E[ S, A];

FinParaFinParaPara A <- 1 hasta 10 hacer

Sum <- 0; Para S <- 1 hasta 4 hacer

Sum <- Sum + E[S, A]; FinPara Escribir Sum;FinParaSum <- 0;Para A <- 1 hasta 10 hacer Sum <- Sum + E[3, A];FinParaEscribir "Total Sucursal 3: ", Sum;Escribir "Sucursal 1, articulo 6: ", E[1,6];FinProceso.

Ejercicio 4.11Considere los mismos datos del problema anterior. Además leer un vector con los precios de los 10 artículos que comercializa la empresa.Determine e informe: a) La recaudación de cada sucursal. b) La recaudación de la empresa. c) La sucursal que obtuvo mayor recaudación.

Proceso Ejercicio411Dimension E[4, 10], V[10];Total <- 0; Mayor <- 0; Suc <- 0;Para S <- 1 hasta 4 hacer Para A <- 1 hasta 10 hacer

Escribir "Cantidad de articulos:";Leer E[ S, A];

FinParaFinParaPara x <- 1 hasta 10 hacerEscribir "Precio de articulo:";

Leer V[ x ];FinPara

Para S <- 1 hasta 4 hacerSum <- 0;

Para A <- 1 hasta 10 hacerSum <- Sum + E[S, A] * V[S];

FinPara Escribir "Total recaudado por cada Sucursal: ", Sum; Total <- Total + Sum; Si Sum > Mayor entonces

Mayor <- Sum;Suc <- S;

FinSiFinPara

Page 7: Respuestas Guia 04 (Arreglos)

Página 7 de 10

Escribir "Total Recaudado por la empresa: ", Total;

Escribir "La Sucursal que mas recaudo fue: ", Suc, ' ',Mayor;FinProceso.

Ejercicio 4.12Una empresa constructora tiene un equipo de 6 arquitectos que trabajan individualmente en diferentes proyectos. La empresa construye diferentes construcciones de 3 calidades: Tipo 1, Tipo 2, y Tipo 3.

Se desea confeccionar una tabla con los m2 construidos sobre la base de los proyectos de cada arquitecto y por cada tipo de construcción en lo que va del año. Para ello se ingresan como datos:

Nro. arquitecto, Tipo de construcción , Cantidad de m2 , donde Nro. arquitecto es un valor entre 1

y 6; Tipo de construcción un número entre 1 y 3 y Cantidad de m2, la superficie involucrada en el proyecto. Estos datos finalizan con Nro. de arquitecto igual a 0. Estas ternas de datos llegan sin orden alguno. Y cada arquitecto ha realizado varios proyectos. Determine e informe: a) El total

en m2 proyectado por cada arquitecto de cada tipo de construcción. b) El total en m2 proyectado por la empresa computando todos los tipos.

Proceso Ejercicio412Dimension M[6, 3];Para Tipo <- 1 hasta 3 hacer

Para Arq <- 1 hasta 6 hacerM[Arq, Tipo] <- 0;

FinParaFinParaTotal <- 0;Escribir "Ingrese Num de Arquitecto (1-6): ";Leer Arq;Mientras (Arq <> 0) hacer

Escribir "Tipo de Obra (1-3): ";Leer Tipo;Escribir "Metros Cuadrados: ";Leer M2;M[Arq, Tipo] <- M[Arq, Tipo] + M2;Total <- Total + M2;Escribir "Ingrese Num de Arquitecto (1-6): ";Leer Arq;

FinMientrasPara Tipo <- 1 hasta 3 hacer Escribir 'Obra Tipo ',Tipo;

Para Arq <- 1 hasta 6 hacerEscribir M[Arq, Tipo];

FinParaFinParaEscribir "Total de M2 proyectado por la empresa: ", Total;FinProceso.

Ejercicio 4.13

Page 8: Respuestas Guia 04 (Arreglos)

Página 8 de 10

Leer 2 matrices A y B de 8x12 elementos cada una. Calcular e informar la matriz suma y la matriz promedio.

Proceso Ejercicio413Dimension A[8, 12], B[8, 12], C[8, 12], D[8, 12];Para fila <- 1 hasta 8 hacer

Para columna <- 1 hasta 12 hacerA[fila, columna]<- fila+columna; //Leer A[fila, columna] ;B[fila, columna]<- fila+columna; //Leer B[fila, columna] ;C[fila, columna] <- A[fila, columna] + B[fila, columna];D[fila, columna] <- C[fila, columna] / 2;

FinParaFinParaPara fila <- 1 hasta 8 hacer

Para columna <- 1 hasta 12 hacerEscribir C[fila, columna] ;

FinParaFinParaPara fila <- 1 hasta 8 hacer

Para columna <- 1 hasta 12 hacerEscribir D[fila, columna] ;

FinParaFinParaFinProceso.

Ejercicio 4.14En un curso de 30 alumnos se conocen los datos de 4 evaluaciones de cierta asignatura y los nombres de los estudiantes. Se desea determinar la lista con los alumnos regulares (Promedio>=50) y la lista con los promovidos (Promedio >=75). Los datos se ingresan por cada evaluación y sin orden alguno: Nro. Alumno, Nro. evaluación, Nota

Proceso Ejercicio413Dimension Notas[30, 4], Nombres[30], Regulares[30], Promovidos[30];Para c <- 1 hasta 30 hacer

Escribir "Ingrese el Nombre del Alumno:";Leer Nombres[ c ];

FinParaPara c <- 1 hasta 120 hacer

Escribir "Ingrese el Num de Alumno: ";Leer NumAlumno;Escribir "Ingrese el Num de Evaluacion: ";Leer NumEvaluacion;Escribir "Ingrese la Nota: ";Leer Notas[NumAlumno, NumEvaluacion];

FinParaR <- 0; P <- 0;Para A <- 1 hasta 30 hacer Prom <- 0;

Para E <- 1 hasta 4 hacerProm <- Prom + Notas[A, E];

Page 9: Respuestas Guia 04 (Arreglos)

Página 9 de 10

FinPara Prom <- Prom/4;

Si Prom >= 75 entoncesP <- P + 1;Promovidos[P] <- Nombres[A];

SinoSi Prom >= 50 entonces R <- R + 1; Regulares[R] <- Nombres[A];

FinSiFinSi

FinParaPara x <- 1 hasta R hacer

Escribir "Regular: ", Regulares[x] ;FinParaPara x <- 1 hasta P hacer

Escribir "Promovido: ", Promovidos[x];FinParaFinProceso.

CUESTIONARIO

Mencione las ventajas y desventajas del empleo de arreglos.Ventaja variable con subíndice, desventaja reserva un lugar constante de memoria.

4.2 ¿Es posible combinar datos de distinto tipo en una estructura de tipo arreglo ?.NO

4.3 ¿Cómo se organizan los datos de un arreglo en memoria ?.Ocupan posiciones contiguas de memoria.

¿Qué tipo de dato debe tener el índice de un arreglo en pseudocódigo? Tipo Ordinal

¿Es posible plantear una expresión como índice ?.Si

4.5 ¿Cuál es el objeto de dimensionar el tamaño de una arreglo ?.Reservar el espacio en memoria

¿En un algoritmo se puede usar en un arreglo un tamaño [longitud] diferente del propuesto en la dimensión correspondiente ?. Explique.

Siempre que longitud sea menor (o igual) al tamaño propuesto en la dimensión.

Page 10: Respuestas Guia 04 (Arreglos)

Página 10 de 10

Fundamentos de Programación 2007 Prof. Gerardo Sas

Email [email protected]