Ejercicios resueltos en C# : Control de alcoholemia


La Dirección General de Tráfico necesita un programa que, dado el tipo de vehículo que conduce un conductor, su índice de alcohol y si ha sido medido en sangre o en aire, determine si da positivo en el control de alcoholemia o no. La tasa máxima de alcohol tanto en sangre como en aire según el tipo de vehículo se resume en la siguiente tabla:

Vehiculo Indicador Tasa maxima en sangre Tasa maxima en aire
Camión C 0.3 0.15
Autobús A 0.3 0.15
Turismo T 0.5 0.25
Motocicleta M 0.3 0.15


Como realizar este ejercicio en C#?


1ro. Crear un formulario con dos textboxes, el que contendra el Tipo de vehiculo se llamara txttipovehiculo y que contendra el indice de alcohol txtindicealcohol asi como dos radio buttons llamados rbtsangrerbtaire.

2do. El botón "Determinar" hará el trabajo, por lo que este es el codigo que hará que el mismo funcione:


try
            {
                double indecealcohol;
                indecealcohol = Convert.ToDouble(txtindicealcohol.Text);

                if (txttipovehiculo.Text != "C" && txttipovehiculo.Text != "A" && txttipovehiculo.Text != "T" && txttipovehiculo.Text != "M")
                {

                    MessageBox.Show("Indicador no válido!");

                    txttipovehiculo.SelectionStart = 0; //Sombrear el texto
                    txttipovehiculo.SelectionLength = txttipovehiculo.Text.Length; //Sombrear el texto
                    txttipovehiculo.Focus(); 

                } 
                else
                {

                    if (txttipovehiculo.Text == "C")
                    {

                        if (rbtsangre.Checked)
                        {
                            if (indecealcohol >= 0.3)
                            {
                                lblresultado.Text = "Positivo".ToString();
                            }
                            else
                            {
                                lblresultado.Text = "Negativo".ToString();
                            }
                        }
                        else
                        {

                            if (rbtaire.Checked == true)
                            {
                                if (indecealcohol >= 0.15)
                                {
                                    lblresultado.Text = "Positivo".ToString();
                                }
                                else
                                {
                                    lblresultado.Text = "Negativo".ToString();
                                }

                            }
                        }
                    }
                    else
                    {

                        if (txttipovehiculo.Text == "A")
                        {

                            if (rbtsangre.Checked)
                            {
                                if (indecealcohol >= 0.3)
                                {
                                    lblresultado.Text = "Positivo".ToString();
                                }
                                else
                                {
                                    lblresultado.Text = "Negativo".ToString();
                                }
                            }
                            else
                            {
                                if (rbtaire.Checked)
                                {
                                    if (indecealcohol >= 0.15)
                                    {
                                        lblresultado.Text = "Positivo".ToString();
                                    }
                                    else
                                    {
                                        lblresultado.Text = "Negativo".ToString();
                                    }

                                }
                            }

                        }
                        else
                        {
                            if (txttipovehiculo.Text == "T")
                            {

                                if (rbtsangre.Checked)
                                {
                                    if (indecealcohol >= 0.5)
                                    {
                                        lblresultado.Text = "Positivo".ToString();
                                    }
                                    else
                                    {
                                        lblresultado.Text = "Negativo".ToString();
                                    }
                                }
                                else
                                {
                                    if (rbtaire.Checked)
                                    {
                                        if (indecealcohol >= 0.25)
                                        {
                                            lblresultado.Text = "Positivo".ToString();
                                        }
                                        else
                                        {
                                            lblresultado.Text = "Negativo".ToString();
                                        }

                                    }
                                }

                            }
                            else
                            {
                                if (txttipovehiculo.Text == "M")
                                {

                                    if (rbtsangre.Checked)
                                    {
                                        if (indecealcohol >= 0.3)
                                        {
                                            lblresultado.Text = "Positivo".ToString();
                                        }
                                        else
                                        {
                                            lblresultado.Text = "Negativo".ToString();
                                        }
                                    }
                                    else
                                    {
                                        if (rbtaire.Checked)
                                        {
                                            if (indecealcohol >= 0.15)
                                            {
                                                lblresultado.Text = "Positivo".ToString();
                                            }
                                            else
                                            {
                                                lblresultado.Text = "Negativo".ToString();
                                            }

                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                

            }
            catch (Exception msg)
            {

                MessageBox.Show(msg.Message);
            }


3ro. Adicionalmente el botón "Limpiar":

            txtindicealcohol.Clear();
            txttipovehiculo.Clear();
            lblresultado.Text = "";
            txttipovehiculo.Focus();


y el botón "Salir":

Close();

Ejercicios resueltos en C#: Precio de pasaje de ferrocarril

"Determinar el precio de un pasaje de ida y vuelta en ferrocarril, conociendo la distancia a recorrer y el número de días de estancia en el destino. Si este es mayor que 7 y la distancia superior a 800km, el pasaje tiene una reducción del 30%. El precio por km es $0.80."

Como realizar este ejercicio en C#?

1ro. Crear un formulario con tres textboxes, el que contendra La distancia recorrer se llamara txtdistancia, el de los dias de estancia txtdiasestancia y el que contendra lel precio del pasaje txtprecio_pasaje.

2do. El botón "Calcular" hará el trabajo, por lo que este es el codigo que hará que el mismo funcione:

    try
            {
                double distancia, dias_estancia, precioxkm, precio_pasaje;

                distancia = Convert.ToInt16(txtdistancia.Text);
                dias_estancia = Convert.ToInt16(txtdiasestancia.Text);
                precioxkm = 0.80;
                if (dias_estancia > 7 && distancia > 800)
                {
                    precio_pasaje = precioxkm * distancia - (precioxkm * distancia * 0.30);
                    txtprecio_pasaje.Text = "$" + precio_pasaje.ToString();
                }
                else
                {
                    precio_pasaje = precioxkm * distancia;
                    txtprecio_pasaje.Text = "$" + precio_pasaje.ToString();
                }

            }
            catch (Exception msg)
            {

                MessageBox.Show(msg.Message);
            }


          

3ro. Adicionalmente el botón "Limpiar":


            txtdiasestancia.Clear();
            txtdistancia.Clear();
            txtprecio_pasaje.Clear();

          

Factura en DFD

Para emprezar en una figura de lectura declaramos las variables canart y precio.

Elemento Variable
Cantidad de articulos canart
Precio del articulo precio

Luego en una figura de asignacion asignamos a las constantes itbis, subtotal y total las siguientes operaciones:
Constante Operacion
itbis cantart*precio* 0.16
subtotal cantart *precio
total cantart *precio + itbis

En una figura de Salida escribimos el sigte mensaje (entre comillas simples):
'Desea aplicar descuento : si/no'

En la figura de lectura leemos la variable "d". Para cuando se lea esta variable si deseamos aplicar el descuento escribimos 'si', si no deseamos aplicar descuento entonces escribimos 'no' (entre comillas simples).

Despues colocamos una variable de Desicion con el texto: d='si'. Esto pregunta si la variable "d" es igual a 'si'. Si es asi el programa seguira ejecutandose hacia la derecha, de lo contrario se ira hacia la izquieda.

En caso de que se aplique el descuento, utilizaremos una variable de lectura con llamada "desc" que representara el valor del descuento a aplicar a la factura. 

Despues con una figura de asignacion asignamos a las variables p_desc, tdesc y total_desc las sigtes opetaciones.

ConstanteOperacion
p_descdesc /100
tdesctotal * p_desc
total_desctotal -tdesc


En caso de que no se valla a aplicar un descuento a la factura es necesario asignar a las constantes p_desc y total_desc el valor de 0, en ua figura de asignacion de el lado izquierdo de la figura de Desicion.

Finalmente en una figura de Salida insertar las variable necesarias para imprimir la factura.

'precio=',precio, '   ','itbis=',itbis ,'   ','subtotal=',subtotal ,'   ','total=',total ,'   ', 'descuento=' ,p_desc, '%', '  ' ,'descuento aplicado=',total_desc





Convertir de numeros a letras en Visual Basic 6.0

El siguiente programa convertira los numeros en letras del 0 al 10,000. Para ellos utilizaremos 2 textbox llamado txtvalor y txtletras, y un commandbutton que se llamara Command1.

El siguiente es el codigo para hacer funcionar el programa. Copiar y pegar en el commandbutton Command1. 




Dim n, z, y, t As String


Private Sub Command1_Click()
n = Val(txtvalor)

If n = 0 Then
nn = ("cero")
End If

z = ""
y = ""
t = ""

For x = 1 To 4


If n = 1 Then
nn = ("uno")
End If


If n = 2 Then
nn = ("dos")
End If


If n = 3 Then
nn = ("tres")
End If


If n = 4 Then
nn = ("cuatro")
End If


If n = 5 Then
nn = ("cinco")
End If


If n = 6 Then
nn = ("seis")
End If


If n = 7 Then
nn = ("siete")
End If


If n = 8 Then
nn = ("ocho")
End If


If n = 9 Then
nn = ("nueve")
End If


If n = 10 Then
nn = ("dies")
End If


If n = 11 Then
nn = ("once")
End If


If n = 12 Then
nn = ("doce")
End If


If n = 13 Then
nn = ("trece")
End If


If n = 14 Then
nn = ("catorce")
End If


If n = 15 Then
nn = ("quince")
End If


If n = 16 Then
nn = ("dieciseis")
End If


If n = 17 Then
nn = ("diecisiete")
End If


If n = 18 Then
nn = ("dieciocho")
End If


If n = 19 Then
nn = ("diecinueve")
End If


If n = 20 Then
nn = ("veinte")
End If


If n = 21 Then
nn = ("veintiuno")
End If


If n = 22 Then
nn = ("veintidos")
End If


If n = 23 Then
nn = ("veintitres")
End If


If n = 24 Then
nn = ("veinticuatro")
End If


If n = 25 Then
nn = ("veinticinco")
End If


If n = 26 Then
nn = ("veintiseis")
End If


If n = 27 Then
nn = ("veintisiete")
End If


If n = 28 Then
nn = ("veintiocho")
End If


If n = 29 Then
nn = ("veintinueve")
End If

If n = 30 Then
nn = ("treinta")

End If


If n > 30 And n < 40 Then
z = "treinta"
s = n - 30
n = s
End If

If n = 40 Then
nn = ("cuarenta")

End If

If n > 40 And n < 50 Then
z = "cuarenta"
s = n - 40
n = s
End If

If n = 50 Then
nn = ("cincuenta")

End If

If n > 50 And n < 60 Then
z = "cincuenta"
s = n - 50
n = s
End If



If n = 60 Then
nn = ("sesenta")

End If

If n > 60 And n < 70 Then
z = "sesenta"
s = n - 60
n = s
End If


If n = 70 Then
nn = ("setenta")

End If

If n > 70 And n < 80 Then
z = "setenta"
s = n - 70
n = s
End If

If n = 80 Then
nn = ("cincuenta")

End If

If n > 80 And n < 90 Then
z = "ochenta"
s = n - 80
n = s
End If



If n = 90 Then
nn = ("noventa")

End If

If n > 90 And n < 100 Then
z = "noventa"
s = n - 90
n = s
End If

If n = 100 Then
nn = ("cien")

End If


If n > 100 And n < 200 Then
y = "ciento"
s = n - 100
n = s
End If

If n = 200 Then
nn = ("doscientos")

End If

If n > 200 And n < 300 Then
y = "doscientos"
s = n - 200
n = s
End If

If n = 300 Then
nn = ("trescientos")

End If

If n > 300 And n < 400 Then
y = "trescientos"
s = n - 300
n = s
End If

If n = 400 Then
nn = ("cuatrocientos")

End If

If n > 400 And n < 500 Then
y = "cuatrocientos"
s = n - 400
n = s
End If

If n = 500 Then
nn = ("quinientos")

End If

If n > 500 And n < 600 Then
y = "quinientos"
s = n - 500
n = s
End If


If n = 600 Then
nn = ("seiscientos")

End If

If n > 600 And n < 700 Then
y = "seiscientos"
s = n - 600
n = s
End If


If n = 700 Then
nn = ("setecientos")

End If

If n > 700 And n < 800 Then
y = "setecientos"
s = n - 700
n = s
End If


If n = 800 Then
nn = ("ochocientos")

End If

If n > 800 And n < 900 Then
y = "ochocientos"
s = n - 800
n = s
End If


If n = 900 Then
nn = ("novecientos")

End If

If n > 900 And n < 1000 Then
y = "novecientos"
s = n - 900
n = s
End If

If n = 1000 Then
nn = ("mil")

End If

If n > 1000 And n < 2000 Then
t = "mil"
s = n - 1000
n = s
End If

If n = 2000 Then
nn = ("dos mil")

End If

If n > 2000 And n < 3000 Then
t = "dos mil"
s = n - 2000
n = s
End If

If n = 3000 Then
nn = ("tres mil")

End If

If n > 3000 And n < 4000 Then
t = "tres mil"
s = n - 3000
n = s
End If

If n = 4000 Then
nn = ("cuatro mil")

End If

If n > 4000 And n < 5000 Then
t = "cuatro mil"
s = n - 4000
n = s
End If

If n = 5000 Then
nn = ("cinco mil")

End If

If n > 5000 And n < 6000 Then
t = "cinco mil"
s = n - 5000
n = s
End If

If n = 6000 Then
nn = ("seis mil")

End If

If n > 6000 And n < 7000 Then
t = "seis mil"
s = n - 6000
n = s
End If

If n = 7000 Then
nn = ("siete mil")

End If

If n > 7000 And n < 8000 Then
t = "siete mil"
s = n - 7000
n = s
End If

If n = 8000 Then
nn = ("ocho mil")

End If

If n > 8000 And n < 9000 Then
t = "ocho mil"
s = n - 8000
n = s
End If

If n = 9000 Then
nn = ("mil")

End If

If n > 9000 And n < 10000 Then
t = "nueve mil"
s = n - 9000
n = s
End If

If n = 10000 Then
nn = ("dies mil")

End If

txtletras.Text = t & " " & " " & y & " " & z & " " & nn

Next
End Sub



Como funcionara el codigo este código:

Dim n, z, y, t As String: Se declaran las variables n, z, y, t tipo cadena.

n = Val(txtvalor): Se asigna a la variable "n" el valor del textbox "txtvalor" en el cual insertaremos el numero que queramos convertir a letra.

If n = 0 Then nn = ("cero") End If: Empezamos preguntando que si el valor de la variable "n"es igual a cero entonces la variable "nn" sera igual a la cadena "cero", este es el numero en letra.

t = "": Se inicializa la variable t con un valor vacio, se le asignas comillas por ser una variable tipo cadena.

For x = 1 To 4: El "For" sirve para repetir un evento la cantidad de veces especificadas en el mismo. En este caso el se repetira 4 veces ya que como se convertiran los numeros hasta el 10,000 las cifras de los numeros  que estan antes del 10,000 son 4.

Luego al igual se continuara preguntando con el If que numero es cual para imprimirlos en letras.

If n > 30 And n < 40 Then z = "treinta" s = n - 30 n = s End If: A partir de el numero 30 se utilizara la variable z para imprimir los numeros correspondientes a la decena. Con la variable "s" se resta a la variable "n" (el valor del textbox) en este caso 30, para conseguir el numero restante en letras.

Y asi sucesivamente...

La variable "t" representa la unidad de mil, la variable "y" la centena, "z" la decena y la variable "nn" representa la unidad.



Foto Christine by matmoon