Ejercicios de programacin: Ciclo for y while
1.
La conjetura de Collatz
Elabore un programa que muestre como dado un nmero entero y positivo (validarlo), cumple con la conjetura de Collatz.
Imprima la serie hasta que llegue a 1.
Conjetura de Collatz:
Si el nmero es par se divide entre dos
Si el nmero es impar se multiplica por tres y se le suma 1
Tras aplicarle la operacin anterior, segn corresponda, repetir el proceso con el nmero obtenido hasta obtener
El programa debe preguntar al usuario si desea realizar otro clculo.
Diagrama de flujo
Inicio
S(menu)
S=1
n>=1 &
rem(n,
1)=0
Error nmeros
no admitidos
N~=1
rem(n
,2)==0
n=3*n+1
N=n/2
Resultado de n
Fin
Codificacin
%Este programa permite calcular la conjetura de Collatz
clear all; clc
disp('calcular conjetura de Collatz: presione 1')
disp('salir: presione 0')
s=input('que desea hacer: ');
while s==1
n=input('Ingrese el nmero entero a calcular: ');
if n>=1
if rem(n,1)==0
while n~=1
disp(n);
if rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
end
disp(n);
else
disp('error, el numero ingresado es decimal')
end
else
disp('error, el numero es menor a 0')
end
s=input('que desea hacer: ');
end
disp('gracias')
2.
El cuadrado de un nmero
Ejemplos:
puede calcularse mediante la suma de los
=1
1 = 1 = 1.
=2
2 = 1 + 3 = 4.
primeros nmeros impares.
Escriba un programa que calcule el cuadrado de un nmero
mediante sumas.
El programa debe validar, en primera instancia, si el nmero dado por el usuario es entero positivo.
El programa tambin debe preguntar al usuario si desea calcular el cuadrado de otro nmero, con el Suma de
impares
Diagrama de flujo
Inicio
S(menu)
S=1
N, acum
n>=1 &
rem(n,
1)=0
Error nmeros
no admitidos
a=1:2:2*n;
acum=acum+a
El resultado es
Fin
%El programa calcula el cuadrado de un numero entero positivo mediante la
%suma de numeros inpares
clear all; clc
disp('elevar al cuadrado: presione 1')
disp('salir: presione 0')
s=input('Que desea hacer: ');
while s==1
clear all
acum=0;
n=input('Ingrese el numero a calcular: ');
if rem(n,1)==0
if n>=1
for a=1:2:2*n;
acum=acum+a;
end
fprintf('El cuadrado de %g es %g \n', n,acum)
else
disp('Error, solo se admite nmeros positivos')
end
else
disp('Error, solo se admite numeros enteros')
end
disp('si: presione 1')
disp('no: presione 0')
s=input('Volver a calcular numero: ');
end
disp('gracias \n')
3. Elabore un programa que calcule la suma de los nmeros impares comprendidos entre dos nmeros naturales
diferentes y (validarlos), dados por el usuario. El programa debe empezar por el menor de los enteros
introducidos.
Ejemplo 1:
= 2;
= 10.
Secuencia generada:
Suma:
2 3 4 5 6 7 8 9 10
3 + 5 + 7 + 9 = 24
Inicio
Diagrama de flujo
S(menu)
S=1
A,b,d
rem(a,1)
=0 &
rem(b,1)
=0
Error nmeros
no admitidos
a>=0 &
b>=0
a~=b
rem(a
,2)==0
Error nmeros
no admitidos
c=a:2:b
c=a+1:2:b
d=c+d
d=c+d
Resultado de n
Fin
%Este programa calcula la suma de numeros impares entre un intervalo
clear all; clc
disp('calcular la suma: presione 1')
disp('salir: presione 0')
s=input('que desea hacer: ');
while s==1
clear all
a=input('ingrese el limite inferior: ');
b=input('ingrese el limite superior: ');
d=0;
if rem(a,1)==0 && rem(b,1)==0
if a>=0 && b>=0
if a~=b
if rem(a,2)==0
for c=a+1:2:b;
d=c+d;
end
fprintf('El resultado es: %g \n', d)
else
for c=a:2:b;
d=c+d;
end
fprintf('El resultado es: %g \n', d)
end
else
disp('Error, el numero es igual')
end
else
disp('error, los numeros son negativos')
end
else
disp('Error, los numeros son fraccionarios')
end
s=input('que desea hacer: ');
end
disp('gracias')
1. Un nmero natural
se denomina perfecto cuando es igual a la suma de todos sus divisores, excepto l mismo.
Ejemplos:
=6
6 = 1 + 2 + 3.
Otros nmeros son: 496 8128 33550336
Escriba un programa para saber si un nmero natural es perfecto o no.
El programa debe validar, en primera instancia, si el nmero dado por el usuario es natural
El programa tambin debe preguntar al usuario si desea verificar si otro nmero natural dado por l es o no
perfecto, con el mtodo descrito arriba, una vez que haya verificado uno anterior
Diagrama de flujo
Inicio
S(menu)
S=1
A, c
rem(a,1)
=0 &
a>=1
Error nmeros
no admitidos
b=1:1:a-1
rem(a
,b)==0
c=c+b
c==a
No es perfecto
Si es perfecto
Fin
Decodificacin
%este programa determina si un nmero natural es perfecto o no.
clear all; clc
disp('calcular un numero perfecto: presione 1')
disp('salir: presione cualquier tecla')
s=input('que desea hacer: ');
while s==1
a=input('ingresa el numero: ');
if a>=1
if rem(a,1)==0
c=0;
for b=1:1:a-1;
if rem(a,b)==0
c=c+b;
end
end
if c==a
fprintf('el %g si es un numero perfecto \n', a)
else
fprintf('el %g no es un numero perfecto \n', a)
end
else
disp('error,el numero que ingreso es decimal')
end
else
disp('error, el numero que ingreso es igual o menor a cero')
end
s=input('Desea calcular otro numero? ');
end
disp('gracias')