You are on page 1of 5

Universidad Central de Venezuela.

Taller para Iterizers Nro 3


Escuela de Computacin - Algoritmos y Programacin Profa. Yusneyi Carballo, Mayo 2013

TAREA N 2: EJERCICIOS CON ESTRUCTURAS ITERATIVAS


( Tema Nro. 5 )
RESPUESTAS A CONSULTAS Y
EJEMPLOS DE SOLUCIN PARA LOS EJERCICIOS UTILIZANDO
ESTRUCTURAS ITERATIVAS Y PROCEDIMIENTOS

OBJETIVO DE LA ACTIVIDAD
Consolidar los primeros 4 temas de la materia y practicar el uso de las tres estructuras iterativas o
ciclos vistos en la materia: Para, Mientras y Repetir.

EJERCICIOS
Para cada uno de los siguientes enunciados, construye algoritmos en pseudocdigo que resuelvan el
problema mediante el secuenciamiento de acciones, validacin de datos, uso de condicionales y de
estructuras iterativas:

1. Escribir un algoritmo que solicite parejas de nmeros, hasta que el usuario indique que no hay ms
valores para procesar. El algoritmo debe contar la cantidad de parejas procesadas y calcular para cada una
la media armnica, donde: Resuelva utilizando Repetir
MediaArmnica 2 , 0* X *Y
X Y

Ayuda: En este ejercicio la cantidad de valores a procesar no es conocida, le debes solicitar al usuario el
valor X e Y para utilizar en la frmula de la Media Armnica y tambin le debes preguntar si desea procesar
otro par de valores, la respuesta del usuario la pueden guardar en una variable tipo Entero, carcter o
string, si es entero por ejemplo, utilizando 0 para no y 1 para si. Ayudarse con los ejercicios vistos en clase.

Accin Principal Funcin mediaArmnica(Entero n1, n2): Real


# procesa pares de nmeros calculndoles la media armnica # calcula la media armnica de los valores n1 y n2
String detener; Entero Cont, X, Y; Real MA; Retornar( (2 * n1 * n2) / (n1 + n2) );
Cont=0; FinFuncin;
Repetir

Repetir #solicitud y validacin de datos de entrada


Escribir(Suministre una pareja de nmeros enteros X, Y
para el clculo de la media armnica, donde X + Y debe
ser distinta de cero.);
Leer (X, Y);
Hasta (X+Y 0);
#se actualiza el contador, calcula y escribe la media
Cont = Cont + 1; # en este caso estoy contando slo los
# pares que sirven para calcular la media armnica
MA = mediaArmnica(X, Y);
Escribir(La media armnica para el par + X + - + Y +
es: + MA);
# se consulta al usuario si desea suministrar otros valores

Pg. 1
Universidad Central de Venezuela. Taller para Iterizers Nro 3
Escuela de Computacin - Algoritmos y Programacin Profa. Yusneyi Carballo, Mayo 2013

Escribir(Desea suministrar otro par de valores para el


clculo de la media armnica? Responda con si o no);
Leer (detener);

Hasta detener == si;


#se muestra el contador de pares de valores
Escribir(La cantidad de pares de valores X, Y a los que se
calcularon la media armnica es: + cont);
FinAccin Principal;

2. Escribir un algoritmo que pida una secuencia de 100 nmeros enteros al usuario y verifique para cada valor
suministrado si se trata de un nmero primo. Para los nmeros que no son primos, se debe indicar el
resultado de la suma de sus dgitos. Resuelva utilizando Para y Repetir

Ayuda:

En este ejercicio se utiliza un ciclo dentro del cual se va a solicitar 100 nmeros enteros al usuario, para
cada nmero se verifica si es un nmero primo (http://es.wikipedia.org/wiki/N%C3%BAmero_primo
http://mimosa.pntic.mec.es/jgomez53/matema/conocer/primos.htm )

Para los nmeros que no son primos, se debe indicar el resultado de la suma de sus dgitos, por ejemplo, si
el usuario suministr el nmero 24 (que NO es un primo) el resultado a mostrar ser 2 + 4, es decir la suma
de sus dgitos. Si el nmero suministrado es 252 el resultado a mostrar ser 2 + 5 + 2

En este ejercicio se usan VARIOS ciclos, ya que se tiene uno para solicitar los 100 nmeros, otro para validar
si el nmero es primo contando la cantidad de divisores que tiene, y otro para descomponer el nmero no
primo en sus dgitos ayudados con el div y el mod. Como ven por lo menos hay 3 ciclos.

Accin Principal Funcin esPrimo(Entero x): Lgico


# procesa una secuencia de nmeros enteros verificando si # verifica si el nmero x es un nmero primo, contando la
# cada nmero es primo o el resultado de la suma de sus # cantidad de divisores que tiene
# dgitos Entero i, contDiv; contDiv=0;
Entero i, n, x, primo, suma;
n=100; # cantidad de nmeros procesados # se verifica si x es igual a 0 o si X es menor que 0 por ser
# casos especiales, si es menor a 0 se transforma a positivo
Para i = 1 hasta n en 1 hacer
Si (x==0) Entonces Retornar(Verdadero);
Escribir(Suministre el nmero + i); Leer(x); Else
Si esPrimo(x) Entonces Si (x<0) Entonces x = -1*x; # se voltea signo de x
Escribir(El nmero + x + es primo); FSi;

Else
# con este Para se cuenta la cantidad de divisores de x
Escribir(El nmero + x + no es primo y la suma
Para i=1 hasta x en 1 hacer
de sus dgitos es: + sumaDgitos(x) );
# se divide x entre cada valor de i, contando los i que
FSi;
# los dividen exactamente
FPara; Si x mod i == 0 Entonces ContDiv = ContDiv + 1; FSi;
FPara;
Si (contDiv 2) Entonces Retornar(Verdadero);
FinAccin Principal;
Sino Retornar(Falso);
FSi;
FinFuncin;
Funcin sumaDgitos(Entero x): Entero

Pg. 2
Universidad Central de Venezuela. Taller para Iterizers Nro 3
Escuela de Computacin - Algoritmos y Programacin Profa. Yusneyi Carballo, Mayo 2013

# suma los dgitos del nmero x


Entero sumaDig; sumaDig=0;

Repetir
sumaDig = sumaDig + x mod 10;
x = x div 10;
Hasta x == 0;
Retornar(sumaDig);
FinFuncin;

3. Un alpinista va rumbo a un pico de una montaa verificando sus avances en 16 puntos mediante la
observacin de la altura a la que se encuentra. Construye un algoritmo que indique cunto fue el ascenso
neto del alpinista, cul fue el mayor cambio de altura y entre qu puntos se observ.
Resuelva utilizando Mientras

En la pregunta 3 no tiene sentido que declaren 16 variables.

Se lee el primer valor antes del ciclo. Luego dentro del ciclo se leen cada uno de los 15 valores restantes.
Para poder sacar la diferencia entre las alturas debes restar a la altura anterior (altAnt) la altura actual
(altAct). La primera altura (altAnt) es leda antes del ciclo y la altura actual (altAct) es la que leen dentro
del ciclo. Luego de hacer la resta, a la variable altAnt le asignas altAct, y le pides despus al usuario la
siguiente altura la cual guardas en altAct. ES DECIR, altAnt es la variable que guarda la altura anterior a la
nueva que te da el usuario, as es que podemos sacar la resta entre ellas. El ascenso total es la suma de
todas las diferencias entre la altActu y la altAnt (resta de las alturas), PERO de los resultados que sean
positivos, ya que queremos saber la altura que se subi. Aunque en C++ no existe el Repetir ... hasta, sino el
Mientras ... FMientras (while ...do) y el hacer ... Mientras (do ... While), PERO en pseudocdigo vas a usar el
Repetir y el Mientras o el Para visto en clase.

Accin Ascenso Funcin valorAbs(Real x): Real


# procesa medidas de altura en n puntos del camino de # verifica si el valor x es menor que 0, en cuyo caso lo
# un alpinista
# transforma a positivo, es la funcin valor absoluto o |x|
Entero i, n, pAnt, pAct;
Si( x < 0) Entonces
Real altAnt, altAct; Ascenso, mayorCambio;
Retornar( -1 * x );
mayorCambio=0;
Sino
n=16; # cantidad de puntos observados
Retornar( x );
ascenso=0; i = 1; altAnt = 0;
FSi;
Mientras i 16 hacer
# a partir de la medida 2 se guarda la altura
# del punto anterior FinFuncin;

Si (i 2) Entonces altAnt = altAct; FSi;


# se solicita la nueva altura
Escribir(Suministre la altura del punto +
i);Leer(altAct);
Si altAct > altAnt Entonces
# si la altura actual es mayor que la anterior, entonces
# se suma la distancia ascendida o subida, que es la
# resta entre ellas
Ascenso = Ascenso + (altAct - altAnt);
FSi;

Pg. 3
Universidad Central de Venezuela. Taller para Iterizers Nro 3
Escuela de Computacin - Algoritmos y Programacin Profa. Yusneyi Carballo, Mayo 2013

Si valorAbs(altAct altAnt) > mayorCambio Entonces


mayorCambio = valorAbs(altAct altAnt);
pAnt = i - 1; pAct = i;
FSi;
i = i + 1; #actualizamos el contador de puntos i
FMientras;
Escribir(El ascenso del alpinista es + Ascenso + , la
mayor diferencia de altura es + mayorCambio + y se
ocurri entre el punto + pAnt + y + pAct);
FinAccin Principal;

4. Algoritmo que obtenga la suma de los nmeros pares que hay entre dos nmeros ledos por teclado, es
decir, el usuario te va a indicar cual es el primer valor (num1), cual es el segundo valor (num2) y tu
algoritmo debe calcular y escribir cuntos nmeros pares hay entre num1 y num2 y cules son.
El algoritmo debe considerar el caso de que num1 < num2, de que num1 num2, o el caso en que num1 =
num2, y funcione sin obligar al usuario a que el primer nmero sea el menor.
Resuelva utilizando Repetir
Accin procesarPares Accin sumaPares(Entero num1, num2; Var Entero S, cont)
# suma de los nmeros pares entre dos nmeros # suma los nmeros pares entre num1 y num2
# suministrados por el usuario
Entero inc, aux;
Entero num1, num2, suma, cuenta;
inc = 1; # si num1 es menor que num2 sumamos 1 para avanzar
Si (num1 > num2) Entonces
# se solicitan los datos de entrada al usuario
inc = -1; # si num1 es mayor que num2 entonces debemos
Escribir(Suministre los dos nmeros enteros entre
# restar 1, se debe decrementar y no incrementar
los cuales se desea calcular los pares);
FSi;
Leer(num1, num2);
# inicializamos variables
sumaPares(num1, num2, suma, cuenta);
aux = num1; S = 0; cont = 0;
Escribir(La suma de los nmeros pares entre +
num1 + y + num2 + es: + suma); Repetir
Escribir(La cantidad de nmeros pares encontrados Si (aux mod 2 == 0) entonces
es: + cuenta);
S = S + aux; cont = cont + 1;
FinAccin Principal;
FSi;
aux = aux + inc; # inc suma o resta 1 segn num1 es menor o
# mayor que num2
Hasta aux == (num2+ inc); #nos detenemos en el siguiente a num2
FinAccin;

Pg. 4
Universidad Central de Venezuela. Taller para Iterizers Nro 3
Escuela de Computacin - Algoritmos y Programacin Profa. Yusneyi Carballo, Mayo 2013

5. Construya un algoritmo en donde se traduzca la siguiente expresin matemtica a pseudocdigo y se calcule


su resultado. Realice las validaciones necesarias sobre los valores i, n y x. Resuelva utilizando Para

n i
10 i * (k * n / x)3
x

i 1 k 1

Accin Frmula
# traduce la frmula con sumatoria y multiplicatorias a un algoritmo
Entero i, n, k, x, Suma, Multi;
Real Res1, Res2;

# se solicita y valida el valor de n, el cual debe ser 1


Repetir
Escribir(Suministre el valor de n para la frmula);
Leer(n);
Hasta n 1;
# se solicita y valida el valor de x, el cual debe ser 0 por la divisin de la multiplicatoria
Repetir
Escribir(Suministre el valor de la constante x);
Leer(x);
Hasta x 0;

Res1 = (10 ^ x ) ^ (1/2); # primera parte de la frmula


Res2 = n / x; # esta parte tambin es constante

# ciclos que calculan la sumatoria y la multiplicatoria


Suma = 0;
Para i = 1 hasta n hacer
# este primer ciclo es para la sumatoria
Multi = 1; # se reinicia Multi a 1 en cada ciclo de la sumatoria
Para k = 1 hasta i hacer
# este segundo ciclo es para la multiplicatoria
Multi = Multi * (k * Res2) ^ 3; #multiplicatoria
FPara;
Suma = Suma + i * Multi; # sumatoria de los valores
FPara;

Escribir(Resultado de la frmula: + (Res1 Suma) );


Accin Frmula;

Ciudad Universitaria de Caracas, Patrimonio Mundial


07.Mayo.2013 / 19.Mayo.2013

Pg. 5

You might also like