Descargar

Manual de Programación en el Lenguaje C (página 2)


Partes: 1, 2, 3

Partes: 1, , 3

Estructuras

Estructuras Secuenciales

Se les denomina así, por que; son estructuras en un programa, que después de ejecutar una instrucción o sentencia, continúan con la otra, hasta llegar al final del programa. Los ejemplos que hemos visto anteriormente, son ejemplos de estructuras secuenciales. Veamos otros ejemplos:

Ejemplo 3.3

Diseñe un programa que calcula el cuadrado y el cubo de tres números introducidos por el usuario.

#include <stdio.h>

#include <conio.h>

main()

{

int x, x1, x2, y, y1, y2, z, z1, z2;

clrscr();

printf("tPROGRAMA QUE CALCULA EL CUADRADO Y EL CUBO DE 3 NUMEROSnn");

printf("Introduzaca el primer n£mero:n");

scanf("%d", &x);

printf("Ahora ingrese el siguiente n£mero:n");

scanf("%d", &y);

printf("Y el tercer n£mero es:n");

scanf("%d", &z);

x1=x*x;

x2=x*x*x;

y1=y*y;

y2=y*y*y;

z1=z*z;

z2=z*z*z;

printf("*********************************n");

printf("**Numero****Cuadrado*****Cubo****n");

printf("**%d **** %d ***** %d ****n", x, x1, x2);

printf("**%d **** %d ***** %d ****n", y, y1, y2);

printf("**%d **** %d ***** %d ****n", z, z1, z2);

printf("*********************************n");

getch();

return 0;

}

Ejemplo 3.4

Una empresa necesita conocer el sueldo neto a pagar a un empleado. Teniendo como entrada el salario produzca una salida de sueldo neto. Los descuentos a aplicar son: ISSS 5%, AFP 7% y Renta 10%, estos descuentos son sobre el salario, y es sueldo neto es la diferencia entre el salario y el total de las retenciones:

#include <stdio.h>

#include <conio.h>

main()

{

float sueldo, afp, isss, renta, sn;

char nombre[50];

clrscr();

printf("Introduzca el Nombre del empleado:n");

scanf("%s", nombre);

printf("Su sueldo es:n");

scanf("%f", &sueldo);

afp=sueldo*0.07;

isss=sueldo*0.05;

renta=sueldo*0.10;

sn=sueldo-(afp+isss+renta);

printf("El empleado %sn", nombre);

printf("Posee un sueldo neto de %.2fn", sn);

getch();

return 0;

}

Ejemplo 3.5

Diseñe un programa que calcule el promedio y la suma de tres números ingresados por el usuario:

#include <stdio.h>

#include <conio.h>

main()

{

float x, y, z, sum, prom;

clrscr();

printf("El Primer n£mero es:n");

scanf("%f", &x);

printf("Ahora el segundo n£mero:n");

scanf("%f", &y);

printf("El Ultimo numero es:n");

scanf("%f", &z);

sum=x+y+z;

prom=sum/3;

printf("*****************************************n");

printf("**La suma es %.2f y el promedio es %.2f*n", sum, prom);

printf("*****************************************n");

getch();

return 0;

}

Estructuras Selectivas

Los pequeños programas que hemos diseñada hasta el momento, han sido del tipo secuencial, es decir, una sentencia se ejecuta después de otra, hasta el final del programa.

Pero en la vida diaria muchas veces debemos elegir entre un camino y otro para llegar a nuestro destino. Lo mismo pasa en programación, al realizar alguna actividad, nuestro programa debe ser capaz de elegir uno u otro camino, a seguir dependiendo del valor de alguna condición evaluada.

Para ello C, dispone de tres tipos de 3 tipos de estructuras selectivas, la cuales son:

  • Estructura Selectiva Simple
  • Estructura Selectiva Doble
  • Estructura Selectiva Múltiple
  • ESTRUCTURA SELECTIVA SIMPLE

Funciona de la siguiente manera: se evalúa una condición, de ser cierta efectúa una acción, de lo contrario, continúa con la ejecución normal del programa.

Su sintaxis es la siguiente:

If(condición) Acción;

O también:

If(Condición)

Acción;

Donde:

Condición: Es una expresión lógica que es evaluada por el compilador

Acción: es la Acción o Acciones que realizará el programa de resultar cierta la condición

NOTA: En C, no existe la sentencia "End If", como en otros lenguajes de programación para indicar que ha terminado el bloque de selección, sino que este se especifica con el punto y coma al final. Además que, después de la condición NO se escribe un punto y coma. Si son varias acciones, estas deben ir dentro de llaves {}, para indicarle al compilador que son un solo bloque de acciones que deben ejecutarse.

Ejemplo 3.6

En una tienda se venden artículos de primera necesidad, a los cuales se les aplica un descuento del 20%, de la compra total, si esta es igual o mayor a $50. Diseñe un programa en C, que a partir del importe total de la compra muestre lo que debe pagar el cliente.

#include <stdio.h>

#include <conio.h>

main()

{

float compra;

clrscr();

printf("Introduzca el valor de la compra:n");

scanf("%f", &compra);

if(compra>=50)

compra=compra*0.8;

printf("El Importe de la compra es %.2fnn", compra);

getch();

return 0;

}

  • ESTRUCTURA SELECTIVA DOBLE

Esta estructura, se caracteriza por el hecho que ofrece dos caminos a seguir, dependiendo si al evaluar la condición resulta cierta o falsa. Su sintaxis es la siguiente:

if(Condición)

Acción 1;

else

Acción 2;

Funciona, de la siguiente manera si condición, al evaluarla resulta cierta, realiza la acción 1. de lo contrario, es decir; si al evaluar la condición resulta falsa, realiza la acción 2.

Se debe tener en cuenta la condición puede ser compuesta, es decir haciendo uso de los operadores && y || ( Y lógico y No lógico), además que cuando tenemos más de una sentencia por ejecutar ya sea del lado del cierto o del falso, estas van dentro de llaves.

Ejemplo 3.7

Se desea saber si un número es par o impar. Diseñe un programa en el cual el usuario, ingrese el número y el programa muestre con un mensaje, si éste es par o no.

#include <stdio.h>

#include <conio.h>

main()

{

int num;

printf("Ingrese el n£mero:n");

scanf("%d", &num);

if(num%2==0)

printf("ES PARnn");

else

printf("ES IMPARnn");

getch();

return 0;

}

Ejemplo 3.8

Diseñe un programa, que dada la nota de alumno, imprima en la pantalla un comentario sobre esa nota. El criterio para los comentarios es el siguiente:

Si nota es mayor o igual a 9 "Excelente"

Si nota es mayor o igual a 8 "Muy Bueno"

Si nota es mayor o igual a 7 "Bueno"

Si nota es mayor o igual a 6 "Regular"

Si nota es menor que 6 "Necesita Mejorar"

#include <stdio.h>

#include <conio.h>

main()

{

float nota;

printf("Digite la nota, porfavor:n");

scanf("%f", &nota);

if(nota >= 9.0)

printf("EXCELENTEnn");

else

if(nota >= 8.0)

printf("MUY BUENOnn");

else

if(nota >= 7.0)

printf("BUENOnn");

else

if(nota >=6.0)

printf("REGULARnn");

else

printf("NECESITA MEJORARnn");

getch();

return 0;

}

Este ejemplo, muestra que C, permite hacer anidamientos, es decir, una selección dentro de otra, ya sea del lado del cierto, o del falso o de ambos.

El lector, puede tratar de hacer sus propias conclusiones, además de buscar otras posibles solucione para este mismo problema. Por ejemplo, ¿que pasaría si iniciamos con la condición del 6.0?. ¿Qué pasaría si el usuario digita una neta negativa? ¿Cómo podrías darle solución a este problema?. Como programadores, debemos hacernos muchas preguntas al momento de diseñar nuestros programas, ya que estos No serán usados por nosotros, sino por otras personas.

Ejemplo 3.9

Dada el peso, la altura y el sexo, de unos estudiantes. Determinar la cantidad de vitaminas que deben consumir estos estudiantes, en base al siguiente criterio:

>> Si son varones, y su estatura es mayor a 1.60, y su peso es mayor o igual a 150 lb, su dosis, serán: 20% de la estatura y 80% de su peso. De lo contrario, la dosis será la siguiente: 30% de la estatura y 70% de su peso.

>> Si son mujeres, y su estatura es mayor de a 1.50 m y su peso es mayor o igual a 130 lb, su dosis será: 25% de la estatura y 75% de su peso. De lo contrario, la dosis será: 35% de la estatura y 65% de su peso. La dosis debe ser expresada en gramos.

#include <stdio.h>

#include <conio.h>

main()

{

float peso, estatura, dosis;

char sexo;

printf("Introduzca el sexo del alumno(a)<H/M>:n");

scanf("%c", &sexo);

printf("Peso:n");

scanf("%f", &peso);

printf("La estatura es de:n");

scanf("%f", &estatura);

if(sexo=='H' || sexo=='h')

{

if(estatura>1.60 && peso >=150)

{

dosis=(0.20*estatura)+(0.8*peso);

printf("La dosis de este alumno ser : %.2f gramosnn", dosis);

}

else

{

dosis=(0.3*estatura)+(0.7*peso);

printf("La dosis de este alumno sera %.2f gramosnn", dosis);

}

}

else

{

if(estatura>1.50 && peso >=130)

{

dosis=(0.25*estatura)+(0.75*peso);

printf("La dosis de esta alumna debe ser de %.2f gramosnn", dosis);

}

else

{

dosis=(0.35*estatura)+(0.65*peso);

printf("La dosis de esta alumna debe ser de %.2f gramosnn", dosis);

}

}

getch();

return 0;

}

  • SELECCIÓN MÚLTIPLE

Como su nombre lo indica, permite seleccionar entre varios caminos para llegar al final. En este caso se pueden elegir un camino o acción a ejecutar de entre varios posibles que se debe de evaluar, llamada selector. Sintaxis:

switch(selector)

{

case Etiqueta A:

Acción A;

break;

case Etiqueta B:

Acción B;

break;

case Etiqueta n:

Acción n;

break;

default:

Excepción;

break;

}

En donde:

Selector: Variables, expresiones simples de tipo ordinal, (enteros y caracteres –int y char-)

Etiqueta: Tiene que ser del mismo tipo de datos de selecto. Estas deber ser constantes únicas y diferentes de otras.

Excepción: Es opcional.

Ejemplo 3.10

Diseñe un programa en C, que dado un número del 1 al 3, muestre en pantalla y en letras, el mismo número:

#include <stdio.h>

#include <conio.h>

main()

{

int n;

clrscr();

printf("El N£mero es:n");

scanf("%d", &n);

switch(n)

{

case 0: puts("Cero");

break;

case 1: puts("Uno");

break;

case 2: puts("Dos");

break;

case 3: puts("Tres");

break;

default: puts("Dato No valido");

break;

}

getch();

return 0;

}

Cuestionario

  1. Mencione las diferencias entre las expresiones y los operadores:________________________________________________________________________________________________
  2. Que tipo de datos son válidos para los operadores aritméticos:______________________________________________________
  3. Explique, el resultado de los operadores incremento y decremento, dependiendo de su posición:________________________________________________________________________________________________
  4. ¿Qué son y para que sirven los operadores unarios?:_____________________________________________________________________________________________
  5. Explique, el funcionamiento de los operadores de asignación:__________________________________________________________________________________________

Ejercicios:

  1. Diseñe un programa que dados tres números indique cual es el mayor de ellos.
  2. Diseñe un programa que dados tres números indique cual de ellos es el menor.
  3. En un cine se exhiben, películas para mayores de edad, diseñe un programa que dada la edad, indique si la persona puede o no ver la película.
  4. En un supermercado, se realizan descuentos por las compras a partir de unas bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente.
  5. Se procesan las notas de 5, alumnos, de las cuales se desea saber cual es el promedio de esas 5 notas, y cual fue la nota mayor y menor, además de imprimir al final el nombre y la nota de cada alumno en forma de tabla.
  6. un estudiante desea saber cuál fue su promedio en matemática I, para ello dispone de la siguiente información: tiene 3 exámenes, con una ponderación del 20% cada uno y 2 laboratorios con una ponderación del 30% cada uno. Diseñe un programa que dadas las notas calcule el promedio del alumno y muestre en pantalla si el alumno esta reprobado o no (para aprobar esta materia se requiere de una nota mayor o igual a 6.00).
  7. En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el monto total.
  8. Diseñe un programa que al introducir un dígito del 0 a 9, muestre como se lee.
  9. Diseñe un pequeña calculadora que, al digitar un código realice una operación específica: si el código es 1, la operación es la suma, si es 2, Resta. 3, multiplicación y 4 división. Si el usuario a escrito otro código inválido, mostrar un mensaje de error.
  10. Construya un programa que dado el salario de un empleado, permita aplicarle un aumento de 10% si el salario es inferior a $500, si es mayor se le aumentará un 8%. Luego debe aplicar una retención del 0.96% en concepto de Renta a ambos casos.
  11. Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana y la clase a la que pertenece: Trabajadores Clase "A", se les paga $7 por hora. Trabajadores clase "B", se paga $5 por hora. Trabajadores clase "C", se les paga $4 por hora y los de clase "D", $3.5 por hora.
  12. Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00 respectivamente. Por cada cinco sillas compradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a precio normal. Diseñe un programa que imprima en forma de factura, con el nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe cancelar cada cliente en concepto de la compra.

Descubre donde está el error.

El siguiente código, es de un programa que a partir de una nota determina si un alumno esta o no reprobado, y este puede presentar algunos errores de lógica, de sintaxis o de ejecución. ¿Puedes descubrirlos y modificarlos?

#Include <stdio.h>

#incluide <conio.h>

main()

{

float nota;

printf("Digite la nota:n")

scanf("%f", nota);

if(nota>=6.00)

printf("Aprobadonn);

else

printf(Reprobadonn);

getch();

return 0;

}

Capitulo IV "Ciclos"

Introducción**

Es muy común encontrar en los programas operaciones que se deben ejecutar un número repetido de veces en períodos más o menos espaciados. Si bien las instrucciones son las mismas, los datos sobre los que operan varían. A nuestro alrededor, encontramos problemas que presentan esas características, por ejemplo: el cálculo de la nota final de los estudiantes de Programación I, se realizará tantas veces como alumnos hayan inscritos en dicha asignatura, el cálculo del salario de los empleados de una empresa, etc. En estos casos la solución que se diseñe para un solo grupo de datos se debe repetir tantas veces como sea necesario (de acuerdo al número de estudiantes y de empleados para los ejemplos anteriores).

Los cálculos simples o la manipulación de pequeños conjuntos de datos se pueden realizar fácilmente a mano, pero las tareas grandes o repetitivas son realizadas con mayor eficacia por una computadora, ya que estas están especialmente preparadas para ello.

Para repetir varias veces un proceso determinado haremos uso de los ciclos repetitivos, a los cuales se les conoce con el nombre de estructura repetitiva, estructura iterativa, lazo o bucle.

(Tomado de Los guiones de clase de Introducción a la Informática. Universidad de El Salvador. Año 2005)

En C, podemos encontrar tres tipos de ciclos:

  • Entrada Asegurada (while)
  • Ciclo Controlado Por Contador (for)
  • Hacer Mientras (do.. while)

Este ultimo, no está lógicamente estructurado, por tanto no haremos mucho hincapié en él.

Conceptos Generales

Funcionamiento de Un Ciclo

Un ciclo, funciona de la siguiente manera: Evalúa una condición de resultar cierta, realiza una acción o bloque de acciones, luego vuelve a evaluar la condición y si nuevamente resulta cierta, realiza la (s) acción (es). Cuando la condición de cómo resultado falso, se sale del ciclo y continúa con la ejecución normal del programa.

Acumulador:

Es una variable, que , como su nombre lo indica se encarga de acumular valores. Esto se vuelve muy útil, por ejemplo, cuando queremos encontrar la suma de los números del 0 al 9, en el acumulador, vamos guardando los valores de dichas cifras. Puede ser tanto real como entera. Su valor inicial, en la mayoría de los casos es cero.

Contador:

Es una variable de tipo entero, que nos ayuda, en el programa a contabilizar el número de ejecuciones de una misma acción, de un grupo de alumnos etc. Un acumulador tiene tres valores distintos:

  • Valor Inicial: es el valor con el cual iniciamos nuestro contador. Generalmente es cero. Esta asignación puede hacerse cuando se declara la variable.
  • Valor Final: después de la ejecución del ciclo, el valor del contador, será distinto a su valor inicial, este puede ser mayo o menor que el mismo, todo depende si fue una cuenta creciente o decreciente.
  • Valor de Cambio: Es el valor Constante, en el cual se irá incrementando nuestro contador, este puede ser positivo o negativo; es decir, si la cuanta se realiza de manera ascendente o descendente.

NOTA: el lector no debe confundirse entre las variables tipo acumulador y tipo contador, estas se diferencian unas de otras en que: los contadores, su valor de cambio es una constante, ya que aumenta y disminuyen en el mismo valor, mientras que los acumuladores su valor de cambio no es constante. Un acumulador necesariamente lo inicializamos con cero (o al menos en la mayoría de los casos). Un contador puede iniciar con cualquier valor.

Bandera:

Las variables tipo bandera son aquellas que sólo admiten dos valores: cierto o falso, true o false, hombre o mujer… etc

Ciclo de Entrada Asegurada

La sintaxis es la siguiente:

while(condición)

Acción;

Funciona de la siguiente manera: primero evalúa la condición, si da como resultado cierta realiza la acción, luego vuelve a evaluar la condición, si su resultado es falso, se sale del ciclo y continúa con la ejecución del programa.

Hay que tener mucho cuidado, cuando trabajamos con ciclos, ya que podemos caer en un ciclo infinito, es decir que nunca se sale de él. Lo cual no es un error de sintaxis sino de lógica. Por lo cual en las acciones debemos siempre colocar algo que haga que se modifique el resultado de la condición, lo cual puede ser una bandera, un contador o un acumulador.

Ejemplo 4.1

Diseñe un Programa que imprima los primeros 10 números.

#include <stdio.h>

#include <conio.h>

main()

{

int i=1; /*Declaramos nuestro contador con su Valor Inicial*/

while(i<=10) /*Mientras i sea menor o igual a 10:*/

{

printf("%dt", i);/*Imprimir el valor de i*/

i+=1;/*Aumentar el contador en 1*/

}

getch();

return 0;

}

Ejemplo 4.2

Se desea conocer el promedio de los números mayores que cero, en una serie de números ingresados por el usuario. De los cuales no se sabe la cantidad, haciendo uso de una bandera, diseñe un programa en el cual el usuario ingrese los números que desee.

#include <stdio.h>

#include <conio.h>

main()

{

int i=0, sum=0, ban=1, n;

float prom;

while(ban==1)

{

printf("Ingrese un n£mero por Favor:n");

scanf("%d", &n);

if(n>0)

{

i=i+1;

sum+=n;

}

printf("Desea Ingresar Otro N£mero? (Si=1 y No=0)n");

scanf("%d", &ban);

}

prom=sum/i;

printf("************************************************************n");

printf("*** El Promedio de los numeros mayores que cero es: %.2f ***n", prom);

printf("************************************************************n");

getch();

return 0;

}

Ejercicio 4.3

En un salón se tienen las notas de 14, alumnos; de los cuales se desea saber cual fue el promedio de todas las notas, cual fue la nota mayor y la nota menor. Así como la cantidad de aprobados en el curso (Para Aprobar la asignatura se requiere de una nota mayor o igual a 6.0)

#include <stdio.h>

#include <conio.h>

main()

{

float suma=0, prom, menor=11, mayor=-1, nota;

int i=1,j=0;

while(i<=14)

{

printf("Ingrese la Nota del alumno %d:n", i);

scanf("%f", &nota);

while(nota<0.00 || nota >10.00)

{

printf("ERROR, la nota debe estar entre 0 y 10n");

scanf("%f", &nota);

}

if(nota>=6.00)

j=j+1;

if(nota>mayor)

mayor=nota;

if(nota<menor)

menor=nota;

i=i+1;

suma=suma+nota;

}

prom=suma/14;

printf("El Promedio es %.2fnn", prom);

printf("El total de Aprobados es %dn", j);

printf("La Mayor nota fue %.2fn", mayor);

printf("%.2f corresponde a la nota menorn", menor);

getch();

return 0;

}

Ciclo Controlado por contador.

En algunas ocasiones, sabemos a ciencia cierta el número de veces que se tiene que repetir una misma acción o bloque de acciones. Y para ello es que nos sirve, esta estructura. Su sintaxis es la siguiente:

for( valor inicial; condición; incremento)

accion;

Donde:

Valor inicial: es el valor con el cual inicializamos nuestra variable de control.

Condición: si la cumple, ejecuta la acción o acciones e incrementa o decrementa la variable de control, sino la cumple la condición, se sale del ciclo.

Incremento; que puede ser positivo o negativo (decremento).

Veamos un ejemplo sencillo:

Ejemplo 4.4:

Diseñe un programa que imprima los primeros 10 números:

#include <stdio.h>

#include <conio.h>

main()

{

int i;

for(i=1; i<=10; i++)

printf("%dt", i);

getch();

return 0;

}

Ejemplo 4.5

Diseñe un programa en C, que calcule las compras totales, realizadas por un grupo de 20 amas de casa. Luego con esa información obtenga la media.

#include <stdio.h>

#include <conio.h>

main()

{

int i;

float compra, desvia, prom, varinza, sum=0;

for(i=1; i<=10; i++)

{

printf("Ingrese la cantidad que gast¢ la ama de casa %d:n", i);

scanf("%f", &compra);

while(compra<0)

{

printf("ERROR, la compra debe ser mayor que cero, vuelva a intentarlo:n");

scanf("%f", &compra);

}

sum=sum+compra;

}

prom=sum/12;

printf("El promedio de las compras es %.2fnna", prom);

getch();

return 0;

}

Cabe, mencionar que, en el ciclo for, podemos hacer cuentas decrecientes, es decir asignarle un valor grande a nuestra variable de control y luego irla disminuyendo hasta un valor determinado.

Ejemplo 4.6

En un cine, se tienen 3 diferentes clases de boletos. Se pide que diseñe un programa en el cual:

  1. se lea el precio de las 3 clase de boletos
  2. Se lea el numero de boletos vendidos de cada tipo
  3. Calcular cual boleto es el que se vendió menos
  4. El total recaudado en taquilla

Además se sabe que durante el día se realizaron un total de n ventas.

#include <stdio.h>

#include <conio.h>

main()

{

float preciob1, preciob2, preciob3, sum=0, sum1=0, sum2=0, sum3=0;

int n, i, boletos1, boletos2, boletos3, boleto;

clrscr();

printf("ttBIENVENIDO(A)nnn");

printf("Ingrese el precio de los boletos 1:n");

scanf("%f", &preciob1);

while(preciob1<0)

{

printf("ERRORn");

scanf("%f", &preciob1);

}

printf("Ingrese el precio de los boletos 2:n");

scanf("%f",&preciob2);

while(preciob2<0)

{

printf("ERRORn");

scanf("%f", &preciob2);

}

printf("Ingrese el precio de los boletos 3:n");

scanf("%f",&preciob3);

while(preciob3<0)

{

printf("ERRORn");

scanf("%f", &preciob3);

}

printf("&uml;Cu ntas ventas se realizaron este d¡a?:n");

scanf("%d", &n);

while(n<0)

{

printf("ERRORn");

scanf("%d", &n);

}

for(i=1; i<=n; i++)

{

printf("Ingrese el Boleto:n");

scanf("%d", &boleto);

switch(boleto)

{

case 1: printf("Ingrese la cantidad de boletos vendidos:n");

scanf("%d", &boletos1);

sum1+=boletos1;

sum=sum+(boletos1*preciob1);

break;

case 2: printf("Ingrese la cantidad de boletos vendidos:n");

scanf("%d", &boletos2);

sum2+=boletos2;

sum=sum+(boletos2*preciob2);

break;

case 3: printf("Ingrese la cantidad de boletos vendidos:n");

scanf("%d", &boletos3);

sum3+=boletos3;

sum=sum+(boletos3*preciob3);

break;

default: printf("ERROR, Vuelva a intentarlonn");

break;

}

}

clrscr();

if(sum3<sum2 && sum3<sum1)

printf("Los Boletos que se vendieron menos fueron los boletos numero UNOnn");

if(sum2<sum3 && sum2<sum1)

printf("Los Boletos que se vendieron menos fueron los boletos numero DOSnn");

if(sum1<sum2 && sum1<sum3)

printf("Los Boletos que se vendieron menos fueron los boletos numero TRESnn");

printf("El total recaudado en taquilla, durante este dia fue: %.2fnn", sum);

getch();

return 0;

}

Ciclo Do… while

Es te ciclo funciona de la siguiente manera, realiza la acción o conjunto de acciones, luego evalúa una condición de resultar cierta vuelve a realizar la/s accion/es. Cuando sea falsa, se sale del ciclo. Esta estructura, no está lógicamente, estructurada, por ello, no hablaremos mucho, sin embargo realizaremos un par de ejemplos, de este ciclo.

Formato :

do {

sentencia;

.

} while(<expL>);

La diferencia fundamental, entre el ciclo while y do…while, es que en este ultimo, las sentencias se realizarán por lo menos una vez, en cambio, con while, solo se cumplirán mientras se cumpla la condición, lo cual puede ser nunca.

Ejemplo 4.7

Programa que determina si un año es bisiesto o no. Y un año es bisiesto si es múltiplo de cuatro, pero excluyendo aquellos que son múltiplos de 100 pero no de 400

#include <stdio.h>

#include <conio.h>

void main()

{

int anio;

char respuesta;

printf("nnnINICIO DEL PROGRAMAnnn");

printf("nnEl programa te pide un anio y te dice exactamente si es bisiesto o no");

do

{

/*ENTRADA DE DATOS*/

printf("nnIntroduzca un anio determinado ");

scanf("%d",&anio);

/*PROCESO Y SALIDA DE DATOS*/

if ((anio%4==0 && anio%100!=0)||(anio%400==0)) printf("nnEl anio es bisiesto");

else printf("nnEl anio no es bisiesto");

printf("nnDesea introducir mas datosnn");

respuesta=getch();

} while(respuesta=='S' || respuesta=='s');

printf("nnnFIN DEL PROGRAMAnnn");

}

NOTA: este código ha sido tomado de "Practicas de Programación en C", de Fernando Muñoz Ledesma. Practica 3, ejercicio 5.

Cuestionario

  1. ¿qué es y cómo funciona un ciclo?____________________________________________________________________________________________________________________
  2. Cuál es la diferencia entre un contador y un acumulador:_____________________________________________________________________________________________________________
  3. ¿cuál es la mejor manera de validar datos?:_________________________________________________________________________________________________________________
  4. ¿cómo se evita un ciclo infinito?:______________________________________________________________________________________________________________
  5. ¿Qué diferencia existe entre un ciclo de entrada asegurada y el do… while?:______________________________________________________

Descubre donde está el error.

El siguiente código muestra la serie:

1^2+2^2+3^2….n^2

en el cual hay errores de lógica, de sintaxis o hasta de ejecución, puedes descubrirlos y corregirlos?

#include <stdio.h>

#include <conio.h>

main()

{

int n i, x, sum=0;

printf("Inrtroduzca el valor de n:n");

scanf("%d", &n);

while(n<0)

{

printf("Error, vuelva a digitar el valor de n:n");

scanf("%d", n);

}

for(i=1; i<=n, i++)

x=i*i;

sum+=n;

printf("El valor de la suma es:%dnn", sum)

getch();

return 0;

}

Ejercicios

  1. Se desea conocer la suma de los números enteros, positivos menores que n, el cual es un dato dado por el usuario.
  2. Muestre un programa en c, que imprima en pantalla los números desde un valor inicial, hasta un valor final, ingresados por el usuario, tanto en forma descendente como ascendente.
  3. Diseñe un programa que imprima la serie de Fugonacci, así: 0 1 1 2 3 5 8 13…. hasta un número n dado por el usuario.
  4. Calcule el promedio de edades de un grupo de estudiantes, de los cuales no se conoce la cantidad.
  5. Diseñe un programa que obtenga, la calificación mayor y la calificación menor, de un grupo de 40 estudiantes, además de los nombres de dichos alumnos.
  6. En un país hubieron elecciones para elegir al presidente. El país consta de 7 provincias o regiones, de las cuales se han levantado actas que contiene el total de votos obtenidos por los 4 partidos políticos en dicha región. Diseñe un programa en c, que lea las actas de las 7 provincias, muestre que partido ganó las elecciones y en caso de empate, lo especifique con un mensaje.
  7. en un supermercado, hay 3 departamentos (de ropa, comestibles y perfumería), en lo cuales se realizan un descuento de 5%, 3.5% y 8% respectivamente, por las compras totales mayores de $100.00. diseñe un programa que dado el monto de la compra, realice los descuentos pertinentes por departamento, le indique al usuario a cuanto asciende su nuevo monto e indique, cuanto fue lo recaudado al final del día.
  8. La Empresa, el porvenir s.a de c.v desea conocer lo que debe pagar en concepto de horas extras aun grupo de n empleados. Se sabe que una hora extra diurna, se paga el doble que una hora normal. Y una hora extra nocturna se paga el doble de una hora normal más el 25%. Además que todos los empleados tiene sueldos diferentes, muestre el nuevo sueldo de cada uno de ellos y lo que tendrá que pagar la empresa en concepto de horas extra.

  9. Una compañía de teléfonos, cobra $0.03 por minuto la llamada nacional local, $0.06 por la llamada de larga distancia nacional y $0.10 la llamada de larga distancia internacional. Diseñe un programa que calcule las facturas mensuales de los clientes, sabiendo que, si las llamadas fueron realizadas por la mañana tienen un doble valor, y si los 10 primeros minutos de llamadas locales son gratis, en cualquier horario.
Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente