Вы находитесь на странице: 1из 5

Taller para Iterizers Nro 3

Universidad Central de Venezuela.


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;


Cont=0;

Retornar( (2 * n1 * n2) / (n1 + n2) );


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

Taller para Iterizers Nro 3

Universidad Central de Venezuela.


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
# procesa una secuencia de nmeros enteros verificando si
# cada nmero es primo o el resultado de la suma de sus
# dgitos

Funcin esPrimo(Entero x): Lgico


# verifica si el nmero x es un nmero primo, contando la
# cantidad de divisores que tiene
Entero i, contDiv;

contDiv=0;

Entero i, n, x, primo, suma;


n=100; # cantidad de nmeros procesados
Para i = 1 hasta n en 1 hacer
Escribir(Suministre el nmero + i); Leer(x);
Si esPrimo(x) Entonces
Escribir(El nmero + x + es primo);
Else
Escribir(El nmero + x + no es primo y la suma
de sus dgitos es: + sumaDgitos(x) );
FSi;
FPara;

# 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
Si (x==0) Entonces Retornar(Verdadero);
Else
Si (x<0) Entonces x = -1*x; # se voltea signo de x
FSi;
# con este Para se cuenta la cantidad de divisores de x
Para i=1 hasta x en 1 hacer
# se divide x entre cada valor de i, contando los i que
# los dividen exactamente
Si x mod i == 0 Entonces ContDiv = ContDiv + 1; FSi;
FPara;

FinAccin Principal;

Si (contDiv 2) Entonces
Sino

Retornar(Verdadero);

Retornar(Falso);

FSi;
FinFuncin;
Funcin sumaDgitos(Entero x): Entero

Pg. 2

Taller para Iterizers Nro 3

Universidad Central de Venezuela.


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
# procesa medidas de altura en n puntos del camino de
# un alpinista
Entero i, n, pAnt, pAct;
Real altAnt, altAct; Ascenso, mayorCambio;
mayorCambio=0;
n=16; # cantidad de puntos observados
ascenso=0; i = 1; altAnt = 0;

Funcin valorAbs(Real x): Real


# verifica si el valor x es menor que 0, en cuyo caso lo
# transforma a positivo, es la funcin valor absoluto o |x|
Si( x < 0) Entonces
Retornar( -1 * x );
Sino
Retornar( x );
FSi;

Mientras i 16 hacer
# a partir de la medida 2 se guarda la altura

FinFuncin;

# del punto anterior


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;
Si valorAbs(altAct altAnt) > mayorCambio Entonces

Pg. 3

Taller para Iterizers Nro 3

Universidad Central de Venezuela.


Escuela de Computacin - Algoritmos y Programacin

Profa. Yusneyi Carballo, Mayo 2013

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
# suma de los nmeros pares entre dos nmeros
# suministrados por el usuario
Entero num1, num2, suma, cuenta;

# se solicitan los datos de entrada al usuario


Escribir(Suministre los dos nmeros enteros entre
los cuales se desea calcular los pares);
Leer(num1, num2);
sumaPares(num1, num2, suma, cuenta);
Escribir(La suma de los nmeros pares entre +
num1 + y + num2 + es: + suma);
Escribir(La cantidad de nmeros pares encontrados
es: + cuenta);
FinAccin Principal;

Accin sumaPares(Entero num1, num2; Var Entero S, cont)


# suma los nmeros pares entre num1 y num2
Entero inc, aux;
inc = 1; # si num1 es menor que num2 sumamos 1 para avanzar
Si (num1 > num2) Entonces
inc = -1;

# si num1 es mayor que num2 entonces debemos

# restar 1, se debe decrementar y no incrementar


FSi;
# inicializamos variables
aux = num1; S = 0; cont = 0;
Repetir
Si (aux mod 2 == 0) entonces
S = S + aux; cont = cont + 1;
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

Taller para Iterizers Nro 3

Universidad Central de Venezuela.


Escuela de Computacin - Algoritmos y Programacin
5.

Profa. Yusneyi Carballo, Mayo 2013

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 1

k 1

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

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

Вам также может понравиться