Ir a Emagister Encuentra tu formación ideal
¡Mailxmail y emagister se unen para que tengas toda la formación a tu alcance!
12.170 cursos gratis
8.184.952 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Algoritmos y lenguaje C

Autor: Abraham Sopla Maslucán
Curso:
9,21/10 (15 opiniones) |36357 alumnos|Fecha publicación: 13/01/2006
Envía un mensaje al autor

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

Nuestras novedades en tu e-mail

Escribe tu e-mail:

Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Cursos similares a Algoritmos y lenguaje C


  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Algoritmos en QBASIC. Manual
Este manual de QBASIC es una colección linkografica y bibliográfica sobre el uso... [26/10/09]
12.730  
2. Introducción al lenguaje Pascal
Pascal es un lenguaje de alto nivel y de propósito general (es aplicable a un gran... [01/03/06]
40.127  
3. Introducción al lenguaje HTML
¿Te interesa entrar al mundo de la programación web ? ¡Entonces este curso de... [14/04/11]
739
Curso con video

El blog de mailxmail|¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail


¿Quieres recibir más cursos de Programación? ¡Son gratis!