3.296 cursos gratis
6.266.819 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Algoritmos y lenguaje C > Bucles while II

Algoritmos y lenguaje C

Autor: abraham sopla
Curso:  4,68/5 4,68/5 (12 opiniones) |10952 alumnos|Fecha publicación: 13/01/2006

Capítulo 14:

 Bucles while II

Ejercicio 31

Escriba el algoritmo para un programa que evalúe la función  , donde x toma los valores de 1 a 2 en pasos de 0.1. Para cada valor de x la salida debe dar el valor de y el mensaje POSITIVO o NEGATIVO según el caso.  Ejm: si y= 1.0 POSITIVO, Y=-1 NEGATIVO.

Algoritmo
Inicio
Declare a, y
A 1
Mientras a<2.1 hacer
 y 4*a*a-16*a+15
 a a+0.1
 si y>0 entonces  imprimir y, "POSITIVO"
 sino    imprimir y, "NEGATIVO"
 fin si
Fin mientras
Fin

Variables
a : Toma los valores de x desde a hasta 2
y : Toma los valores de la expresión para cada valor de a.

Programa
#include<stdio.h>
main(void)
{float a,y;
a=1;
while(a<2.1)
 { y=4*a*a-16*a+15;
 a=a+0.1;
 if(y>0) printf(" %lf  POSITIVO\n",y);
 else    printf(" %lf  NEGATIVO\n",y);
 }
}

USO DE CENTINELA
Se usan centinelas para salir de los bucles en cualquier instante que uno desee, un centinela es una variable que inicialmente adopta un valor, luego dentro de un bucle este valor cambia, por lo que nos vemos obligados a abandonarlos. Lo anterior se comprende a través del ejercicio 32

Ejercicio 32

Escriba el algoritmo para un programa de nómina usando un ciclo mientras con centinela. Para cada empleado, el programa debe leer el nombre, sexo, horas de trabajo, sueldo por hora e imprimir el pago. La segunda parte debe imprimir el pago promedio para las mujeres y el pago promedio para los hombres.

Algoritmo
Inicio
Declare pht, nht, sexo, ptt, sumasm, sumasf, sm, sf, nombre, centinela
Sumasm 0
Sumasf 0
Sm 0
Sf 0
Mientras centinela <> 1 hacer
       Leer sexo
     Si sexo<>1 o sexo <> 2 entonces
      Centinela 1 //aquí se origina la salida
  Sm 1
  Sf 1
     sino
          si sexo=1 entonces
          sm sm+1
          leer nombre, nht, pht
          ptt nht*pht
imrpimir nombre,ptt
          sumasm sumasm+ptt
         else
    sf sf+1
          leer nombre, nht, pht
          ptt nht*pht
          imrpimir nombre, ptt
   sumasf sumasf+ptt
fin si
                Fin Si
Fin mientras
Imprimir sumasm, sumasm/sm
Imprimir sumasf, sumasf/sf
Fin

Variables
pht : valor del pago por hora trabajada.
nht : cantidad de horas trabajadas.
sexo : valor numérico que indica (1 masculino, 2 femenino)
ptt : valor del pago por persona.
sumasm: guarda la suma de pagos a los varones.
sumasf: guarda la suma de pagos a las mujeres.
sm : guarda la cantidad de varones ingresados.
sf : guarda la cantidad de mujeres ingresadas.
nombre: guarda los nombres de las personas.
centinela: valor numérico que permite finalizar el programa.

Comentario: para este caso cualquier número asignado a la variable sexo, diferente de 1 o 2, hará que la variable centinela se cargue a 1, hecho que obligará la salida del sistema.

Programa
#include<stdio.h>
int x,pht,nht,sexo,ptt,sumasm,sumasf;
float sm,sf;
main(void)
{char nombre[20];
int centinela;
       sumasm=0;
       sumasf=0;
       sm=0;
       sf=0;
       while(centinela!=1)
       {printf("ingrese sexo 1 varon,     2 mujer    3 Salir \n ");
       scanf("%d",&sexo);
     if(sexo!=1 || sexo!=2 )
     {centinela=1;
     sm=1;
     sf=1;}
     else
         {
  if(sexo==1)
         {sm=sm+1;
         printf("ingrese nombre \n ");
        scanf("%s",&nombre);
         printf("ingrese nro de horas trabajadas \n");
         scanf("%d",&nht);
         printf("ingrese pago por hora trabajada\n");
         scanf("%d",&pht);
         ptt=nht*pht;
         printf("%s GANA %d SOLES \n\n",nombre,ptt);
         sumasm=sumasm+ptt;}
        else
   {sf=sf+1;
         printf("ingrese nombre \n ");
         scanf("%s",&nombre);
         printf("ingrese nro de horas trabajadas \n");
         scanf("%d",&nht);
         printf("ingrese pago por hora trabajada\n");
         scanf("%d",&pht);
         ptt=nht*pht;
         printf("%s GANA %d SOLES \n\n",nombre,ptt);
  sumasf=sumasf+ptt;}
                }

       }
       printf("los HOMBRES GANAN TOTAL: %d SOLES, PROMEDIO: %f \n",sumasm,sumasm/sm);
       printf("las MUJERES GANAN TOTAL: %d SOLES, PROMEDIO: %f",sumasf,sumasf/sf);
}

Ejercicio 33

Las potencias de 2 son: 1, 2, 4, 8,16,..... Para obtener la siguiente potencia se multiplica la anterior por 2. Escribir el algoritmo para un programa que imprima la primera potencia de 2 que pasa de 1000.

Algoritmo
Inicio
Declare potencia, e
Potencia 1
e 0
mientras potencia<=1000 hacer
 potencia potencia*2
 e e+1     //e es el exponente
fin mientras
imprimir e
Fin

Variables
potencia: acumula el producto de la variable potencia y el número 2.
e : guarda el valor del exponente. 

Programa
#include<stdio.h>
main(void)
{
int potencia,e;
potencia=1;
e=0;
while(potencia<=1000)
 {
potencia=potencia*2;
 e=e+1;    //e es el exponente
 }
        printf("%d",e);
}
NOTA: Ciertamente es 10, porque 210  = 1024

Ejercicio 34

Escriba un algoritmo para un programa en el que el usuario debe introducir enteros positivos entre 1 y 5. El programa debe informar al usuario cuando haya escrito un número que hace que la suma pase de 21, imprimiendo la suma y el último entero introducido y el mensaje "mas de 21".

Algoritmo
Inicio
Leer suma, num
Suma 0
Mientras suma<=21 hacer
 leer num
 si num>=1 y num<=5 entonces  suma suma+num
fin si
fin mientras
imprimir suma, num
Fin

Variables
suma : el valor de suma acumulada
num : numero ingresado

Programa
#include<stdio.h>
main(void)
{
int suma,num;
suma=0;
printf("INGRESE NÚMEROS ENTRE 1 y 5 \n");
while(suma<=21)
 {
 printf("ingrese un número ");
scanf("%d",&num);
 if(num>=1 && num<=5)
  {suma=suma+num;}
 }
        printf("\ n SUMA: %d, NÚMERO: %d",suma,num);
}

Ejercicio 35

Escriba el algoritmo para un programa que imprima la sucesión completa de ULAM para un entero de entrada, si la longitud de toda la sucesión es no más de 10. En caso contrario sólo se imprimirá los 10 primeros enteros de la sucesión. Haga las pruebas de mano para sucesiones de menores de 10 números iguales a 10 y mayores de 10.
Ejemplo
5:  16, 8, 4, 3, 1.
25:  76, 38, 19, 58, 29, 88, 44, 22, 11,34.

Algoritmo
Inicio
Declare c, num
Leer num
c 1;
mientras num>1 y c<=10 hacer
 si num modulo 2=0 entonces num num/2
 sino num num*3+1
 fin si
 imprimir num
c c+1
fin mientras
Fin

Variables
c : contador
num : número que se imprimirá

Programa
#include<stdio.h>
main(void)
{
int c,num;
printf("ingrese un número.. ");
scanf("%d",&num);
c=1;
while(num>1 && c<=10)
 {
 if(num%2==0)num=num/2;
 else num=num*3+1;
 printf(" \n número= %d", num);
        c=c+1;
 }
}

Capítulo siguiente - bucles while III
Capítulo anterior - Bucles while
Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 12 opiniones. Opina sobre este curso.


Cursos similares a Algoritmos y lenguaje C


Cursos Valoración Alumnos Vídeo
Programa con Delphi
Con este curso aprenderemos a programar con delphi, un lenguaje de programación visual, con el que podrás aprender de una manera rápida e intuitiva.... [05/05/05]
 3,13/5 5.537  
Programación de aplicaciones XML/XSL con Python y Java
Un código para la programación de aplicaciones en XML/XSL en Python y Java... [05/05/05]
 3,67/5 3.064  
Manual de estilo de páginas Web
En este curso se quiere dar una guía muy amplia para todos aquellos que están interesados en crear una página Web. Dando explicaciones de como crear un buen diseño tanto ... [05/05/05]
5/5 14.422  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail