Está en la página 1de 41

GUIA DE EJERCICIOS DESARROLLADOS 01

El rendimiento de un alumno se clasifica de acuerdo a lo siguiente:


BUENO:
si su promedio esta entre 16 y 20
REGULAR:
si su promedio esta entre 11 y 15
DEFICIENTE:
si su promedio esta entre 6 y 10
PESIMO:
si su promedio esta entre 0 y 5
Escribir un programa en c++ que permita ingresar 3 notas de un alumno e imprima
cual es su rendimiento.
Solucion :
#include <iostream.h>
#include <stdlib.h>
void main()
{ int n1, n2, n3,prom;
cout<<"ingrese primer numero ";cin>>n1 ;
cout<<"Ingrese segundo numero ";cin>>n2;
cout<<"Ingrese tercer numero ";cin>>n3;
prom=(n1+n2+n3);
if (prom<=5)
cout<<"Pesimo";
else if (prom<=10)
cout<<"Deficiente";
else if(prom<=15)
cout<<"Regular";
else if(prom<=20)
cout<<"Bueno";
}

Escribir un programa en C++ que permita ingresar una hora ( en horas, minutos y
segundos) e imprima la hora un segundo despus.
Solucion :
#include <iostream.h>
#include <stdlib.h>
void main()
{ int ns, hf, mf, sf, hh, mm, ss;
cout<<"Ingrese hora";cin>>hh ;
cout<<"Ingrese minutos";cin>>mm;
cout<<"Ingrese segundos";cin>>ss;
ns= hh*360+mm*60+ss+1;
hf=ns/3600;
ns=ns-hf*3600;
mf=ns/60;
ns=ns-mf*60;

sf=ns;
cout<<"La nueva hora es:";
cout<<hf<<":"<<mf<<":"<<sf;
}
3

Si se compra 100 unidades o mas de un articulo se obtiene un descuento del 40%, si


se compra desde 26 hata 99 el descuento es de 20%, si se compra desde 10 hasta
25 el descuento es del 12%. Para cantidades menores no hay descuento.
Escribir un programa en C++ que permita ingresar el costo unitario del articulo y la
cantidad de unidades compradas e imprima el monto a pagar.
#include <iostream.h>
#include <stdlib.h>
void main()
{ int costounitario, cu, n;
cout<<"ingrese Costo Unitario";cin>>cu ;
cout<<"Ingrese Cantidad a comprar;cin>>n;
If (10<=n<=25
Monto=(1-0.12)*n;
Else if (26<=n<=99)
Monto=(1-0.20)*n;
Else If(n>=100)
Monto=(1-0.40)*n
cout<<"Monto a Pagar;monto;
}

Escribir un programa en C++ que permita ingresar un numero entero que representa
una determinada cantidad de dinero e imprima cuantos billetes de 100, 50, 20, 10, 5
y 1 soles se necesitan.
Solucion :
#include <iostream.h>
#include <stdlib.h>
void main()
{ int nb100, nb50, nb20,nb10, nb5, nb1, n;
cout<<"ingrese Cantidad ";cin>>n ;
nb100=n/100;
n=n-nb100*100;
nb50=n/50;
n=n-nb50*50;
nb20=n/20;
n=n-nb20*20;
nb10=n/10;
n=n-nb10*10;
nb5=n/5;

n=n-nb5*5;
nb1=n;
cout<<"===>"<<nb1;
}

Un banco establece que la clave secreta para acceso a sus cajeros automaticos debe
ser un numero de cuatro digitos, tales que ninguno de ellos se repita y que la suma
de los dos digitos intermedios sea par. Escribir un programa en C++ que permita
ingresar un valor entero y si se trata de una clave valida imprimir el segundo digito
menor.
Solucion :

# include<iostream.h>
int IngresarClave();
void ValidarClave();
void MostrarSegundoMenor(int pc,int sc,int tc, int cc);
void main(){
ValidarClave();
}
int IngresarClave(){
int n;
cout<<"ingrese contrasea bancaria"<<endl;
cin>>n;
return n;
}
void ValidarClave(){
int pc,sc,tc,cc;
int n;
do{
n=IngresarClave() ;
pc=(n/1000);
sc=(n%1000)/100;
tc=((n%1000)%100)/10;
cc=(((n%1000)%100)%10)/1;

}while((n<1000) || (n>9999) || (pc==sc) || (pc==tc)||(pc==cc)


|| (sc==pc) || (sc==tc)||(sc==cc) ||
(tc==pc) || (tc==sc) || (tc==cc) || (sc+tc)%2!=0);
MostrarSegundoMenor(pc,sc,tc,cc) ;
}
void MostrarSegundoMenor(int pc,int sc,int tc, int cc){
int aux,x[4],i,j;
x[0]=pc;
x[1]=sc;
x[2]=tc;
x[3]=cc;
for( i=0;i<=3;i++){
for(j=0;j<=3;j++){
if(x[i]<x[j]){
aux=x[i];
x[i]=x[j];
x[j]=aux;
}}}
cout<<"El Segundo Menor="<<x[1]<<endl;
}
6

La temperatura de un horno puede variar desde 0 hasta 100 grados centigrados y se


clasifica de acuerdo a lo siguiente:
MUY ALTA:
si su valor esta entre 90oC y 100oC
ALTA:
si su valor esta entre 80oC y 89oC
NORMAL:
si su valor esta entre 40oC y 79oC
BAJA:
si su valor esta entre 0oC y 39oC
Solucion :
#include <iostream.h>
#include <stdlib.h>
void main()
{ int temp,prom;
cout<<"Ingrese Temperatura ";cin>>temp ;
if( (temp >=90) && (temp<=100))
cout<<"Muy Alta";
else if ( (temp >=80) && (temp<=89))
cout<<"Alta";
else if( (temp >=40) && (temp<=79))
cout<<"Normal";
else if( (temp >=0) && (temp<=39))

cout<<"Baja";
}
7

Escribir un programa en C++ que permita ingresar un numero de cuatro digitos y


que obtenga e imprima el numero que resulta de invertir sus cifras
#include <iostream.h>
#include <stdlib.h>
void main()
{ int num;
cout<<"ingrese un numero de 4 cifras";cin>>num;
pc=num/1000;
sc=(num%1000)/100;
num2=num-pc*1000-sc*100;
tc=num2/10;
cc=num2%10;
cout<<"Numero invertido";
cout<<cc*1000+tc*100+sc*10+pc;
}

Escribir un programa en c++ que me permita ingresar un mes ( numero ) y un ao


e imprima cuantos dias tiene .tener en cuenta el caso de ao bisiestos.
#include <iostream.h>

void main() {
int ano,mes;
cout<<"Ingrese ao:";cin>>ano;
cout<<"Ingrese mes:";cin>>mes;
if( mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12 ){
cout<<"El Mes tiene 31 dias"<<endl;
}
if( mes==4 || mes==6|| mes==9 || mes==11 ){
cout<<"El Mes tiene 30 dias"<<endl;
}
if( mes==2 ){

if((ano%4==0) && (ano%100!=0) && (ano%400==0)){


cout<<"El Mes dos tiene 29 dias"<<endl;
}
else {
cout<<"El Mes dos tiene 28 dias"<<endl;
}

Ejercicios sobre Estructura Repetitiva


1

Escribir un programa en c++ que permita ingresar el largo y el ancho


rectangulos e imprima el area del rectangulo con el menor permetro.

de N

Solucion :
#include <iostream.h>
void main() {
int n,menor;
double largo,ancho,perimetro,area;
double largoMenor,anchoMenor;
cout<<"ingrese cantidad de Datos de Triangulos ";cin>>n ;
cout<<"Ingrese el Largo ";cin>>largo;
cout<<"Ingrese el Ancho ";cin>>ancho;
perimetro=2*largo+2*ancho;
menor=perimetro;
for( int i=2;i<=n;i++){
cout<<"Ingrese el Largo ";cin>>largo;
cout<<"Ingrese el Ancho ";cin>>ancho;
perimetro=2*largo+2*ancho;
if(perimetro<menor){
largoMenor=largo;
anchoMenor=ancho;
menor=perimetro;
}
}
cout<<"El Perimetro Menor es =="<<menor;
cout<<"\nEl Area del Perimetro Menor ==";cin>>area;
}

Escribir un programa en c++ que me permita ingresar un numero entero positivo y


que imprima la suma de sus cifras.
Solucion :
#include<iostream.h>
void main(){
long n,r,acum=0;

cout<<"Ingrese Numero===";cin>>n;
x=0;
while(n>0)
{
r=n%10;
n=n/10;
x=x*10+r;
acum=acum+r;
}
cout<<"Numero Inverso ==== "<<acum;
}

Escribir un programa en C++ que me permita ingresar 2 enteros N y D que


representan los valores del denominador de un quebrado. Imprimir el quebrado
despus de haber sido simplificado;
Solucion :
#include <iostream.h>
void main() {
int mayor,menor;
int n,j,temp,sw,resto;
int a[40];
n=2;
for(j=1;j<=n;j++){
if(j==1)
cout<<"Ingrese Numerador"<<endl;
else
cout<<"Ingrese Denominador"<<endl;
cin>>a[j];
}
for(j=1;j<=n-1;j++){
if( a[j]<a[j+1])
{ temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
mayor= a[j+1];
menor=a[j] ;
do {
sw=0;
resto=a[j]%a[j+1];
if(resto==0)
{
sw=1;
}
else {

a[j]=a[j+1];
a [j+1]=resto;

} }while(sw!=1);

cout<<"El NUMERADOR : "<<(mayor/a[j+1])<<endl;


cout<<"El DENOMINADOR : "<<(menor/a[j+1])<<endl;
}
}
4

Escribir un programa en c que permita ingresar para los N alumnos de una


universidad : SEXO ( M o F ) , edad y carrera ( A,B,C ) . imprimir la
carrera con menor promedio de edad de sus alumnos que son varones.
Soluciones :
#include <iostream.h>
void main() {
int n,i;
long edad[100],sexo,carrera;
int prom1=0,prom2=0,prom3=0,menor;
char car;
cout<<"cuantos Alumnos Deseas ingresar?????"<<endl;
cin>>n;
for( i=0;i<=n;i++) {
cout<<"Ingrese Edad ";cin>>edad[i];
cout<<"Ingrese Sexo ";cin>>sexo;
cout<<"Ingrese Carrera ";cin>>carrera;
if( ( sexo=='M') || ( sexo=='m')) {
switch(carrera ){
case 'A' : {
prom1=prom1+edad[i];
break;}
case 'B' : {

prom2=prom2+edad[i];
break;}
case 'C' : {
prom3=prom3+edad[i];
break;}
}

else {
if( ( sexo=='F') || ( sexo=='f')) {
switch(carrera ){
case 'A' : {
prom1=prom1+edad[i];
break;}
case 'B' : {
prom2=prom2+edad[i];
break;}
case 'C' : {
prom3=prom3+edad[i];
break;}
}
}
}
}
if( (prom1<prom2) && (prom1>prom3) )
{
menor=prom1;
car='A';
}
else {

if( (prom2<prom1) && (prom2>prom3))


{
menor=prom2;
car='B';
}
else
{
menor=prom3;
car='C';
}
}
cout<<"Carrera
"<<car<< "con Menor Promedio de Edades de Alumnos
Varones es =="<<menor<<endl;
}
5

Escribir un programa en c que permita ingresar un entero n y que imprima si se trata


o no de un numero capicua .
# include<iostream.h>
void main() {
long n,r;
int numero[100];
cout<<"Ingrese Numero\n";cin>>n;
int i=0;
while(n>0)
{
r=n%10;
n=n/10;
numero[i]=r;
i++;
}
int flag=-1;
int j=0;
cout<<i<<endl;
if((i%2==0) )
{
while(( numero[j]==numero[(i-1)-j] ) && (j<=(i-1))
if(j==(i-1)){
cout<<" es capicua"<<endl;
}

){

j++;

}
else
{
while(( numero[j]==numero[(i-1)-j] ) && (j<=(i-1))
if(j==(i-1)){

j++;

cout<<" es capicua"<<endl;
}
}
} }

Dada la siguente sumatoria

Solucion :
# include <iostream.h>
int factorial(int n);
void main(){
int a[100],i,n,s=0;
cout<<"ingrese cantidad de elementos"<<endl;
cin>>n;
for(i=0;i<=n;i++){
a[i+2]=a[i]+a[i+1];
}
s=0;

){

for(i=0;i<=n;i++){
s=s+a[i]/ factorial(i);
}
cout<<"La sumatoria de la serie es =="<<s<<endl;
}
int factorial(int n)
{
if( (n==0) || ( n==1) ) {
return 1;
}
else {
return n*factorial(n-1);
}
}

Escriba un programa en c que permita ingresar 2 enteros positivos e imprima sus


divisores comunes
Solucion :
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int num1, num2;
int mayor;
do
{
cout <<"Ingrese el primer numero entero y positivo: ";
cin >> num1;
} while (num1 <= 0);
do
{
cout <<"Ingrese el segundo numero entero y positivo: ";
cin >> num2;
} while (num2 <= 0);

if (num1 > num2)


{
mayor = num1;
}
else
{
mayor = num2;
};
cout <<"Los divisores comunes son: ";
for (int i = 1; i < mayor; i++)
{
if ((num1%i == 0)&&(num2%i ==0))
{
cout <<i<<" , ";
};
};
getch();
return 1;
}
8

Escriba un programa en c que permita ingresar un numero entero positivo e imprima


sus cifras al reves
Solucion :
# include<iostream.h>
# include<conio.h>
void main() {
long n,x,r;
int numero[100];
cout<<"Ingrese Numero\n";cin>>n;
int i=0;
while(n>0)
{
r=n%10;
n=n/10;
numero[i]=r;
i++;
}
for(int j=0;j<=i-1;j++){
cout<<numero[j];

}
}

Escriba un programa en c que permita ingresar un numero entero positivo e


imprima su respectivo factorial.
Solucion :
# include <iostream.h>
int factorial(int n);
void main(){
int i;
cout<<"Ingrese el numero de factorial"<<endl;
cin>>i;
cout<<" El Factorial es =="<<factorial(i)<<endl;
}
int factorial(int n)
{
if( (n==0) || ( n==1) ) {
return 1;
}
else {
return n*factorial(n-1);
}
}

10 Escriba un programa en c que permita ingresar un numero entero positivo N e


imrprima los N primeros terminos de la serie finonacci 1,1 ,2,3,5,8,13,21 ..
Solucion :
#include <iostream.h>
#include <stdlib.h>
int fibonacci( int t )
{
if ( t == 1 || t == 2 )
return 1;
else
return fibonacci(t-1)+fibonacci(t-2);
}

void main()
{
int term, fib;
cout<<"Ingrese termino de la serie de Fibonacci: ";
cin>>term;
fib = fibonacci(term);
cout<<"El termino "<<term<<" es "<<fib<<endl;
}

12. Escribir un programa en c que permita ingresar 2 numeros enteros positivos A y B e


imprima el resultado que se obtiene al elevar A a la potencia B.
Solucion :
#include <iostream.h>
#include <math.h>
void main()
{
int n,potencia;
cout<<"Ingrese numero a elevar ";
cin>>n;
potencia=pow(n,2);
cout<<"La potencia es "<<potencia<<endl;
}

arreglos
Crea un array o arreglo unidimensional con un tamao de 5, asignale los valores numricos
manualmente (los que tu quieras) y muestralos por pantalla.
SeleccionarEsconder

Spoiler
1
2
3
4
5
6
7
8
9

Proceso Ejercicio1
//Declaramos variables
Definir num como entero;
Definir TAMANIO como entero;
TAMANIO<-5
//Definimos el array
Dimension num[TAMANIO]
//Asignamos valores
num[1]<-1

10
11
12
13
14
15
16
17
18
19
20
21
22

num[2]<-2
num[3]<-3
num[4]<-4
num[5]<-5
//Recorremos el array y mostramos su contenido
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
escribir num[i]
Fin Para
FinProceso

Modifica el ejercicio anterior para que insertes los valores numricos con leer mediante un bucle y
los muestre por pantalla.
SeleccionarEsconder

Spoiler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Proceso Ejercicio2
//Declaramos variables
Definir num como entero
Definir TAMANIO como entero;
TAMANIO<-5;
//Definimos el array
Dimension num[TAMANIO]
//Introducimos valores
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
Escribir "Introduce un valor para la posicin ",i
leer num[i]
Fin Para
//Recorremos el array y mostramos su contenido
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
escribir num[i]
FinPara
FinProceso

Crea un array o arreglo unidimensional con un tamao de 10, inserta los valores numricos que
desees de la manera que quieras y muestra por pantalla la media de valores del array.

Spoiler
1

Proceso Ejercicio3

SeleccionarEsconder

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

//Declaramos variables
Definir num como entero
Definir TAMANIO como entero
Definir suma Como Entero
TAMANIO<-10
//Definimos el array
Dimension num[TAMANIO]
//Introducimos valores
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
Escribir "Introduce un valor para la posicin ",i
leer num[i]
Fin Para
//Recorremos el array, sumando su contenido
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
suma<-suma+num[i]
FinPara
FinProceso

4) Crea un array o arreglo unidimensional donde tu le indiques el tamao por teclado y crear una
funcin que rellene el array o arreglo con los mltiplos de un numero pedido por teclado. Por
ejemplo, si defino un array de tamao 5 y eligo un 3 en la funcin, el array contendr 3, 6, 9, 12, 15.
Muestralos por pantalla usando otra funcin distinta.

Spoiler

SeleccionarEsconder

SubProceso asignaValores ( num, TAMANIO, num_multiplo )


Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
num[i]<-num_multiplo*i
Fin Para
Fin SubProceso
SubProceso mostrarArray ( num, TAMANIO )
Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
escribir num[i]
Fin Para
Fin SubProceso
Proceso Ejercicio4
//La creacion de subprocesos es totalmente opcional
//Declaramos variables
Definir num como entero
Definir TAMANIO como entero
Definir suma Como Entero
definir num_multiplo como entero
//Definimos el tamao del array por teclado
escribir "Introduce el tamao del array"
leer TAMANIO
//Definimos el array
Dimension num[TAMANIO]
//Definimos el numero con el que rellenaremos el array con sus
multiplos
escribir "Introduce el numero con el que rellenar"
leer num_multiplo
//invocamos a las funciones
asignaValores(num, TAMANIO, num_multiplo)
mostrarArray(num, TAMANIO)
FinProceso

5) Crea dos arrays o arreglos unidimensionales que tengan el mismo tamao (lo pedir por teclado),
en uno de ellos almacenaras nombres de personas como cadenas, en el otro array o arreglo ira
almacenando la longitud de los nombres, para ello puedes usar la funcin LONGITUD(cadena) que
viene en PseInt. Muestra por pantalla el nombre y la longitud que tiene. Puedes usar funciones si lo
deseas.
SeleccionarEsconder

Funciones
) Escribe una funcin en pseudocdigo que devuelva el resultado de un nmero elevado a un
exponente dado.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Funcion potencia (base:numerica, exponente:numerica):numerica


Var resultado: numerica
Inicio
resultado<-base^exponente
devolver resultado
Fin-Funcion
Algoritmo principal
Var resultado, base, exponente: numerica
Inicio
Escribir "Introduce la base"
Leer base
Escribir "Introduce el exponente"
Leer exponente
resultado<-potencia(base, exponente)
escribir resultado
Fin

2) Escribe una funcin en pseudocdigo que devuelva el trmino N (siendo N un nmero entero
positivo) de la serie de Fibonacci, esta sigue la siguiente serie: 1, 1, 2, 3, 5, 8, 13, 21
y as sucesivamente. Date cuenta, que para obtener un numero, suma los dos nmeros anteriores.
Por ejemplo, si introducimos un 3, la funcin nos devuelve el 2.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Funcion Fibonacci (posicion: numerica):numerica


Var contador, num1, num2, suma
Inicio
num1<-0
num2<-1
suma<-1
contador<-1
Mientras (contador<posicion)
suma<-num1+num2
num1<-num2
num2<-suma
contador<-contador+1
FinMientras
devolver suma
Fin-Funcion
Algoritmo principal
Var posicion, resultado: numerica
Inicio
leer posicion

SeleccionarEsconder

18
19
20
21
22
23

resultado<-Fibonacci(posicion)
escribir resultado

Fin

PseInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

SubProceso suma<- fibonacci ( posicion )


num1<-0
num2<-1
suma<-1
contador<-1
Mientras (contador<posicion)
suma<-num1+num2
num1<-num2
num2<-suma
contador<-contador+1
FinMientras
FinSubProceso
Proceso ejercicio_funciones_2
Leer posicion
resultado<-fibonacci(posicion)
Escribir resultado
FinProceso

) Escribe una funcin en pseudocdigo que devuelva el rea de un crculo dado su radio. Recuerda
que para calcular el area, la formula es * r2

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Funcion area_circulo (radio: numerico):numerico


Var area: numerico
Inicio
PI<-3.14
area<-PI*(radio^2)
devolver area
Fin-Funcion
Algoritmo principal
Var radio, area: numerica
Inicio
escribir "Escribe el radio"
leer radio
area<-area_circulo(radio)
escribir area
Fin

PseInt:

SeleccionarEsconder

1
2
3
4
5
6
7
8
9
10
11

SubProceso area <- area_circulo ( radio )


PI<-3.14
area<-PI*(radio^2)
FinSubProceso
Proceso ejercicio_funciones_3
Escribir "Escribe el radio"
leer radio
area<-area_circulo(radio)
Escribir area
FinProceso

4) Escribe una funcin en pseudocdigo que devuelva el factorial de un nmero N (siendo N un


nmero entero positivo). Haz despus un algoritmo principal que pida por teclado dos nmeros y
escriba en pantalla los factoriales de cada nmero comprendido entre los dos anteriores. El
factorial de 5 es el resultado de 5*4*3*2*1

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Funcion factorial (numero: numerica):numerica


Var contador, suma: numerica
Inicio
suma<-numero
Desde contador<-numero-1 hasta 1 In -1
suma<-suma*contador
FinDesde
Fin-Funcion
Algoritmo principal
Var numero, resultado: numerica
Inicio
escribir "Introduce un numero"
leer numero
resultado<-factorial(numero)
escribir resultado
Fin

PseInt:
SubProceso suma <- factorial ( numero )
1
suma<-numero
2
Para contador<-numero-1 hasta 1 con paso -1
3
suma<-suma*contador
4
FinPara
FinSubProceso
5

6
7
8
9
10
11
12

Proceso ejercicio_funciones_5
escribir "Introduce un numero"
leer numero
resultado<-factorial(numero)
escribir resultado
FinProceso

SeleccionarEsconder

13
5) Escribe una funcin en pseudocdigo que devuelva si un nmero dado es primo o no. Para que
un numero sea primo solo es divisible entre 1 y s mismo (por ejemplo, 13, 17, 19). Utilizando la
funcin, escribe un programa que escriba todos los nmeros primos entre 1 y un
nmero ledo desde el teclado. Piensa que debe devolver la funcin.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Funcion primo (cuenta_primos: numerica):booleano


Var contador_divisores, divisor: numerica
Inicio
contador_divisores<-0
Desde divisor<-trunc(cuenta_primos^0.5) hasta 1 In -1
si (cuenta_primos MOD divisor=0) Entonces
contador_divisores<-contador_divisores+1
finSi
FinDesde
Si (contador_divisores>2) Entonces
devolver false
sino
devolver true
FinSi
Fin-Funcion
Algoritmo principal
Var limite, cuenta_primos: numerica
Inicio
Escribir "Introduce el limite"
Leer limite
desde cuenta_primos<-1 hasta limite In 1
Si(primo(cuenta_primos)=true) entonces
escribir cuenta_primos
FinSi
Findesde
Fin

PseInt:
SubProceso resultado<- primo ( cuenta_primos )
1
contador_divisores<-0
2
para divisor<-trunc(cuenta_primos^0.5) hasta 1 con paso -1
3
si (cuenta_primos MOD divisor=0) Entonces
4
contador_divisores<-contador_divisores+1
finSi
5
Finpara
6
Si (contador_divisores>=2) Entonces
7
resultado<-Falso
8
sino
9
resultado<-Verdadero
FinSi
10
11 FinSubProceso

12

13
14
15
16
17
18
19
20
21
22
23

Proceso ejercicio_funciones_5
Escribir "Introduce el limite"
Leer limite
Para cuenta_primos<-1 hasta limite Con Paso 1
Si(primo(cuenta_primos)=Verdadero) entonces
escribir cuenta_primos
FinSi
FinPara
FinProceso

6) Escribe una funcin en pseudocdigo que dado un nmero decimal (en base 10), entre 0 y 15,
devuelva el valor equivalente en sistema de numeracin binario(en este caso, un numero binario de
4 dgitos). Os aconsejo que los dgitos binarios sean una cadena, para que se puedan concatenar
entre s. Por ejemplo, si introducimos un 7, nos devuelva 0111. Si se introduce un numero menos
que 0 o mayor que 16, no mostrara un mensaje de error.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

Funcion DecABin (numero: numerica):cadena


Var contador: numerica
digito, resultado: cadena
Inicio
contador<-1
Mientras contador<5 Hacer
si numero mod 2= 0 Entonces
digito<-"0"
Sino
digito<-"1"
FinSi
numero<-trunc (numero/2)
resultado<-digito+resultado
contador<-contador+1
FinMientras
Fin-Funcion
Algoritmo principal
Var numero: numerica
resultado:cadena
Inicio
Escribir "Introduce un numero"
Leer numero
si (numero>=0 y numero<16) Entonces
resultado<-DecABin(numero)
escribir resultado
Sino
Escribir "Introduce un numero entre 0 y 15"
FinSi
Fin

SeleccionarEsconder

30
PseInt:
SubProceso resultado <- DecAbin ( numero )
contador<-1
Mientras contador<5 Hacer
si numero mod 2= 0 Entonces
digito<-"0"
Sino
digito<-"1"
FinSi
numero<-trunc (numero/2)
resultado<-digito+resultado
contador<-contador+1
FinMientras
FinSubProceso
Proceso ejercicio_funciones_6
Escribir "Introduce un numero"
Leer numero
si (numero>=0 y numero<16) Entonces
resultado<-DecAbin(numero)
escribir resultado
Sino
Escribir "Introduce un numero entre 0 y 15"
FinSi
FinProceso
7) Escribe una funcin en pseudocdigo llamada ConversionMoneda () que permita convertir una
cantidad de dinero dada en dolares, libras o yenes a Euros. Estas son las equivalencias
aproximadas:

1 libra=1,22 euros

1 dolar=0,75 euros

1 yen=0.009 euros

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Funcion conversor (moneda: cadena, cantidad: numerica):numerica


Var total: numerica
Inicio
si (moneda="libra") Entonces
total<-cantidad*1.22
FinSi
si (moneda="dolar") Entonces
total<-cantidad*0.75
FinSi
si (moneda="yen") Entonces
total<-cantidad*0.009
FinSi
Fin-Funcion
Algoritmo principal
Var moneda: cadena
cantidad, total: numerica
Inicio
//NOTA: las 2 siguientes lineas van en una linea

17
18
19
20
21
22
23
24
25
26
27

Fin

Escribir "Introduce la moneda que quieras pasar a euros:


libra,dolar o yen"
Leer moneda
Escribir "Introduce una cantidad"
Leer cantidad
total<-conversor(moneda, cantidad)
Escribir total

PseInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

SubProceso total <- conversor ( moneda, cantidad )


si (moneda="libra") Entonces
total<-cantidad*1.22
FinSi
si (moneda="dolar") Entonces
total<-cantidad*0.75
FinSi
si (moneda="yen") Entonces
total<-cantidad*0.009
FinSi
FinSubProceso
Proceso ejercicio_funciones_7
//NOTA: las siguientes 2 lineas van en una linea
Escribir "Introduce la moneda que quieras pasar a euros:
libra,dolar o yen"
Leer moneda
Escribir "Introduce una cantidad"
Leer cantidad
total<-conversor(moneda, cantidad)
Escribir total
FinProceso

8) Los empleados de una fabrica trabajan en dos turnos, Diurno y Nocturno. Se desea calcular el
jornal diario de acuerdo a con las siguientes reglas:

La tarifa de las horas diurnas es de 10

La tarifa de las horas nocturnas es de 13,5

En caso de ser festivo, la tarifa se incrementa en un 10% en caso de turno diurno y en un


15% para el nocturno.

Escribe una funcin en pseudocdigo llamada jornal() que tome como parmetros el n de horas,
el turno y el tipo de da (Festivo, Laborable) y nos devuelva el sueldo a cobrar. Escribe tambin

un algoritmo principal que pida el nombre del trabajador, el da de la semana, turno y n de horas
trabajadas, nos escriba el sueldo a cobrar usando la funcin anterior.
Ten en cuenta, que en la funcin nos pide el tipo de da pero en el algoritmo le pedimos al da es
decir, que debemos saber si el dia que introduce el usuario es festivo o no.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

Funcion jornal (n_horas:numerica, turno:cadena,


tipo_dia:cadena):numerica
Var sueldo:numerico
Inicio
si (turno="diurno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*10
Sino
si (turno="diurno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(10*1.1)
FinSi
FinSi
si (turno="nocturno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*13.5
Sino
si (turno="nocturno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(13.5*1.1)
FinSi
FinSi
devolver sueldo
Fin-Funcion
Var trabajador, turno, dia, tipo_dia: cadena
n_horas, sueldo: numerico
Inicio
Escribir "Introduce el nombre del trabajador"
Leer trabajador
Escribir "Introduce el numero de horas"
Leer n_horas
Escribir "Introduce en turno: diurno o nocturno"
Leer turno
Escribir "Introduce el dia"
Leer dia
Segun dia Hacer
"lunes":
tipo_dia<-"laborable"
"martes":
tipo_dia<-"laborable"
"miercoles":
tipo_dia<-"laborable"
"jueves":
tipo_dia<-"laborable"
"viernes":
tipo_dia<-"laborable"
"sabado":
tipo_dia<-"festivo"

38
39
40
41
42
43
44
45
46
47
48
49
50

"domingo":
tipo_dia<-"festivo"
FinSegun
sueldo<-jornal(n_horas, turno, tipo_dia)
Escribir "El trabajador " trabajador " cobra " sueldo " euros"
Fin

PseInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

SubProceso sueldo <- jornal ( n_horas, turno, tipo_dia )


si (turno="diurno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*10
Sino
si (turno="diurno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(10*1.1)
FinSi
FinSi
si (turno="nocturno" y tipo_dia="laborable") Entonces
sueldo<-n_horas*13.5
Sino
si (turno="nocturno" y tipo_dia="festivo") Entonces
sueldo<-n_horas*(13.5*1.1)
FinSi
FinSi
FinSubProceso
Proceso ejercicio_8
Escribir "Introduce el nombre del trabajador"
Leer trabajador
Escribir "Introduce el numero de horas"
Leer n_horas
Escribir "Introduce en turno: diurno o nocturno"
Leer turno
Escribir "Introduce el dia"
Leer dia
Segun dia Hacer
"lunes":
tipo_dia<-"laborable"
"martes":
tipo_dia<-"laborable"
"miercoles":
tipo_dia<-"laborable"
"jueves":
tipo_dia<-"laborable"
"viernes":
tipo_dia<-"laborable"

32
33
34
35
36
37
38
39
40
41
42
43
44
45

"sabado":
tipo_dia<-"festivo"
"domingo":
tipo_dia<-"festivo"
FinSegun
sueldo<-jornal(n_horas, turno, tipo_dia)
Escribir "El trabajador " trabajador " cobra " sueldo " euros"
FinProceso

9) Algoritmo que dado un nmero entero (este numero no podra ser menor o igual que 0),
determine el nmero de cifras que tiene. Por ejemplo, si introduzco un 253, me devuelva un 3.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Funcion Cuenta_cifras ( numero ):numerica


Var numero_auxiliar, cifras: numerica
Inicio
numero_auxiliar<-numero
cifras<-0
Mientras (numero_auxiliar>0)
numero_auxiliar<-trunc(numero_auxiliar/10)
cifras<-cifras+1
FinMientras
FinSubProceso
Algoritmo principal
Var numero, numero_cifras: numerica
Inicio
Escribir "Escribe un numero"
Leer numero
si (numero<=0) Entonces
Escribir "Introduce un numero mayor que 0"
sino
numero_cifras<-Cuenta_cifras(numero)
Escribir "El numero " numero " tiene " numero_cifras " cifras"
FinSi
Fin

PseInt:
SubProceso cifras <- Cuenta_cifras ( numero )
1
numero_auxiliar<-numero
2
cifras<-0
3
Mientras (numero_auxiliar>0) Hacer
4
numero_auxiliar<-trunc(numero_auxiliar/10)

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

cifras<-cifras+1
FinMientras
FinSubProceso
Proceso ejercicio_funciones_9
Escribir "Escribe un numero"
Leer numero
si (numero<=0) Entonces
Escribir "Introduce un numero mayor que 0"
sino
numero_cifras<-Cuenta_cifras(numero)
Escribir "El numero " numero " tiene " numero_cifras " cifras"
FinSi
FinProceso

) Escribe una funcin en pseudocdigo que dibuje una pirmide invertida en pantalla como la de la
figura. La altura se pasar como parmetro. Si se pasa una altura =0 o negativa, la funcin
devolver 1; en caso contrario devolver 0 (xito).
Ejemplo para altura = 5
*********
*******
*****
***
*

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Funcion pir_inver(altura: numerica):numerica


Var numast, espacios, nespacios, i, j, cod: numerica
Inicio
numast<-3+2*(altura-2)
nespacios<-numast
espacios=""
si altura=0 Entonces
cod<- (-1)
Sino
Desde i<-numast hasta 1 In -2
numast<-i
Desde k<-0 hasta numast-nespacios In 1
espacios<-espacios+" "
FinDesde
Escribir Sin Saltar espacios
Desde j<-1 hasta numast In 1
Escribir Sin Saltar "*"
FinDesde
nespacios<-nespacios-2
Escribir ""
FinDesde
cod<-0

SeleccionarEsconder

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

FinSi
Fin-Funcion
Algoritmo principal
Var altura, resultado: numerica
Inicio
Escribir "Introduce la altura de la pirmide invertida"
leer altura
resultado<-pir_inver(altura)
si resultado=-1 entonces
Escribir "ha introducido una altura 0"
Sino
Escribir ""
Escribir "introducion de datos correcta"
FinSi
Fin

PSeInt:
SubProceso cod<-pir_inver(altura)
1
numast<-3+2*(altura-2)
2
nespacios<-numast
3
espacios=""
4
si altura=0 Entonces
cod<- (-1)
5
Sino
6
Para i<-numast hasta 1 con paso -2
7
numast<-i
8
para k<-0 hasta numast-nespacios Con Paso 1
9
espacios<-espacios+" "
FinPara
10
Escribir Sin Saltar espacios
11
para j<-1 hasta numast con paso 1
12
Escribir Sin Saltar "*"
13
FinPara
nespacios<-nespacios-2
14
Escribir ""
15
FinPara
16
cod<-0
17
FinSi
18 FinSubProceso

19
20
21
22
23
24
25
26

Proceso ejercicio_10
Escribir "Introduce la altura de la pirmide invertida"
leer altura
resultado<-pir_inver(altura)
si resultado=-1 entonces
Escribir "ha introducido una altura 0"
Sino
Escribir ""

27
28
29
30
31
32
33
34

Escribir "introducion de datos correcta"


FinSi
FinProceso

ESTRUCTURA MIENTRAS
WHILE - DO WHILE
Esta estructura nos permite repetir un bloque de instrucciones con una condicion y se repite
siempre en cuanto esta condicion sea verdadera, sino no entra al ciclo miestras.
La estructura es la siguiente:
INICIO.
INSTRUCCION 1
MIENTRAS( CONDICION LOGICA) HAGA
INSTRUCCION 2
INSTRUCCION 3
FIN MIENTRAS
INSTRUCCION 4
FIN
El ciclo mientras (while) tiene que tener su final y salirse de el, tiene un limite y su limite es
hasta que la condicion ya no se cumpla, osea que sea falsa.
EJEMPLO:
Hacer un algoritmo que lea 5 numeros y determine la suma entre ellos.
INICIO
ENTERO: N, i, SUMA
i=1
SUMA=0
MIESTRAS(i <=5) HAGA
MOSTRAR( 'DIGITE UN NUMERO')
LEER (N)
SUMA= SUMA+N
i= i+1
FIN MIENTRAS
MOSTRAR ('LA SUMA ES:', SUMA)
FIN
Como vemos en la condicion al principio se cumple, pero como i se va incrementando, al llegar
hacer mayor que 5 se sale del mientras y termina la ejecucion.

Acontinuecion veremos unos ejercicios.


Modificar el anterior algoritmo para que obtenga el promedio de los 5 numeros.
INICIO
ENTERO: N,i, SUMA
REAL: PROMEDIO
i=1
SUMA=0
MIENTRAS (i <=5) HAGA
MOSTRAR ('DIGITE UN NUMERO')
LEER (N)
SUMA=SUMA+N
i=i+1
PROMEDIO=SUMA/5
FIN MIENTRAS.
MOSTRAR ('EL PROMEDIO ES:', PROMEDIO)
FIN

Realizar un algoritmo para sumar consecutivamente y cuando la suma sea superior a 100 deje
de pedir nmeros y muestre el total.
INICIO
ENTERO: N SUMA
SUMA=0
MIENTRAS(SUMA<=100)

MOSTRAR ('DIGITE UN NUMERO')


LEER(N)
SUMA=SUMA+N
FIN MIENTRAS
MOSTRAR ('LA SUMA ES:', SUMA)
FIN

Algoritmo que permita obtener el promedio de la cantidad de nmeros que el usuario desee
digitar, preguntando ademas si desea continuar o no.
INICIO
ENTERO: SUMA, CONTADOR, N
CADENA: DECISIN
DECISIN = 'SI'
SUMA= 0
CONTADOR=0
MIENTRAS(DECISIN = 'SI') HAGA
MOSTRAR('DIGITE UN NUMERO')
LEER(N)
SUMA= SUMA+N
CONTADOR=CONTADOR+1
MOSTRAR('DESEA CONTINUAR')
LEER(DECISIN)
FIN MIENTRAS

PROMEDIO=SUMA/CONTADOR
MOSTRAR('EL PROMEDIO ES:', PROMEDIO)
FIN

Realizar un algoritmo que pida al usuario digitar un color y lo muestre, pero cuando el usuario
digita el color rojo se termine y lo indica.

INICIO
CADENA: COLOR
COLOR= ''
MIENTRAS( COLOR <> 'ROJO') HAGA
MOSTRAR('DIGITE COLOR')
LEER(COLOR)
MOSTRAR('EL COLOR ES:', COLOR)
FIN MIENTRAS
MOSTRAR('HA FINALIZADO')
FIN

Estos son algunos ejemplos y ejercicios del ciclo mientras.


Todo esto nos sirve en la vida cotidiana para encontrar varias formas de encontrarle
la solucin a un problema y en un futuro para hacer buenos programas con las condiciones y
requisitos que nos lo pida el usuario.

Estructura repetitiva
Hacer un programa que lea nmeros y los acumule hasta que se ingrese cero.
Mostrar cuanto acumulo (es decir la suma de todos ellos)

Inicio
Switch = 1
Acumulador = 0
Mientras Switch = 1 hacer
Leer Numero
Si Numero = 0 entonces
Swtich = 0
Si no
acumulador = acumulador + Numero
Fin_si
Fin_mientras
Escribir La suma de todos ellos es :, acumulador
Fin
Observe que:
1.- El numero de vueltas no se conoce
2.- En cada vuelta acumulador acumula lo que tiene la variable numero
3.- el ejemplo puede quedar de la siguiente forma tambien:
Inicio
numero = 1
Acumulador = 0
Mientras numero <> 0 hacer
Leer numero
acumulador = acumulador + Numero
Fin_si
Fin_mientras
Escribir La suma de todos ellos es :, acumulador
Fin
En este caso la variable numero hace de switch y las vueltas son controladas por
la variable numero cuando se tenga que numero vale cero dejar de dar vueltas.

Ejercicios resueltos:
Ejercicio 1)
Hacer un programa que lea los resultados de los partidos de un equipo de
futbol ante sus adversarios y diga cuanto puntaje acumul, cuantos goles a
favor tiene y cuantos goles en contra tiene:
Inicio

Switch = 1
Golesfavor = 0
Golescontra = 0
Puntos = 0
PartidosJugados = 0
Mientras Switch = 1 hacer
Escribe Desea Registrar un partido (digite 1 para si o 0 para
no)
Leer Switch
Si Switch = 1 entonces
Escribir Introduce el resultado del partido:
Leer Golesmiequipo,Golesdeladversario
Si Golesmiequipo = Golesdeladversario entonces
Escribe Empate
Puntos = Puntos + 1
Fin_Si
Si Golesmiequipo > Golesdeladversario entonces
Escribe Ganamos
Puntos = Puntos + 3
Fin_Si
Si Golesmiequipo < Golesdeladversario entonces
Escribe Perdimos
Fin_Si
Golesfavor = Golesfavor + Golesmiequipo
Golescontra = Golescontra + Golesdeladversario
PartidosJugados = PartidosJugados + 1
Fin_si
Fin_Mientras
Escribe Puntos,Golesfavor,GolesContra
Fin
Recomiendo:
Haga un seguimiento de este ejercicio con variables y valores
Ejercicio 2 )
Hacer un algoritmo que realice las 50 primeras potencias de 5.
Inicio
desde n=1 hasta 50 hacer
Escribe 5^n

fin_desde
Fin
Ejercicio 3 )
Realizar un algoritmo que obtenga la suma de los nmeros pares hasta 100.
Inicio
suma = 0
numero = 2
mientras numero <= 100 hacer
suma = suma + numero
numero = numero + 2
fin_mientras
Fin
Ejercicio 4)
Hacer una tabla del multiplicador en forma creciente.
Inicio
Leer n
x=1
mientras x <= 12 hacer
R=n*x
Escribe n, x, R
x=x+1
fin_mientras
Fin
Ejercicio 5)
Hacer un programa que calcule el factorial de un nmero.
Inicio
Leer n
i=1
X=1
mientras X = 1 hacer
X=i*X
i=i+1
fin_mientras
Escribir X
Fin

Ejercicio 6)
Hacer un programa que calcule la suma y el producto de los
nmeros pares comprendidos entre 20 y 400 ambos inclusive.
Inicio
S=0
P=1
X = 20
mientras X <= 400 hacer
S=S+X
P=P*X
X=X+1
fin_mientras
Escribir S, P
Fin