Download Estructuras de control condicional - fc

Document related concepts

Ordenamiento de burbuja wikipedia , lookup

Fernando Couto wikipedia , lookup

Transcript
Estructuras de control
condicional
Computación
Operadores relacionales
Los operadores relacionales permiten construir expresiones booleanas es
decir, expresiones cuyo valor es 1 o 0.
Los operadores relacionales permiten comparar valores o expresiones
aritméticas.
En C el valor 1 se interpreta como verdadero y el 0 como falso.
Operador
Significado
==
igualdad
!=
Diferente
>
Mayor que
<
Menor que
>=
Mayor o igual
<=
Menor o igual
Ejemplos
1>2
=
0
falso
3<5
=
1
verdadero
(7 – 4) == 3
=
1
verdadero
17 >= (5 + 12)
=
1
verdadero
=
0
falso
(3*a – 0.3) == 0
=
0
falso (OJO con los reales)
3>1>0
=
1
verdadero
i = 3; j = 7;
i * j != 21
float a=0.1;
Asignar a una variable la mayor de otras dos:
a = 17; b = 15;
c = a*(a>=b) + b*(b>=a);
c = 17
a>=b = 1 y b>=a = 0
Tarea
Encuentre el valor de las siguientes expresiones relacionales
2 != 7
3>2
-1 <= -2
(5 – 7) > (3 – 4)
(3*2 + 5*4) == (8*5/2 + 4*4 – 10)
Encuentre el valor asignado a la variable x, suponga a = 3, b = 4, c = 12
x = (2*a > c – b)*c + (c == 2*b + 2*a – 2)*a;
x = (a <= b)*(a – b) + (c > 2*a + 5)*(c – 2*a);
Sentencia if
La sentencia if permite decidir ejecutar o no una instrucción o un bloque de
instrucciones.
Sintaxis
if (condición)
Instrucción o bloque;
Un bloque es una secuencia de instrucciones englobadas entre llaves (“{}”).
La condición esta formada por una expresión booleana.
verdadero
condición
falso
sentencias
Ejemplo de if simple
Prueba si un número leído desde el teclado es par.
#include <iostream.h>
int main()
{
int numero;
cout << "teclee un número: ";
cin >> numero;
if(numero % 2 == 0)
cout << "número par";
return 0;
}
Ejemplo 2 de if simple
Si el número a es divisible por el número b, se despliega el número de veces
que a es mayor que b.
#include <iostream.h>
int main()
{
int a,b,n;
cout << "teclee un número: ";
cin >> a;
cout << "teclee un número: ";
cin >> b;
if(a % b == 0){
n = a / b;
cout << a << " es " << n << " veces " << b;
}
return 0;
}
Sentencia if - else
La sentencia if – else permite decidir entre ejecutar una instrucción (o un
bloque de instrucciones) y otra instrucción (o un bloque de instrucciones)
Sintaxis
if (condición)
Instrucción o bloque;
else
Instrucción o bloque;
falso
verdadero
condición
sentencias
sentencias
Ejemplo de if - else simple
Prueba si un número leído desde el teclado es par.
#include <iostream.h>
int main()
{
int numero;
cout << "teclee un número: ";
cin >> numero;
if(numero % 2 == 0)
cout << "número par";
else
cout << "número impar";
return 0;
}
Tarea
Escriba un programa que lea tres números reales y decida si forman un
triángulo. Suponga que los números se leen de mayor a menor.
Escriba un programa que lea tres números reales representando los
lados de un triángulo y decida si el triángulo es rectángulo o no.
Suponga que los números se leen de mayor a menor.
Entregar impreso.
Intersección de dos rectas
Programa para determinar si dos rectas se interceptan
Suponga que las rectas se representan por la ecuación de la forma
y=mx+b
Donde m es la pendiente y b es la ordenada al origen.
La única forma en que las dos rectas no se interceptan en un punto es
cuando son paralelas, es decir, cuando las dos tienen la misma pendiente.
Podemos expresar el algoritmo de la siguiente forma
si pendiente1 diferente de pendiente2
calcular la intersección
imprimir resultado
sino
informar que no se interceptan
Programa
#include <iostream.h>
int main()
{
float m1,m2,b1,b2,x,y;
cout << "teclee la pendiente y ordenada al origen 1: ";
cin >> m1 >> b1;
cout << "teclee la pendiente y ordenada al origen 2: ";
cin >> m2 >> b2;
if(m1 != m2){
x = (b2 - b1)/(m1 - m2);
y = m1*x+b1;
cout << "Las rectas se interceptan en: " << x << ", "
<< y << endl;
}
else
cout << "Las rectas no se interceptan...";
return 0;
}
Sistema de ecuaciones 2x2
Se desea resolver un sistema de ecuaciones de 2x2 de la forma
ax+by=c
dx+ey=f
El sistema puede resolverse con las fórmulas
x = (c e – b f) / (a e – b d)
y = (a g – c e) / (a e – b d)
El sistema tiene solución si el denominador de estas fracciones es diferente
de cero. El algoritmo es:
si (a f – b e ) != 0
calcular solución
mostrar resultado
sino
informar que no hay solución
Programa sis2x2.cpp
#include <iostream.h>
int main()
{
float a,b,c,d,e,f,x,y;
cout << "teclee los coeficientes a, b, c, d, e, f: ";
cin >> a >> b >> c >> d >> e >> f;
if( (a*f - b*e) != 0){
x = (c*e - b*f)/(a*e - b*d);
y = (a*f - c*d)/(a*e - b*d);
cout << " x = " << x << "\ny = " << y << endl;
}
else
cout << "El sistema no tiene solución\n";
return 0;
}
Tarea
Un punto está sobre una recta si al avaluar la ecuación y – mx – b se obtiene
un valor positivo y está bajo la recta si se obtiene un valor negarivo. Escriba un
programa que lea los valores de la pendiente m y la ordenada al origen b, y las
coordenadas (x, y) de un punto e imprima si el punto esta sobre o bajo la recta.
(x,y)
y – mx + b > 0
y = mx + b
y – mx + b < 0
Operadores lógicos
Existen 4 operadores lógicos en C: and = &&, or = ||, not = !, xor = ^. Los
operadores lógicos tienen una prioridad más baja que los operadores
relacionales.
expresión1
expresión2
expresión1 && expresión2
expresión1
expresión2
expresión1 || expresión2
0
0
0
0
0
0
0
1
0
0
1
1
1
0
0
1
0
1
1
1
1
1
1
1
expresión
! expresión
expresión1
expresión2
expresión1 ^ expresión2
0
1
0
0
0
1
0
0
1
1
1
0
1
1
1
0
Prioridad de evaluación
!
&&
||
ejemplos de operadores lógicos
x > 5 || x == 3
verdadero para x = 3, 6, 7, ...
! (x == 7) && x % 2 != 0
verdadero para x = 1, 3, 5, 9, 11, ...
x <= -1 || x > 5 || x ==2
verdadero para x = …, -2, -1, 2, 6, 7, 8, ...
En el siguiente fragmento se despliegan solo los múltiplos de 7 o
cuadrados perfectos
if(num % 7 == 0 || sqrt(num)-floor(sqrt(num))==0)
Discusión
Escriba sentencias que sean verdaderas para:
x = 1, 2, 4, 8
x = 7, 14, 21, …, 49
x = 1, 2, 3, 6, 7, 8, 9
x = …, - 5, -3, -1, 0, 2, 4, 6, …
Anidamiento
Una sentencia if puede tener en su parte verdadera o falsa otra sentencia if.
O sea
if(condición1)
if(condición2)
if(condición3)
sentencias;
else
if(condición2)
if(condición3)
...
Ejemplo de anidamiento
Se desea un programa para imprimir un letrero dependiendo de la siguiente
tabla:
condición
letrero
cal < 6
“Reprobado”
6 <= cal < 7
“Suficiente”
7 <= cal < 8
“Bien”
8 <= cal < 9
“Muy bien”
9 <= cal < 10 “Excelente”
#include <iostream.h>
int main()
{
float cal;
cout << "teclee la calificación: ";
cin >> cal;
if(cal < 6)
cout << “Reprobado\n";
#include <iostream.h>
int main()
{
float cal;
cout << "teclee la calificación: ";
cin >> cal;
if(cal < 6)
cout << “Reprobado\n";
if(cal >= 6 && cal < 7)
cout << “Suficiente\n";
else if(cal < 7)
cout << “Suficiente\n";
if(cal >=7 $$ cal < 8)
cout << “Bien\n";
else if(cal < 8)
cout << “Bien\n";
if(cal >=8 && cal < 9)
cout << “Muy bien\n";
else if(cal < 9)
cout << “Muy bien\n";
else
else
cout << “Excelente\n";
cout << “Excelente\n";
return 0;
}
return 0;
}
Comparación de 3 números
Se desea comparar 3 números leídos desde el teclado, imprimiendo el mayo
de ellos.
Se puede resolver comparando el primero con el segundo, luego si el primero
es mayor, se compara el primero con el tercero.
Si el primero no es mayor que el segundo, entonces se compara el segundo
con el tercero.
verdadero
a>b
verdadero
b>c
“b mayor”
falso
“c mayor”
falso
“c mayor”
verdadero
a>c
“a mayor”
Solución con condiciones
compuestas
Utilizando condiciones compuestas, primero comparamos el primero con los
dos restantes, si es mayor que los otros dos, imprimimos el primero, sino,
comparamos el segundo con los otros dos, etc.
Note que debe usar >= para que se imprime forzosamente un resultado.
falso
verdadero
a>=b && a>=c
verdadero
falso
b>=a && b>=c
“b mayor”
verdadero
c>=a && c>=b
“c mayor”
“a mayor”
Anidamiento
#include <iostream.h>
int main()
{
float a, b, c;
cout << "teclee 3 números: ";
cin >> a >> b >> c;
if(a > b)
if(a > c)
Condiciones compuestas
#include <iostream.h>
int main()
{
float a, b, c;
cout << "teclee 3 números: ";
cin >> a >> b >> c;
if(a >= b && a >= c)
cout << a << endl;
cout << a << endl;
else
else
cout << c << endl;
if(b >= a && b >= c)
else
cout << b << endl;
else
if(b > c)
cout << b << endl;
if(c >= a && c >= b)
else
cout << c << endl;
cout << c << endl;
return 0;
}
return 0;
}
Tarea
Escriba una sentencia que sea verdadera para
x = ...,-2,-1,0,3,6,9,12,15,18,...
Rescriba las siguientes sentencias de if anidados sin usar ningún anidamiento:
if ( a < c )
if ( b < c )
x = y;
else
x = z;
if ( a < b )
if ( a >= b )
x = z;
else
x = y;
else
else
x = z;
x = z;
Tarea casera
1. Escriba un programa en C que lea tres números y los
imprima en orden. Ayuda: existen 6 casos: a>b>c, a>c>b,
b>a>c, b>c>a, c>a>b y c>b>a.
Haga una versión con condiciones compuestas y otra con
sentencias if anidadas.
Sentencia switch
La sentencia switch permite elegir entre varias alternativas.
Sintaxis
switch (<expresión>){
case <constante>:[case <constante>:]<sentencias>;break;
...
[default:<sentencias>;break;]
}
caso a
Acción del
caso a
break;
caso b
Acción del
caso b
break;
caso z
Acción del
caso z
break;
Acción por
omisión
ejemplo de switch
Programa para leer un
número de día (1 –
lunés,… 7 – domingo)
SIEMPRE PONGA break
AL FINAL DE CADA
OPCIÓN EN LA
SENTENCIA SWITCH.
#include <iostream.h>
int main(){
int dia;
cout << "teclee el número del día: ";
cin >> dia;
switch(dia){
case 1:cout << "Lunes" << endl;break;
case 2:cout << "Martes" << endl;break;
case 3:cout << "Miércoles" << endl;break;
case 4:cout << "Jueves" << endl;break;
case 5:cout << "Viernes" << endl;break;
case 6:cout << "Sabado" << endl;break;
case 7:cout << "Domingo" << endl;break;
default: cout << "día no válido" << endl;
}
system("PAUSE");
}
Modifique el programa de los días de la semana para desplegar “entre semana”
si el día es de 1 a 5, “sabado” si es 6 y “domingo” si es 7. utilice una sola
sentencia cout para el caso de los días entre semana.
Ejemplo de menú
Se elige entre varias opciones de
un menú
1 - Microsoft Word";
2 - Yahoo messenger";
3 - AutoCAD";
4 - Java Games";
Cada opción despliega un mensaje
diferente
/* Ejemplo-switch-1 */
#include <iostream.h>
main(){
int a;
cout << "\t\tMenu";
cout <<"\n-----------------------------------";
cout <<"\n1 - Microsoft Word";
cout <<"\n2 - Yahoo messenger";
cout <<"\n3 - AutoCAD";
cout <<"\n4 - Java Games";
cout <<"\n-----------------------------------";
cout <<"\nIngrese numero de su preferencia: ";
cin >> a; // leer entrada
switch (a){
case 1: // si entrada es 1
cout <<"\nPersonal Computer Software\n";break;
case 2: // si entrada es 2
cout <<"\nWeb based Software\n";break;
case 3: // si entrada es 3
cout <<"\nScientific Software\n";break;
case 4: // si entrada es 4
cout <<"\nEmbedded Software\n";break;
default: cout <<"\nEntrada incorrecta\n";
}
system("PAUSE");
}
Ejemplo de empleados
Calcular el sueldo mensual de un empleado que trabaja por horas, el
pago de cada hora trabajada depende de su categoría:
categoria
A
B
C
pago x hora
26.90
24.30
21.50
Además si el empleado trabaja mas de 150 horas mensuales tiene una
bonificación del 5 % de sueldo.
Algoritmo
Se ingresara el nombre del empleado, seguido de su categoría y al final el
número de horas trabajadas.
Algoritmo
1. Leer datos
2. Determinar sueldo en base a su categoría
3. Determinar monto de bonificación
4. Imprimir nombre, categoría y sueldo total
Variables (entrada)
nombre – cadena de caracteres
categoria – carácter
horas - entero
Variables (salida)
pagoHora – real (float)
bono – real (float)
sueldo – real (float)
El tipo char y cadena (char[])
La categoría se almacenará en una variable de tipo char (carácter)
El nombre del empleado se almacenará en una cadena de caracteres.
En C hay que especificar la longitud máxima de la cadena.
La declaración sigue la siguiente sintaxis:
char variable[longitud máxima];
Ejemplo:
char nombre[30];
La lectura solo lee la cadena hasta el primer espacio o hasta la longitud
máxima, si teclea “juan perez”, solo se almacenará “juan”.
Declaración y lectura
char nombre[7]; //nombre del empleado
char categoria; //categoría A, B, C
int horas; //horas trabajadas
float pagoHora, sueldo, bonificacion;
cout << "nombre del empleado: ";
cin >> nombre;
cout << "categoría: ";
cin >> categoria;
cout << "horas trabajadas: ";
cin >> horas;
Cálculo del sueldo
Se determinará mediante una sentencia switch el pago por hora en función
de la categoría.
//determinación del pago por horas
switch(categoria){
case 'a':case 'A':pagoHora = 26.90;break;
case 'b':case 'B':pagoHora = 24.30;break;
case 'c':case 'C':pagoHora = 21.50;break;
}
//calculo del sueldo sin bonificación
sueldo = horas*pagoHora;
//cálculo de bonificación
if(horas>150)
bonificacion = 0.05*sueldo;
else
bonificacion = 0.0;
//sueldo total
sueldo = sueldo+bonificacion;
Salida de resultados
La salida se presentará en forma tabular
//Salida en forma tabular
cout << "\nnombre\tCateg\tHoras\tPago/Hr\tBoni.\tsueldo\n"
<<nombre<<"\t"<<categoria<<"\t"<<horas<<"\t"<<pagoHora<<
"\t"<<bonificacion<<"\t"<<sueldo<<endl;
Tarea
Escriba un programa que despliegue un menú con las opciones:
a. Capital de Bélgica?
b. Río más grande se Sudamérica?
c. Sistema operativo de Microsoft?
d. Premio novel de química mexicano?
lea un carácter de ‘a’ a ‘d’ y despliegue la respuesta de la opción elegida. Utilice
un sentencia switch.
Switch(variable){
case ‘a’ : cout << “jhsjkhkjhkjfhjkhfjkbkjnfkn”<< endl; break;
………
}
Tarea casera
Modifique el programa de los días de la semana para desplegar “entre
semana” si el día es de 1 a 5, “sabado” si es 6 y “domingo” si es 7.
Escriba un programa que lea un valor de temperatura en K, ºC o ºF y la
convierta a las otras dos escalas, lea el tipo de conversión mediante un
menú y una sentencia switch.
Escriba un programa que lea dos números reales y un símbolo de
operación y realice la operación aritmética seleccionada (+, -, *, /) entre los
dos números tecleados. Utilice la sentencia switch.
Ejemplo:
Teclear
obtener
3.5 7.8 *
27.3
7.4 16.3 /
0.45399
Solución de una cuadrática
La ecuación cuadrática en forma general es
ax2 + bx +c = 0
La solución puede encontrarse con la fórmula:
 b  b 2  4ac
x
2a
Hay tres casos posibles dependiendo del valor del radicando
b2 – 4ac
>0
Dos raíces diferentes
=0
Una raíz repetida
<0
Raíces complejas conjugadas
Diseño de un programa para resolver una cuadrática.
Algoritmo
1. Leer valores de los coeficientes
2. Determinar el valor del discriminante
3. Si el discriminante es mayor que cero encontrar las 2 raíces diferentes y
mostrarlas en la pantalla, sino
4. Si el discriminante es igual a cero determinar la raíz doble y mostrarla
en la pantalla, sino
5. Determinar las raíces complejas conjugadas y mostrarlas en la pantalla.
Variables
Coeficientes:
a – coeficiente de x2, real (float)
b – coeficiente de x, real (float)
c – término independiente, real (float)
d – discriminante, real (float)
Declaración:
float a, b, c, d;
Lectura:
cout << “Teclee los coeficientes a, b, c: ”;
cin >> a >> b >> c;
Determinación del discriminante:
d = b*b – 4*a*c;
Variables para almacenar las raíces:
x1, x2 – raíces diferentes, reales (float)
xdoble – raíz doble (float)
xreal, ximg – parte reala e imaginaria de la raíz compleja
Declaración:
float x1,x2,x, xreal, ximag;
Determinación de cada caso
Utilizaremos una sentencia if anidada:
If(d>0){
x1 = (-b – sqrt(d))/2/a;
x2 = (-b + sqrt(d))/2/a;
cout << “x1 =\t“<< x1 << “\nx2 =\t” << x2 << endl;
}else If(d=){
xdoble = (-b – sqrt(d))/2/a;
cout << “Raiz doble\nx =\t“<< xdoble << endl;
}else{
xreal = -b/2/a;
ximag = (sqrt(-d))/2/a;
cout << “x real =\t“<< xreal << “\nximag =\t” << ximg << endl;
}
Ejemplo
Dos vehículos se mueven a diferentes velocidades en t = 0 y con
aceleraciones constantes y diferentes y se encuentran en diferente posición,
haga un programa que determine en que tiempos y posiciones ambos
vehículos coinciden.
Sea x01, v1 y a1 la posición, la velocidad y la aceleración con que se mueve
el primer vehículo y x02, v2 y a2 la posición, la velocidad y la aceleración en
que se mueve el segundo vehículo.
Las ecuaciones de movimiento de cada cuerpo son:
x1 = x01+ v1 t + 0.5a1 t2
x2 = x02 +v2 t + 0.5a2 t2
Los tiempos pedidos se encuentran cuando x1 = x2 o
x01 + v1 t + 0.5a1 t2 = x02 +v2 t + 0.5a2 t2
Simplificando se llega a
0.5 (a1 – a2) t 2 + (v1 – v2) t +x01 – x02 = 0
Esta es una ecuación cuadrática de la forma
a x2 + b x + c = 0
Con
a = 0.5(a1 – a2) b = (v1 – v2)
Cuya solución es:
 b  b 2  4ac
x
2a
Esta tiene solución cuando b2 – 4 a c > 0
c = x01– x02
Algoritmo
1. Leer los valores del primer vehículo
2. Leer los valores del segundo vehículo
3. Calcular los coeficientes a, b y c
4. Calcular el valor del discriminante
5. Si el discriminante es mayor o igual a cero
calcular los valores de t y guardarlos en t1, t2, pos1 , pos2
si t1>0 imprimir “se encontrarán en t1 en pos1”
si t2>0 imprimir “se encontrarán en t2 en pos2“
6 sino
informar que no se encuentran en ningún tiempo
Declaración y lectura de variables
//variables de entrada
float x01,v1,a1,x02,v2,a2;
//coeficientes de la cuadrática y discriminante
float a,b,c,d;
//tiempos
float t1,t2,pos1,pos2;
//lectura de datos
cout << "teclee el t1, x01 y a1: ";
cin >> t1 >> x01 >> a1;
cout << "teclee el t2, x02 y a2: ";
cin >> t2 >> x02 >> a2;
Solución del problema
a = 0.5*(a1-a2); b = v1-v2;
c = x01-x02;
d = b*b - 4*a*c;
if(d>0){
t1 = (-b+sqrt(d))/2/a;
t2 = (-b-sqrt(d))/2/a;
if(t1>0){
pos1 = x01+v1*t1+0.5*a1*t1*t1;
cout << "se encontrarán en "<<t1<<" s en "
<<pos1<<" m"<<endl;
}
if(t2>0){
pos2 = x01+v1*t2+0.5*a1*t2*t2;
cout <<"se encontrarán en "<<t2<<" s en "
<<pos2<<" m"<<endl;
}
}else
cout << "NO se encuentran"<<endl;
system("PAUSE");
}
else colgado
if (x < y)
if (x < z)
cout << "Hola" ;
else
cout << "Adiós" ;
if (x < y)
if (x < z)
cout << "Hola" ;
else
cout << "Adiós" ;
F
v
x<y
v
x<z
Adios
Hola
x<y
F
Adios
v
x<z
v
Hola
Solución
if (x < y){
if (x < z)
cout << “Hola" ;
}
else
cout << "Adiós" ;
o
if (x < y && x < z)
cout << “Hola" ;
else
cout << "Adiós" ;
Sentencia ?:
La sentencia if puede abreviarse mediante el operador ?:. La sintaxis es:
condición ? operando1 : operando2;
Esta muy relacionado a la sentencia if/else.
El operador regresa el operando1 si la condición es verdadera y regresa el
operando2 si es falsa.
Ejemplo:
cout << ( cal >= 60 ? “Aprobado” : “Reprobado”);
Esta sentencia imprimirá “Aprobado” se cal es mayor o igual a 60 e imprimirá
“Reprobado” si es menor que 60. Note que los paréntesis son necesarios dado
que el operador ?: tiene la menor precedencia.
También es válido:
cal >= 60 ? cout << “Aprobado” : cout << “Reprobado”;
Ejemplos
Sentencia if
sentencia ?:
if(a>5) x = 6;else x = 7;
a>5 ? x=6: x=7;
if(x>8 && x<12)
(x>8 && x<12)?a=2*b+c:a=3*b+c;
a = 2*b+c;
else
a = 3*b+c;
if(a>b)
if(b>c)
x = 5*a+c;
else
x = 6*a+b;
else
x = 8*a+4*b;
(a>b)?(b>c?x=5*a+c:x=6*a+b;):x=8*a+4*b;
Ejercicios
Traducir a if
y = (a>b)?3*a+b:2*a+b;
z =a>=2*x?(a<6)?4*a:5*a:3*a+1;
¿Qué valores se imprimen?
int a=8,b=9,x=5,y,z;
y = (a>b)?3*a+b:2*a+b;
z =a<=2*x?(a<6)?4*a:5*a:3*a+1;
cout <<"y = "<< y <<" z= " <<z<<endl;
#include <iostream.h>
main(){
int n;
//numero par con operador ?:
cout << "teclee n:";
cin >> n;
n%2==0?cout << "numero par\n":cout << "numero impar\n";
system("PAUSE");
}
#include <iostream.h>
main(){
int a,b,c,m;
//numero mayor con operador ?:
cout << "teclee a,b,c:";
cin >> a>>b>>c;
a>=b ? a>=c ? cout << a : cout << c:b>=c ? cout << b:cout << c;
a>=b ? a>=c ? m = a : m = c : b>=c ? m = b : m = c;
cout << endl;
cout << m << endl;
system("PAUSE");
}
Tarea
Traduzca las sentencias if a sentencias con el operador ?:.
if(x>8) y = 23;else z = -5;
if(x>=8 && x!=12)
z = sqrt(6*x);
else
if(x>0)
z = sin(3*x);
else
z = sin(5*x);
Traduzca la siguiente sentencia con ? A if
x = (y>5)?2*y+1:(z<10)?3*y+2:5*z+1;
Tarea casera
Escriba un programa que lea tres números reales representando
los lados de un triángulo y decida si el triángulo es rectángulo o
no. Suponga que los números se leen de menor a mayor.
(punto extra) Escriba un programa para resolver una ecuación
cuadrática. Considere el caso en que las soluciones sean
complejas utilizando el operador ?:.