TUTORIAL DE FUNCIONES TRIGONOMÉTRICAS EN VISUAL C++

Tutorial de funciones trigonométricas en visual c++

Presentación:

El siguiente trabajo que veremos a continuación está diseñado para el aprendizaje de las funciones trigonométricas en visual c++ 6.0 , mostraremos los pasos a seguir para obtener una gráfica de una función mediante sus respectivas codificaciones .

Es muy importante conocer las gráficas de las diversas funciones trigonométricas y creo que cada uno de ustedes ya deben conocer por lo menos algunas de estas gráficas porque lo que aprenderemos en esta oportunidad es llegar a representarlas, combinarlas e incluso formar dibujos muy interesantes mediante nuestra propia creatividad. El sen, cos, tan, cotan, secan, cosecan, son funciones que casi todo el mundo conocen pero no todos se atreven a transformarlas y mezclarlas en nuevas cosas que son muy fáciles pero que a veces no nos atrevemos a realizarlas.

A continuación empezamos con los pasos a seguir:

En esta ocasión vamos a representar la gráfica de la

 Función: tangente hiperbólica (positiva) U tangente hiperbólica (negativa)

Paso 1

<<File/New/MFC AppWizard (exe)/Proyect Name=AppGraficaTrigo/

Location = C: \ALUMNO\AppGraficaTrigo/Ok>>

 

Image

 

Paso 2

En la ventana de diálogo del generador ClassWizard,

<<Step1= Document Single/Next>>

Image

 

<<Step2= None/Next>>      (Tipo de aplicación que se desea crear)

Image

 

<<Step3= None/ActiveX Contorls/Next>> (No usar el soporte OLE)

<<Step4= Docking Toolbar/Inicial StatusBar/Printing and Print Preview / 3D Controls / Normal/Next >>   (Las características  de la aplicación)

<<Step5= MFC Standard / Yes pleace/As shared DLL / Next >>  (Estilo de proyecto,  generación de comentarios y el uso de librería MFC)

<<Step6= Finish/Ok >>   (Muestra el listado con las características que el asistente está por hacer)

Image

 

Paso 3

En la ventana worksapace la solapa View el wizard ha generado los códigos siguientes:

Image

 

Creada la aplicación ubicamos a la función OnDraw () de la Clase CAppGraficaTrigoView, una vez ubicada hacer doble clic sobre ella para editar su código.

void CAppGraficaTrigoView::OnDraw (CDC* pDC)

{

            CAppGraficaTrigoDoc* pDoc = GetDocument ();

            ASSERT_VALID (pDoc);

            // Agregar la siguiente sentencia        

double y;

int i;

// Permite realizar tareas gráficas sobre el área cliente de una

// determinada ventana

 

CClientDC dc (this);

dc.MoveTo (100,50);

dc.LineTo (100,350);

dc.MoveTo (100,200);

dc.LineTo (500,200);

dc.MoveTo(100,200);

dc.TextOut (550,200, “Función tangente hiperbólica U (-)tangente hiperbolica”,56);

dc.MoveTo (100,200);

 dc.TextOut (510,310, “f(x)= tangente hiperbólica(negativa)”,37);

for (i=0; i<400;i++)

 {

   y = 120 * (exp(3.1415 * i * (360.0/400)/180.0)- exp(-(3.1415 * i * (360.0/400)/180.0))) / (exp(3.1415 * i * (360.0/400)/180.0) +

               exp(-(3.1415 * i * (360.0/400)/180.0)));

   dc.LineTo(100+i,200.0-y);

 }

dc.MoveTo(100,200);

dc.TextOut(510,70, “f(x)= tangente hiperbolica(positiva)”,37);

for (i=0; i<400;i++)

{

            y = 120 * -((exp(3.1415 * i * (360.0/400)/180.0) – exp(-(3.1415 * i * (360.0/400)/180.0))) /(exp(3.1415 * i * (360.0/400)/180.0)+

                        exp(-(3.1415 * i * (360.0/400)/180.0))));

   dc.LineTo(100+i,200.0-y);

}

}

Paso 4

Finalmente Pasamos a compilar (Ctrl+f5)  y obtendremos la siguiente ventana: 

Image

 

Ahora practicamos con las gráficas de otras funciones:

Pasaremos hacer la gráfica de la función: coseno U  cosecante

Para ello se sigue el mismo procedimiento solo se reemplaza la siguiente codificación:

void CAppGraficaTrigoView::OnDraw(CDC* pDC)

{

            CAppGraficaTrigoDoc* pDoc = GetDocument();

            ASSERT_VALID(pDoc);

double y;

int i;

// Permite realizar tareas gráficas sobre el área cliente de una

// determinada ventana

 

CClientDC dc (this);

dc.MoveTo(100,50);

dc.LineTo(100,350);

dc.MoveTo(100,200);

dc.LineTo(500,200);

dc.MoveTo(100,200);

dc.TextOut(510,200, “Función coseno U cosecante” ,26);

dc.MoveTo(100,200);             

 dc.TextOut(500,120, “f(x)= Cos(x)”,12);

 for (i=0; i<400;i++)

 {

y = 100 * cos(3.1415 * i * (360.0/400)/180.0);

dc.LineTo(100+i,200.0-y);         

}

dc.MoveTo(100,200);

dc.TextOut(500,350, “f(x)=1/Sin(x)”,26);

for (i=0; i<400;i++)

{

y = 100 * (1/sin(3.1415 * i * (360.0/400)/180.0 + 3.1415/2));

   dc.LineTo(100+i,200.0-y);

  }

}             

Al copilar obtendrás la siguiente gráfica:

Image

 

Hagamos la gráfica de la función: coseno2(x)*seno10(x)

Se introduce la codificación:

void CAppTrigoView::OnDraw(CDC* pDC)

{

                CAppTrigoDoc* pDoc = GetDocument();

                ASSERT_VALID(pDoc);

double y;

int i;

// Permite realizar tareas gráficas sobre el área cliente de una

// determinada ventana

 

CClientDC dc (this);

dc.MoveTo(100,50);

dc.LineTo(100,350);

dc.MoveTo(100,200);

dc.LineTo(500,200);

dc.MoveTo(100,200);

dc.TextOut(510,200, “Función coseno2(x)*seno10(x)”,30);

for (i=0; i<400;i++)

 {

   y = 120 *cos(2*(3.1415 * i * (360.0/400)/180.0))* sin(10*(3.1415 * i * (360.0/400)/180.0));

   dc.LineTo(100+i,200.0-y);

 }

}

Al copilar obtendremos esta gráfica:

Image

 

Nota1: No olvidar que para poder utilizar la función coseno (cos),  debe incluirse el archivo de cabecera de la siguiente manera: #include “math.h”

Nota2: si te llegaron a salir las gráficas que te proporcione continua practicando con otras. Con la práctica te darás cuenta que es muy sencillo hacerlas solo tienes que poner todo de tu creatividad e interés en aprender, espero que  hayas aprendido algo nuevo con este tutorial y nunca dejes de indagar  cosas nuevas, hasta una nueva oportunidad.

Mensaje: enseña siempre las cosas que aprendas solo así sabrás cuanto sabes en realidad, porque es únicamente el conocimiento nuestro compañero de toda una vida.

funciones con parametros en Dev-c++

Funciones con parámetros en Dev-C++

Introducción

Primeramente vamos a conocer y entender la parte teórica de este tema:

¿Qué es una función? Una función es un conjunto de instrucciones que se la puede llamar desde el programa principal o desde otras funciones. Las funciones sirven para desarrollar algo en especial cuando el programa así lo necesite .Para usar funciones, se deben tener en cuenta dos cosas que necesita:

  1. La declaración de la función: Esto sirve para que al compilar el programa, el compilador reconozca que esa función existe;  ya que si se llama desde alguna parte del programa sin haberla declarado o habiéndola declarado, se la declaró mal eso dará error .

Para declararla se sigue la siguiente sintaxis:

prototipo_de_funcion nombre_de_la_funcion( parametros opcionales );

¿Qué es prototipo y qué son parámetros? –

Prototipo de la función

: sirve para indicar que va a retornar la función, si va a retornar un entero, un double, un char, o simplemente no retorna nada (void). Esto es obligatorio.-

Parámetros:

son los datos que recibe o que se le envían a la función para que con ellos posiblemente desarrolle algo que se necesite. Esto es opcional.Entonces, una función para ingresar podría ser así:

void ingresar();

Donde se aprecia que no va a retornar nada (por ello tiene void); entonces, la función hace lo que tiene que hacer y termina, no devuelve nada.

Un ejemplo de devolución seria en una suma de enteros, ya que se le podría enviar comodato los dos números y la función haría internamente la suma devolviendo la suma de dichos números (si son todos enteros, devolvería un int. Si son enteros y flotantes devolvería un float ), así:

Int suma_enteros (int,int); // suma únicamente enteros, devuelve un entero

Float suma_ números (float ,float); // suma enteros o flotantes, devuelve un flotante

  1. La definición de la función: Sirve ya para desarrollar la función; es decir ya programar dentro de ella para que haga lo que se necesita. Como consecuencia de que ya está creada se puede usarla, pero si no se hubiese declarado y se desarrolla (hacemos la definición), al compilar dará error y dirá que esa función no fue declarada, que no existe .La definición es muy similar a la declaración, solo que esta vez lleva un ambiente (donde se va a programar, es decir las llaves “{ … }” ),así:

Void  ingresar ()

 {

………

 // Lo que deba hacer esa función

}

También otra diferencia es que la declaración lleva “;” (punto y coma) al final, la definición no lo lleva.

La declaración de una función debe estar siempre antes de la definición, por eso es recomendable que se la coloque al inicio del programa debajo de las librerías .Ya que se creó una función llamada “ingresar” para pedir los datos por medio de ella y no por medio del cuerpo principal main(), se debe llamar o invocar para que ejecute lo que tiene programado en su interior ya que por sí sola (sin ser llamada), el programa terminaría y ella no realizaría alguna acción .Para llamar o invocar una función lo único que se debe hacer es escribirla tal cual fue declarada sin alteraciones ya que las funciones son key sensitive, es decir que no es lo mismo:

void HOLA(); que void HoLa();

 Pues aunque son la misma palabra pero escrita diferente, para el compilador son dos funciones diferentes.

Para llamar a la función se coloca tal como fue declarada seguida del punto y coma (no se le pone el prototipo), solo el nombre y los posibles parámetros que lleve.

FUNCIONES EN DEV-C++ (PASO POR VALOR)

Las funciones no solamente son llamadas para que realicen cierta necesidad, sino que en algunas ocasiones para que la función desarrolle dicha necesidad necesita que se le envíen parámetros.

 Los parámetros que se le enviarán a la función para que ella pueda cumplir su papel correctamente, pueden ser enviados de dos maneras:

1) Pasar los parámetros por valor (paso por valor)

 2) Pasar los parámetros por referencia (paso por referencia)

 ¿Qué es el paso por valor? Es enviarle un parámetro (variable, constante, entre otros) a otra función que para resolver su contenido necesita obligatoriamente recibir ese parámetro; es decir, la función depende de los parámetros para funcionar.

¿Al pasar por valor los parámetros qué se hace en sí? Se envía el contenido de algo (ya sea una variable, constante) para que la función de destino la use y pueda completar con éxito su objetivo. Pero se debe tener en cuenta que al pasar por valor; la variable original no se altera, se envía una “copia” de ella a la cual si se le aplican cambios serán alterados únicamente en ella, más no en la original.

¿Cómo se declara una función que reciba parámetros por valor? La sintaxis sería la siguiente:

prototipo_de_la_función  nombre_de_la_función (tipo_de_dato  del parámetro1, tipo_de_dato  del parámetro 2, … );

Ejemplo:      void suma (int, int); Se declara una función “suma” que va a recibir dos parámetros que serán enteros porque el tipo de dato lo denota así. Aquellos parámetros son por valor, lo denotamos por el hecho que únicamente va el tipo de dato en los paréntesis.

 El prototipo de la función “suma” es void, es decir que no va a retornar valores, será un procedimiento. Si retornara un entero sería int el prototipo, un número con decimales sería float el prototipo, entre otros.

 ¿Cómo se define una función que recibe parámetros por valor? La definición de la función “suma”:

Ejemplo:   

  void suma(int  n1,int n2)

 {

….

 }

Donde n1 y n2 son variables formales.

¿Qué son variables formales? Son aquellas que se declaran en el momento de recibir el parámetro en la función de destino, tienen el contenido de una variable existente; pero no tiene necesariamente el mismo nombre. Por ejemplo, en éste código:

/ sueldo = 100. 

 // comision = 20. 

main()

 {  …………………

 ………….

 …….

suma ( sueldo, comision); 

 ….

……

  } 

void suma ( int n1,int n2)

 {  ….

  } 

Se observa que en el cuerpo principal (main), se hace un llamado a una función “suma” que recibe como parámetros dos números enteros. En éste caso será el sueldo y la comisión de un empleado. La función “suma” los recibe y con esos valores hará un proceso interno. Pero, al momento de llamar a la función “suma” se envía:

* sueldo ( variable entera )

 * comision ( variable entera )

Pero en la definición de la función “suma”, están dos variables en donde llega el contenido de sueldo y comisión; aquellas variables son,n1 y n2.Como se puede ver, no necesariamente la función debe tener en su definición el mismo nombre de la variable que le está pasando el dato, más bien se suele recomendar cambiar el nombre a las variables formales (las que se crean / se declaran en la definición de la función que recibe parámetros por valor). Lo que si interesa es que aquellas variables cual quiera que sea su nombre (en este caso n1y n2), reciben el contenido esperado. Es decir que:

 Si sueldo valía 100 como estaba previsto,n1 va a tener el valor de100en su contenido.

 Si comisión valía 20 como estaba previsto,n2 va a tener el valor de 20 en su contenido. 

Y si a n1 y n2 se le suman500 mas, ¿qué pasa?

Quedaría así:

n1 = 600 (es decir 100 + 500)

 n2 = 520 (es decir 20 + 500)

 Pero sueldo y comisión quedarían intactos, es decir:

sueldo = 100 

comision = 20

NO se alteran las variables originales en los pasos por valor como se había indicado anteriormente, pero si pasan su contenido exacto a las variables formales de la función destinada que recibe parámetros. Se crea una “copia” y esas copias pueden ser alteradas pero no se alterarán las originales.

El programa muestra los números que fueron ingresados, con el fin de reconocer que en el paso por valor NO se alteran las variables originales, ya que se visualizarán n1 y n2 con los valores originales a pesar de que hubo acciones aritméticas en su contenido (sumas, restas,..) pero esos cambios NO afectaron a las variables originales sino a las formales; pues esa es una de las características de pasar por valor los datos, se pasan copias.

Dev-c++, Funciones (paso por referencia)

Las funciones por lo general reciben parámetros, éstos hasta el momento fueron pasados a la función mediante el “paso por valor” que consiste en hacer una copia del argumento, para que la función trabaje con la copia y no con el argumento original. Esto significa que si la función modificara el valor, el original no se alteraría ya que se está manejando una copia.

Pero surgen dos problemas:

. Se podría querer modificar el argumento original y no una copia.

. Con gran cantidad de variables el paso por valor (copiando) puede resultar un gasto excesivo de memoria.

Para resolver estos problemas se cuenta con las referencias y los punteros. Una referencia a una variable es un “alias” de la variable. Para indicarle a C++ que estamos hablando de una referencia y no una variable anteponemos al nombre el carácter ampersand (&).

Por ejemplo una referencia llamada refPresupuesto apuntando a un valor double se escribiría así:

Doublé &refPresupuesto.

Ahora pasaremos a la parte práctica:

Primeramente

Abrimos el dev-c++/file/new/ proyect / console aplication / name /ok / guardar.

Image

Posteriormente pasamos a resolver de la siguiente manera:

Escribimos la codificación para un determinado problema.

Muchas veces es tedioso escribir el mismo código una y otra vez. Además esto hace más lento a nuestro programa. Para evitar esas incomodidades, existen las funciones. Agilizan el código, reduciendo el número de líneas y al mismo tiempo nos ayudan a escribir menos. 
En este tutorial veremos cómo hacer funciones en C++ que básicamente es igual en todos los lenguajes lo único que cambia de lenguaje a lenguaje es la forma de escritura (sintaxis). 
Si estas interesado en aprender… Sigue leyendo… 

Les pondré el código y lo iremos descomponiendo poco a poco para que lo entiendan. 

#include <iostream> //incluyendo la librería de entrada salida 
using namespace std; //cargando el namespace estándar 

int suma(int,int); //prototipo de funcion suma 
int resta(int,int);//prototipo de funcion resta 

int main(){ 
int num1,num2,opcion,resultado; 

cout<<“Ingrese el primer numero:”; 
cin>>num1; 
cout<<“Ingrese el segundo numero:”; 
cin>>num2; 
cout<<“Que desea hacer: \n1-Sumar \n2-Restar \nIngrese el numero de opcion y presione enter:\n”; 
// “\n” sirve como enter(salto de lina) (Pleca invertida) 
cin>>opcion; 

//dependiendo de la opcion insertada por usuario 
//se sumaran o restaran los 2 numeros 
switch(opcion){ 
case 1: 
resultado=suma(num1,num2); 
cout<<“El resultado es: “<<resultado; //usa la funcion e imprime el retorno 
//el retorno de suma(num1,num2) es la suma de los 2 numeros 
break; 
case 2: 
resultado=resta(num1,num2); 
cout<<“El resultado es: “<<resultado; //usa la funcion e imprime el retorno 
//el retorno de resta(num1,num2) es la resta de los 2 numeros 
break; 
default: 
cout<<“Esa opcion no es valida”; 
break; 

cin.ignore(); 
cin.get(); 
return 0; 

//definicion completa de los prototipos 
int suma(int x,int y){ 
return x+y; 

int resta(int x,int y){ 
return x-y; 
}

Pero hay que explicar algo importante. 
Las funciones en c++ primero se declaran. Esto es lo que vemos en la primera parte del código: 
int suma(int,int); //prototipo de funcion suma 
int resta(int,int);//prototipo de funcion resta

La sintaxis es la siguiente: 

<tipo de retorno> <nombre de funcion> (<tipo de parametro>…) 

Primero se pone el tipo de retorno. Estas 2 funciones devolverán números ENTEROS, por eso se usa int. Luego va el nombre de la función en este caso: suma y resta. Con el nombre llamaremos a las funciones. Luego vienen los parámetros. En el prototipo vale con solo poner el tipo de dato del parámetro, en este caso los 2 parámetros son Enteros, por eso pone (int,int). Y al final SIEMPRE! se pone un “;” (punto y coma) porque es un prototipo. 
Ahora debajo del main ya ponemos que hará nuestra función: 

int suma(int x,int y){ 
return x+y; 

int resta(int x,int y){ 
return x-y; 
}

Aquí los parámetros deben tener nombre. Ya no es solo el tipo de dato, sino que necesitamos un nombre para poder hacer referencia a ellos dentro de la función. Aquí ya no se pone un “;” como en el prototipo, aquí ya se abren los corchetes {} y dentro de los corchetes decimos que hará esa función. 
En estos casos sencillos, una función devuelve la suma de 2 números y la otra la resta de 2 números, que son pasados por parámetros. 
Para llamar una función simplemente ocupamos su nombre y rellenamos los parámetros: 
suma(5,6); //esto nos dará 11, simplemente llamamos la función con parámetros y listo. 

Finalmente copilamos y ejecutamos el programa, nos pedirá como datos un primer numero, un segundo numero, y un numero de opción entre(1-sumar,2-restar) posteriormente obtendrás un resultado.

Image

 

Bueno no se olviden de seguir practicando, y que solo tú tienes el poder de seguir innovando e ir progresando cada vez más en la vida, saludos.

TUTORIAL  DEL COMANDO CHECK BUTTON DE VISUAL C++ VERSIÓN 6.0PRESENTACIÓNEste

TUTORIAL  DEL COMANDO CHECK BUTTON DE VISUAL C++ VERSIÓN 6.0

PRESENTACIÓN

Este tutorial que presentaremos continuación se enfoca principalmente en la enseñanza de como utilizar un comando en el programa de visual c++, es muy importante que manejemos estos procedimientos que son muy específicos y muy fáciles si es que los llegamos a entender. En esta oportunidad utilizaremos el comando check button que es unos de los controles muy importantes por que nos facilita la tarea de elegir no solo una opción como en lo que ocurre con el radio button sino tambien varias opciones que nosotros optemos por seleccionar, los pasos que debemos de realizar para trabajar con este comando los explicaremos de una manera minusiosa y lo mas claramente posible. Espero que este tutorial sea de mucha ayuda para quienes los vean y les sirva como ventana para obtener nuevos conocimientos, no olvides que la ciencia siempre avanza y por lo tanto hay que actualizarnos constantemente para no quedarnos atrás.

Seguidamente empesamos:

En primer lugar seleleccionamos:

<<FILE/NEW/MFC AppWizard(exe)/Proyect Name=App08/

Location=C:\ALUMNO\App08/OK>>

Image

Seguidamente seleccionar:   

<<Step1=Dialog Based/Next>>

<<Step2=3D Controls/ActiveX Controls/Next>>

<<Step3=MFC Standard/Yes Pleace/As a shared DLL/Next>>

<<Step4=Finish/OK>>

Ahora Vamos a crear una boleta de liquidacion para el uso del comando check button

En la que nos pida el nombre del servidor, sus horas habituales, sus horas adicionales, categoria(ingeniero, albañil o mecanico) y descuentos(movilidad y refrigerio).

El pago por hora según la categoria es el siguiente:

  • Ingeniero      : S/.10
  • Mecanico      : S/.7
  • Obrero           : S/.5

Los descuentos son:

  • Movilidad     : El 8% del sueldo bruto
  • Refrigerio     : El 4% del sueldo bruto

El pago por horas adicionales sera el 50% mas del pago por hora habitual.

Deducimos que :

Sueldo bruto= (horas habituales * pago por hora) + pago por horas extras

Sueldo neto = sueldo bruto – descuentos

Posteriormente pasamos a  genera los controles:

  • 5 etiquetas
  • 3 cajas de texto
  • 2 cajas de grupo
  • 3 botones de opcion
  • 2 casillas de verificacion
  • 1 boton de comando

Control

Propiedades

Valor

IDD_APP10_DIALOG

Caption

Boleta de Liquidacion

IDC_STATIC

IDC_STATIC (1)

IDC_STATIC (2)

IDC_STATIC (3)

IDC_STATIC (4)

IDC_STATIC (frame1)

IDC_STATIC (frame2)

Caption

Caption

Caption

Caption

ID

Caption

Border

Caption

Caption

Nombre del Servidor

Horas Habituales

Horas Adicionales

Resultados

IDC_RESULTADOS

“”

True

Categorias

Descuentos

IDC_EDIT1

IDC_EDIT2

IDC_EDIT3

ID

ID

ID

IDC_HORASADICIONALES

IDC_HORASHABITUALES

IDC_NOMBRES

IDC_RADIO1

IDC_RADIO2

IDC_RADIO3

ID

Caption

Group

ID

Caption

ID

Caption

IDC_INGENIERO

&Ingeniero

True

IDC_MECANICO

&Mecanico

IDC_OBRERO

&Obrero

IDC_CHECK1

IDC_CHECK2

ID

Caption

ID

Caption

IDC_MOVILIDAD

&Movilidad

IDC_REFRIGERIO

&Refrigerio

IDC_BUTTON1

ID

Caption

Default button

IDC_CALCULAR

&Calcular

True

Luego de terminar el diseño deberá aparecerte una ventana similar a esta:

Image

A continuación crearemos las variables miembros para los controles creados de la siguiente forma:

        Control

Categoría

Tipo

Nombre Variable

IDC_MOVILIDAD

IDC_REFRIGERIO

Value

Value

BOOL

BOOL

m_Movilidad

m_Refrigerio

IDC_HORASADICIONALES

IDC_HORASHABITUALES

IDC_INGENIERO

Value

Value

Value

int

int

int

m_HorasAdicionales

m_HorasHabituales

m_Categoria

IDC_NOMBRES

IDC_RESULTADOS

Value

Value

CString

CString

m_Nombres

m_Resultados

Posteriormente te saldra una ventana muy similar a esta:

Image

Los valores minimo y maximo para la variable m_HorasHabituales sera de 0 a 45 y para la variable m_HorasAdicionales sera de 0 a 10.

Ahora agregue la funcion mienbro OnCalcular() para el boton de comando Calcular (IDC_CALCULAR):

Image

En la funcion creada agregue las siguientes lineas de codigo para los calculos:

Void Capp08Dlg::OnCalcular()

{

         UpdateData(true);

         double pagoHora = 0.00, adicional = 0.00;

         switch (m_Categoria)

         {

                   case 0: pagoHora = 10; break;

                   case 1: pagoHora = 7; break;

                   case 2: pagoHora = 5;

}

adicional = (pagoHora * 1.5) * m_HorasAdicionales;

double descuento1 = 0.00, descuento2 = 0.00;

char cad[15];

m_Resultados = “Boleta de pago del servidor: ” + m_Nombres + “\n”;

itoa(m_HorasHabituales,cad,10);

m_Resultados = m_Resultados + “Horas Trabajadas: ” + cad + “\n”;

itoa(m_HorasAdicionales,cad,10);

m_Resultados = m_Resultados + “Horas Adicionales: ” + cad + “\n”;

double sueldoBruto = 0.00;

sueldoBruto = (m_HorasHabituales * pagoHora) + adicional;

gcvt(sueldoBruto, 6, cad);

m_Resultados = m_Resultados + “Sueldo Bruto  : ” + cad + “\n”;

double descuentoMovilidad = 0.00, descuentoRefrigerio = 0.00;

if ((m_Movilidad) ||(m_Refrigerio))

   {

      m_Resultados = m_Resultados + “Descuentos:  \n”;

if (m_Movilidad)

        {

descuentoMovilidad = 0.08 * sueldoBruto;

gcvt(descuentoMovilidad, 6, cad);

           m_Resultados = m_Resultados + “Movilidad: ”+ cad + “\n”;

        }

if (m_Refrigerio)

          {

descuentoRefrigerio = 0.04 * sueldoBruto;

gcvt(descuentoRefrigerio, 6, cad);

           m_Resultados = m_Resultados + “Refrigerio:  ”+ cad + “\n”;

          }

   }

double sueldoNeto = 0.00;

sueldoNeto = sueldoBruto – (descuentoMovilidad + descuentoRefrigerio);

gcvt(sueldoNeto, 6, cad);

  m_Resultados = m_Resultados + “Sueldo Neto :  ”+ cad + “\n”;  

UpdateData(false);

}

Ahora para hacer que la categoría predeterminada sea Ingeniero, modifique la función OnlnitDialog() de la clase CApp08Dlg de la siguiente manera:

BOOL CApp08Dlg::OnInitDialog()

{

    CDialog::OnInitDialog();

// when the apllication´s main windows is not dialog

// como la aplicaciones  no son ventanas de dialogos.

SetIcon(m_hIcon,TRUE);         // Set big icon

SetIcon(m_hIcon,FALSE);        // Set small icon

GetDlgItem(IDC_NOMBRES)->SetFocus();

    m_Categoria = 0;

UpdateData(false);

return false;

}

Para finalizar presionar las teclas Ctrl + f5 para llevar acabo la ejecución de la aplicación e inmediatamente le aparecerá una ventana de la siguiente característica:

Image

Nota: en el caso de que no le llegue a ejecutar la aplicación determinada es debido a que ha tenido algún tipo de error a lo largo del procedimiento y los pasos a seguir, estos errores los puede encontrar en la parte inferior de la pantalla en donde el mis programa les mostrara la ubicación, en el caso de que los errores sean de una cantidad considerable se recomienda volver a comenzar desde el inicio llevando paso a paso el procedimiento para que no los vuelvan a cometer.

Mensaje: felicitaciones para aquellos que pudieron culminar este tutorial y siguieron practicando con otros problemas y para aquellos que no han podido resolverlos no se rindan ustedes pueden! recuerden que hay una fuerza motriz más poderosa que el vapor, la electricidad  y la energía:            la voluntad.

                                                                                              Gracias.