You are on page 1of 16

Estructuras Condicionales

http://artemisa.unicauca.edu.co/~nediaz/LabII/practica06.htm

https://es.slideshare.net/tetey1/02-ejercicios-resueltos-diagramas-de-flujo

Las estructuras condicionales en C utilizan el concepto expresiones booleanas. A continuación


se muestra un sencillo ejemplo en lenguaje C del uso de estructuras condicionales

#include <stdio.h>

int main()
{
int valor;
printf("Digite un valor entero:");
scanf("%d", &valor);
if (valor < 0)
printf("\nEl valor es negativo\n");
return 0;
}

Este programa lee un número entero digitado por el usuario. Luego el programa prueba el valor
usando una estructura condicional simple para verificar si el número es negativo. Sí lo es, el
programa imprime el mensaje: "El valor es negativo". En otro caso, el programa no hace nada.
El (b < 0)es la parte de la estructura condicional que se denomina Expresión Booleana. C evalua
(determina si es cierta o falsa) para decidir cuando imprimir o no imprimir el mensaje. Si la
espresión booleana se evalúa a verdadero (True), entonces C ejecuta el bloque de instrucciones
(dentro de llaves {}) o la instrucción que sigue a la estructura condicional. Sí la expresión
booleana es falsa (False), entonces C salta el bloque de instruciones o la instrucción que sigue
a la estructura condicional.

A continuación se muestra un ejemplo un poco más complejo:


#include <stdio.h>

int main()
{
int valor;
printf("Enter a value:");
scanf("%d", &valor);
if (valor < 0)
printf("\nEl valor es negativo\n");
else
if (valor == 0)
printf("\nEl valor es cero\n");
else
printf("\nEl valor es positivo\n");
return 0;
}

En este ejemplo, la estructura condicional despues de la primera aparición de else: if(valor


== 0) evalua por un valor de cero y si es cierto C imprimirá el mensaje "El valor es cero", el
segundo else corresponde a la ocurrencia de un valor positivo, en este caso no se evaluan
más condiciones debido a que luego de haber evaluado las dos expresiones booleanas, solo
queda la opción de que el valor sea positivo y por lo tanto no es necesario evaluar algo como if
(valor>0).

Operadores Booleanos en lenguaje C:

Los operadores booleanos son los que debemos utilizar en lenguaje C para construir
expresiones booleanas, que determinarán la ejecución de algunas partes del programa. A
continuación se listan los principales operadores booleanos utilizados en el lenguaje C:

Igualdad: ==
Mayor que: >
Menor que: <
Mayor o igual que: >=
Menor o igual que: <=
Diferente: !=
Y lógico (AND): &&
O lógico (OR): ||
Negación (NOT): !

Ejercicios Resueltos (Instruciones secuenciales y estructuras condicionales)

Ejercicio 1:- En un estacionamiento cobran $/. 1.500 por hora o fracción. Diseñe un
algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo,
conociendo el tiempo de estacionamiento en horas y minutos.

Algoritmo 1
INICIO
// Declaración de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fracción de hora, incrementa las horas a pagar en una unidad
SI( minutos > 0 )
horas = horas + 1
// Determina el importe a pagar
pago = horas * 1.500
// Salida de resultados
IMPRIMIR pago
FIN

Ejercicio 2:- Diseñe un algoritmo que determine si ún número es o no es, par positivo.

Algoritmo
INICIO
// Declaración de variables
REAL numero
CADENA tipoNumero
// Entrada de datos
LEER numero
// Determina si el número es o no es, par positivo
SI( (numero%2==0) && (numero>0) )
tipoNumero = "El número es par positivo"
SINO
tipoNumero = "El número no es par positivo"
// Salida de resultados
IMPRIMIR tipoNumero
FIN

Ejercicio 3:- Un supermercado ha puesto en oferta la venta al por mayor de cierto producto,
ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso contrario.
Además por la compra de más de 3 docenas se obsequia una unidad del producto por cada
docena en exceso sobre 3. Diseñe un algoritmo que determine el monto de la compra, el
monto del descuento, el monto a pagar y el número de unidades de obsequio por la compra
de cierta cantidad de docenas del producto.

Algoritmo
INICIO
// Declaración de variables
REAL montopag, montocom, montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Determina el monto de la compra
montocom = docenas*precio
// Determina el monto del descuento y el obsequio
SI( docenas > 3 ){
montodes = 0.15*montocom
obsequio = docenas-3
}
SINO{
montodes = 0.10*montocom
obsequio = 0
}
// Determina el monto a pagar
montopag = montocom - montodes
// Salida de resultados
IMPRIMIR montocom, montodes, montopag, obsequio
FIN

Ejercicio 4:- Diseñe un algoritmo que lea un número de tres cifras y determine si es igual
al revés del número.
Observación

Como el número tiene tres cifras, para que sea igual al revés, basta con que la cifra de las
unidades sea igual a la cifra de las centenas. Por ejemplo: 353, 878, etc.

Algoritmo

INICIO
// Salida de resultados
ENTERO numero, unidades, centenas
CADENA tipoNumero
// Entrada de datos
LEER numero
// Si el número tiene tres cifras...
SI(numero >99 && numero < 1000 ){
// Determina la cifra de las unidades y la cifra de las centenas
unidades = numero%10
centenas = int(numero/100)
// Determina si el número es igual al inverso
SI( unidades == centenas )
tipoNumero = "El número es igual al inverso"
SINO
tipoNumero = "El número no es igual al inverso"
// Muestra el tipo de número
IMPRIMIR tipoNumero
}
SINO
IMPRIMIR "Debe ingresar un número de tres cifras"
FIN

Ejercicio 5:- Una compañía dedicada al alquiler de automoviles cobra un monto fijo de
$300000 para los primeros 300 km de recorrido. Para más de 300 km y hasta 1000 km, cobra
un monto adicional de $ 15.000 por cada kilómetro en exceso sobre 300. Para más de 1000
km cobra un monto adicional de $ 10.000 por cada kilómetro en exceso sobre 1000. Los
precios ya incluyen el 20% del impuesto general a las ventas, IVA. Diseñe un algoritmo que
determine el monto a pagar por el alquiler de un vehículo y el monto incluído del impuesto.

Algoritmo

INICIO
// Declaración de variables
REAL kilomrec, montopag, montoiva, montofijo = 300000, iva = 0.20
// Entrada de datos
LEER kilomrec
// Determina el monto a pagar
SI( kilomrec <= 300 )
montopag = montofijo
SINO SI( kilomrec <= 1000 )
montopag = montofijo + 15000*(kilomrec-300)
SINO
montopag = montofijo + 15000*700 + 10000*(kilomrec-1000)
// Determina el monto del impuesto
montoiva = iva*montopag
// Salida de resultados
IMPRIMIR montopag, montoiva
FIN

Ejercicio 6:- Diseñe un algoritmo que determine quienes son contemporáneos entre Juan,
Mario y Pedro.

Algoritmo

INICIO
// Declaración de variables
ENTERO EdadJuan, EdadMario, EdadPedro
CADENA contemporaneos
// Entrada de datos
LEER EdadJuan, EdadMario, EdadPedro
// Determina quienes son contemporáneos
SI(EdadJuan == EdadMario && EdadMario == EdadPedro)
contemporaneos = "Los tres son contemporáneos"
SINO
SI(EdadJuan == EdadMario)
contemporaneos = "Juan y Mario son contemporáneos"
SINO
SI(EdadJuan == EdadPedro)
contemporaneos = "Juan y Pedro son contemporáneos"
SINO
SI(EdadMario == EdadPedro)
contemporaneos = "Mario y Pedro son contemporáneos"
SINO
contemporaneos = "No hay contemporáneos"
// Salida de resultados
IMPRIMIR contemporaneos
FIN

Ejercicio 7:- El promedio de prácticas de un curso se calcula en base a cuatro prácticas


calificadas de las cuales se elimina la nota menor y se promedian las tres notas más altas.
Diseñe un algoritmo que determine la nota eliminada y el promedio de prácticas de un
estudiante.

Algoritmo
INICIO
// Declaración de variables
REAL pc1, pc2, pc3, pc4, pcmenor, promedio
// Entrada de datos
LEER pc1, pc2, pc3, pc4
// Determina la nota menor
pcmenor = pc1
SI( pc2 < pcmenor )
pcmenor = pc2
SI( pc3 < pcmenor )
pcmenor = pc3
SI( pc4 < pcmenor )
pcmenor = pc4
// Determina el promedio
promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor )/3
// Salida de resultados
IMPRIMIR promedio, pcmenor
FIN

Ejercicio 8:- Diseñe un algoritmo que lea tres longitudes y determine si forman o no un
triángulo. Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si
tiene tres lados iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados
desiguales). Considere que para formar un triángulo se requiere que: "el lado mayor sea
menor que la suma de los otros dos lados".

Algoritmo
INICIO
// Declaración de variables
REAL L1, L2, L3, suma
CADENA tipoTriangulo
// Entrada de datos
LEER L1, L2, L3<
// Determina el lado mayor
mayor = L1
SI( L2 > mayor )
mayor = L2
SI( L3 > mayor )
mayor = L3
// Determina la suma de los lados a excepción del lado mayor
suma = L1 + L2 + L3 - mayor
// Determina de que tipo de triángulo se trata
SI( mayor < suma ){
SI( ( L1 == L2 ) && ( L2 == L3 ) )
tipoTriangulo= "Triángulo equilátero"
SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || ( L2 == L3 ) )
tipoTriangulo= "Triángulo isósceles"
SINO
tipoTriangulo= "Triángulo escaleno"
}
SINO
tipoTriangulo= "No es un triángulo"

// Salida de resultados
IMPRIMIR tipoTriangulo
FIN
Ejercicio 9:- Diseñe un algoritmo que lea un número entero de 3 cifras, y forme el mayor
número posible con las cifras del número ingresado. El número formado debe tener el
mismo signo que el número ingresado.

Algoritmo
INICIO
// Declaración de variables
ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor,medio

// Entrada de datos
LEER num1

// Si el número tiene tres cifras...


SI( ( num1 >= 100 && num1 <= 999 ) || ( num1 >= -999 && num1 <= -100
) ){

// Guarda el número en una variable auxiliar para preservar el


signo
numaux = num1

// Cambia el signo de num1 en caso de ser negativo


SI( num1 < 0 )
num1 = -num1

// Determina las cifras del número


cen = num1/100
dec = (num1%100)/10
uni = (num1%100)%10

// Determina la cifra menor


menor = cen
SI( dec < menor )
menor = dec
SI( uni < menor )
menor = uni

// Determina la cifra mayor


mayor = cen
SI( dec > mayor )
mayor = dec
SI( uni > mayor )
mayor = uni
// Determina la cifra del medio
medio = cen+dec+uni-mayor-menor
// Forma el nuevo número
SI( numaux > 0 )
num2 = mayor*100 + medio*10 + menor
SINO
num2 = -1*(menor*100 + medio*10 + mayor)
// Imprime el nuevo número
IMPRIMIR num2
}
SINO
IMPRIMIR "El número no tiene tres cifras"
FIN