Sunteți pe pagina 1din 10

Página 1 de 10

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
Página 2 de 10

Ejercicio 4.2
Leer 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 Ejercicio42 FinSi


Dimension AP(100), NoAp(100); Si Nota >= 7 entonces
May2 <- 0; May1 <- 0; Nomb2 <- ' '; Cap <- Cap+1;
Cnap <- 0; Cap <- 0; AP[Cap] <- Nombre;
Escribir "Ingrese la cantidad de Numeros: Sino
"; Cnap <- Cnap+1;
Leer N; NoAP[Cnap] <- Nombre;
Para i <- 1 hasta N hacer FinSi
Escribir "Ingrese Nombre"; FinPara
Leer Nombre; //a) Listado de los alumnos aprobados
Escribir "Ingrese Nota"; Para x <- 1 hasta Cap hacer
Leer Nota; Escribir AP[x];
Si Nota > May1 entonces FinPara
May2 <- May1; //b) Las dos mayores notas y sus nombres
Nomb2 <- Nomb1; Escribir May1, May2;
May1 <- Nota; //c) Listado de los alumnos no aprobados
Nomb1 <- Nombre; Para x <- 1 hasta Cnap hacer
Sino Escribir NoAP[x];
Si Nota > May2 entonces FinPara
May2 <- Nota; FinProceso
Nomb2 <- Nombre;
FinSi

Ejercicio 4.3
Leer 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 Ejercicio43 Leer Nota;


Dimension A(100), Not(100); Si (Nota >= 8) entonces
Ap <- 0; Ap <- Ap + 1;
Escribir "Ingrese la cantidad de Alumnos:"; A[Ap] <-Nomb;
Leer N; Not[Ap] <-Nota;
Para x <- 1 hasta N hacer FinSi
Escribir "Ingrese Nombre:"; FinPara
Leer Nomb; Si Ap = 0 entonces
Escribir "Ingrese Nota:"; Escribir 'Nadie aprobo con 8 o mas'
Página 3 de 10

Sino FinPara
Para x <- 1 hasta Ap hacer FinSi
Escribir A[x],' ',Not[x]; FinProceso.

Ejercicio 4.4
Codifique 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 Ejercicio44
Dimension A[121];
Para x <- 1 hasta 120 hacer
Escribir 'Ingrese datos: ';
Leer A[x];
FinPara
Escribir "Ingrese M:";
Leer M;
Para x <- 121 hasta 33 hacer
A[x] <- A[x - 1];
FinPara
A[32] <- M;
Para x <- 1 hasta 121 hacer
Escribir A[x];
FinPara
FinProceso.

Ejercicio 4.5
Leer una arreglo lineal de 120 elementos. Informar separadamente:
a. El menor de la lista
b. Los elementos que ocupan las posiciones pares.
c. Los elementos que sean múltiplos de 9. Si no hay, indicar tal situación.

Proceso Ejercicio45
Dimension 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
FinPara
Escribir "El menor es: ", Menor;
Para x <- 2 hasta 120 con paso 2 hacer
Escribir A[x];
FinPara
Para x <- 1 hasta 120 hacer
Si (A[x]/9) = (Trunc(A[x]/9)) entonces
Página 4 de 10

Escribir A[x];
Bandera <- 1;
FinSi
FinPara
Si Bandera = 0 entonces
Escribir "No hay multiplos de 9";
FinSi
FinProceso.

Ejercicio 4.6
Leer 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:

x1 + x2 + x3 +........ + xn
M=
N
( x1 − m ) + ( x 2 − m ) 2 +........ + ( xn − m ) 2
2
DS =
N

Proceso Ejercicio46
Dimension 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];
FinPara
M <- Sum / N;
Sum <- 0;
Para x <- 1 hasta N hacer
Sum <- Sum + (A[x] - M)^2;
FinPara
DS <- RC (Sum / N);
Escribir "Media: ",M," D.S.:",DS;
FinProceso.

Ejercicio 4.7
Leer 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 Ejercicio47
Dimension N[60];
Para x <- 1 hasta 60 hacer
Escribir x," Ingrese Nombre:";
Leer N[x];
FinPara
C <- 1;
Página 5 de 10

Mientras (C <= 60) & (N[c] <> "Juan Lopez") hacer


C <- C + 1;
FinMientras
Si (C > 60) entonces
Escribir "Juan Lopez no se encuentra en la lista"
Sino
Para x <- C hasta 59 hacer
N[x] <- N[ x + 1];
FinPara
Escribir "Se ha Eliminado a Juan Lopez de la lista, ahora cuenta con 59 elementos"
FinSi
FinProceso.

Ejercicio 4.8
Leer 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 Ejercicio48
Dimension M[6,4];
Para f <- 1 hasta 6 hacer
Para c <- 1 hasta 4 hacer
Escribir "Leer dato:";
Leer M[ f, c];
FinPara
FinPara
Escribir 'Fila 2, Columna 4= ', M[2, 4];
Escribir 'Columna 3 ';
Para f <- 1 hasta 6 hacer
Escribir M[f, 3];
FinPara
Escribir 'Fila 5 ';
Para c <- 1 hasta 4 hacer
Escribir M[5, c];
FinPara
FinProceso.

Ejercicio 4.9
Leer 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 Ejercicio49 FinPara
Dimension M[10, 10], V[45]; conta <- 0;
Para f <- 1 hasta 10 hacer Para f <- 1 hasta 10 hacer
Para c <- 1 hasta 10 hacer Para c <- 1 hasta 10 hacer
Escribir "Leer dato: "; si c < f entonces
Leer M[ f, c]; conta <- conta + 1;
FinPara V[conta] <- M[ f, c] ;
Escribir ' '; FinSi
Página 6 de 10

FinPara Para c <- 1 hasta 10 hacer


FinPara Escribir M[ 7, c];
Para r <- 1 hasta conta hacer FinPara
Escribir V[r]; FinProceso.
FinPara

Ejercicio 4.10
Una 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 Ejercicio410 Sum <- Sum + E[S, A];


Dimension E[4, 10]; FinPara
Para S <- 1 hasta 4 hacer Escribir Sum;
Para A <- 1 hasta 10 hacer FinPara
Escribir "Cantidad de articulos:"; Sum <- 0;
Leer E[ S, A]; Para A <- 1 hasta 10 hacer
FinPara Sum <- Sum + E[3, A];
FinPara FinPara
Para A <- 1 hasta 10 hacer Escribir "Total Sucursal 3: ", Sum;
Sum <- 0; Escribir "Sucursal 1, articulo 6: ", E[1,6];
Para S <- 1 hasta 4 hacer FinProceso.

Ejercicio 4.11
Considere 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 Ejercicio411 FinPara


Dimension E[4, 10], V[10]; Para S <- 1 hasta 4 hacer
Total <- 0; Mayor <- 0; Suc <- 0; Sum <- 0;
Para S <- 1 hasta 4 hacer Para A <- 1 hasta 10 hacer
Para A <- 1 hasta 10 hacer Sum <- Sum + E[S, A] * V[S];
Escribir "Cantidad de articulos:"; FinPara
Leer E[ S, A]; Escribir "Total recaudado por cada
FinPara Sucursal: ", Sum;
FinPara Total <- Total + Sum;
Para x <- 1 hasta 10 hacer Si Sum > Mayor entonces
Escribir "Precio de articulo:"; Mayor <- Sum;
Leer V[ x ]; Suc <- S;
FinSi
Página 7 de 10

FinPara Escribir "La Sucursal que mas recaudo fue:


Escribir "Total Recaudado por la empresa: ", Suc, ' ',Mayor;
", Total; FinProceso.

Ejercicio 4.12
Una 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 Ejercicio412
Dimension M[6, 3];
Para Tipo <- 1 hasta 3 hacer
Para Arq <- 1 hasta 6 hacer
M[Arq, Tipo] <- 0;
FinPara
FinPara
Total <- 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;
FinMientras
Para Tipo <- 1 hasta 3 hacer
Escribir 'Obra Tipo ',Tipo;
Para Arq <- 1 hasta 6 hacer
Escribir M[Arq, Tipo];
FinPara
FinPara
Escribir "Total de M2 proyectado por la empresa: ", Total;
FinProceso.

Ejercicio 4.13
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 Ejercicio413
Dimension A[8, 12], B[8, 12], C[8, 12], D[8, 12];
Para fila <- 1 hasta 8 hacer
Para columna <- 1 hasta 12 hacer
A[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;
FinPara
FinPara
Para fila <- 1 hasta 8 hacer
Para columna <- 1 hasta 12 hacer
Escribir C[fila, columna] ;
FinPara
FinPara
Para fila <- 1 hasta 8 hacer
Para columna <- 1 hasta 12 hacer
Escribir D[fila, columna] ;
FinPara
FinPara
FinProceso.

Ejercicio 4.14
En 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 Ejercicio413
Dimension Notas[30, 4], Nombres[30], Regulares[30], Promovidos[30];
Para c <- 1 hasta 30 hacer
Escribir "Ingrese el Nombre del Alumno:";
Leer Nombres[ c ];
FinPara
Para 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];
FinPara
R <- 0; P <- 0;
Para A <- 1 hasta 30 hacer
Prom <- 0;
Para E <- 1 hasta 4 hacer
Prom <- Prom + Notas[A, E];
Página 9 de 10

FinPara
Prom <- Prom/4;
Si Prom >= 75 entonces
P <- P + 1;
Promovidos[P] <- Nombres[A];
Sino
Si Prom >= 50 entonces
R <- R + 1;
Regulares[R] <- Nombres[A];
FinSi
FinSi
FinPara
Para x <- 1 hasta R hacer
Escribir "Regular: ", Regulares[x] ;
FinPara
Para x <- 1 hasta P hacer
Escribir "Promovido: ", Promovidos[x];
FinPara
FinProceso.

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.
Página 10 de 10

Fundamentos de Programación 2007


Prof. Gerardo Sas
Email gsas@fich.unl.edu.ar

S-ar putea să vă placă și