Programacion en c++

download Programacion en c++

If you can't read please download the document

Transcript of Programacion en c++

  • PROGRAMACIN

    End

    E. EMMANUEL COAQUIRA M.

    ALGORITMO Y CODIFICACIN

  • Algoritmos y su codificacin en C++

    1 E. EMMANUEL COAQUIRA M.

    Dedico este libro a mis padres (Mara y

    Joaqun) a mis queridos hermanos (Jhoselin y

    Fernando) y a la persona que cambio mi mundo

    (Yesica Y.C.L) mi Ys!.

  • Algoritmos y su codificacin en C++

    2 E. EMMANUEL COAQUIRA M.

    INTRODUCCIN Hola mi nombre es Edgar y los voy a conducir en la introduccin a la programacin en el lenguaje C++. C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Desde ya auguro un gran inters en este libro, que ser, sin duda alguna, material obligado de consulta y de til ejercicio.

  • Algoritmos y su codificacin en C++

    3 E. EMMANUEL COAQUIRA M.

    INDICE PROGRAMACION ESTRUCTURADA EN C++ MARCO CONCEPTUAL -.-.-.-(4) I. PROCESOS SECUENCIALES -.-.-.-(6) 1.1 Calculando una funcin. 1.2 Inters Ganado. 1.3 Representar una hora en: Hrs, min, seg. 1.4 Calculando varias funciones. 1.5 Encontrar la distancia y velocidad final de un automvil.

    II. PROCESO CONDICIONAL SIMPLE (if) -.-.-.-(12)

    2.1 Pago bruto de un obrero si trabaja horas extras. 2.2 Costo de una llamada telefnica. 2.3 Hallando la ecuacin = ( 3)/(2 25). 2.4 Rendimiento de un alumno teniendo su promedio. 2.5 Pago de acuerdo al consumo en un encuentro gastronmico.

    III. PROCESOS CONDICIONAL MULTIPLE (switch) -.-.-.-(19)

    3.1 Cuantos das tiene un mes. 3.2 Importe a pagar por la cantidad de diskettes. 3.3 La fecha es correcta? 3.4 Importe a pagar en un instituto. 3.5 Descuento de una U. Privada segn la profesin del tutor.

    IV. PROCESOS REPETITIVOS (while) -.-.-.-(27)

    4.1 El cociente y residuo por restas sucesivas. 4.2 Divisores comunes de dos nmeros.

    4.3 La suma de N primeros =1

    2+

    1

    4+

    1

    6+ .

    4.4 Lea un nmero e invierta sus cifras. 4.5 Halle si un nmero es cubo perfecto.

    V. PROCESOS REPETITIVOS (do-while) -.-.-.-(34) 5.1 Personas que ingresan a un museo de arte. 5.2 Mxima rea que de un terreno. 5.3 Los mltiplos de 4 > 8, 32. 5.4 Clculo del valor de . 5.5 El costo menor de la institucin que dictan cursos.

    VI. PROCESOS REPETITIVOS (for) -.-.-.-(41)

    6.1 Suma, cuadrados y cubos de los N primeros nmeros.

    6.2 Encontrar la suma =1

    1++

    1

    1+2+. . +

    1

    1+.

    6.3 Velocidad promedio de un auto. 6.4 Artculos que podemos comprar con todo nuestro dinero. 6.5 Numero de 3 dgitos que aumenta en 297 al invertirlo.

    VII. ARREGLOS Y MATRICES -.-.-.-(47) VIII. FUNCIONES PROPIAS -.-.-.-(55) IX. LIBRERIAS PROPIAS -.-.-.-(62) X. DIAGRAMA DE FLUJO -.-.-.-(68)

  • Algoritmos y su codificacin en C++

    4 E. EMMANUEL COAQUIRA M.

    PROGRACIN EN C++ 1 Tiene sus inicios por los aos 70 y nace como una necesidad de establecer reglas en la programacin. Reglas bsicas:

    1. Todo programa debe definir y establecer 3 partes: entrada, proceso, salida.

    2. Todo proceso es solucionable con las siguientes estructuras de programacin: secuencial, condicional, repetitivo.

    3. Cualquier estructura de programacin solamente debe tener una entrada y una salida.

    4. Todo programa puede separarse en partes o mdulos (procesos) cada vez ms pequeos y fciles de entender y cada mdulo puede acceder a los datos globales del programa.

    ALGORITMO Es el conjunto ordenado de pasos u operaciones que permiten hallar la solucin de un problema. DIAGRAMA DE FLUJO

    OPERADORES LGICOS

    1 http://mySpace91.ucoz.com

  • Algoritmos y su codificacin en C++

    5 E. EMMANUEL COAQUIRA M.

    Ms operadores ++ Incrementa una unidad -- Disminuye una unidad += Incrementa el valor que est a la derecha del igual -= Disminuye el valor que est a la derecha del igual *=, /=, %= Multiplica, Divide, Residuo de dividir por el valor que

    este a la derecha del igual. Para comentarios /*Esto es un comentario en varias lneas*/ //Aqu tu comentario (para solo una lnea) Para borrar pantalla clrscr() Salto de lnea. cout

  • Algoritmos y su codificacin en C++

    6 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    7 E. EMMANUEL COAQUIRA M.

    PROCESOS SECUENCIALES Se llaman as porque cuando se ejecutan sus rdenes y tareas, estas se realizan en secuencia: una tras otra, no dependiendo de alguna condicin que haga variar su secuencia. Una orden o tarea puede ser un ingreso de datos, el clculo de alguna frmula, la impresin de algn resultado. Ejm.

    Inicio Ingresar datos Calcular frmulas Imprimir resultados

    Fin Problema CPP01-01 Ingresar el valor de la variable independiente y calcular () = 2 + 4 DATOS D. Entrada: variable independiente (t) D. Salida: variable dependiente (f(t))

    CODIFICACIN C++ /*........................ PROGRAMA CPP01.01.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() //funcion principal void main() { //Declaracion de variables float t,ft; //Ingreso de datos clrscr(); coutt; //Calcular Funcion ft=t*t+4; //Escribir Resultado cout

  • Algoritmos y su codificacin en C++

    8 E. EMMANUEL COAQUIRA M.

    Problema CPP01-02 Calcular el inters generado por un capital depositado durante cierta cantidad de periodos a una tasa de inters determinada y expresada en porcentaje. Aplicar las siguientes frmulas.

    = (1 +

    100)

    (*)

    = (**) donde, Tasa es el porcentaje de intereses por periodo. Un periodo puede ser un da, un mes, un ao, etc. DATOS D. Entrada: Capital, Tasa de Inters (Tasa), Nmero de periodos (NumPer) D. Salida: Inters ganado (Interes)

    CODIFICACIN C++ /*........................ PROGRAMA CPP01.02.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() #include //Para pow() //funcion principal void main() { //Declaracion de variables float Capital,Tasa,Monto,Interes; int NumPer; //Ingresar datos clrscr(); coutCapital; coutTasa; coutNumPer; //Calcular Monto de acuerdo a la formula Monto=Capital*pow((1+Tasa/100),NumPer); //Calcular valor de los intereses Interes=Monto-Capital; //Escribir resultado cout

  • Algoritmos y su codificacin en C++

    9 E. EMMANUEL COAQUIRA M.

    Problema CPP01-03 Convertir un nmero real, que representa horas, a su equivalente en horas, minutos y segundos. DATOS D. Entrada: Un nmero real (NumReal) D. Salida: Horas (Hor), Minutos (Min), Segundos (Seg) Problema CPP01-04 Supongamos que X,Y,Z son las siguientes funciones: = 4 8 + 4, = () + cos (2), = 3+5 Escribir un programa que lea t e imprima x,y,z. DATOS D. Entrada: t D. Salida: x,y,z

    CODIFICACIN C++ /*........................ PROGRAMA CPP01.03.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin, cout #include //Para clrscr(), getch() //funcion principal void main() { //Declaracion de variables float NumReal; int Hor,Min,Seg; //Ingreso de datos clrscr(); coutNumReal; //Conversion a unidades pedidas Hor=int(NumReal); NumReal=(NumReal-Hor)*60; Min=int(NumReal); Seg=(NumReal-Min)*60; //Escribir resultados cout

  • Algoritmos y su codificacin en C++

    10 E. EMMANUEL COAQUIRA M.

    Problema CPP01-05 Supongamos que un automvil parte del reposo y tiene una aceleracin constante a, por t segundos. La velocidad final v y la distancia d, recorrida por el automvil, son dados por las formulas:

    =1

    22 =

    DATOS D. Entrada: tiempo (t), aceleracin (a) D. Salida: distancia (d), velocidad (v)

    CODIFICACIN C++ /*........................ PROGRAMA CPP01.04.CPP Procesos Secuenciales ........................*/ //Inclusion de librerias #include //Para cin,cout #include //Para clrscr(), getch() #include //Para pow() //funcion principal void main() { //Declaracion de variables float t,x; double z,y; //Ingreso de datos clrscr(); //El "\n"para salto de linea coutt; //Calcular funciones x=pow(t,3)-8*t+4; y=sin(t)+cos(2*t); z=pow(2.7183,3*t+5); //Escribir Resultados cout

  • Algoritmos y su codificacin en C++

    11 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Determinar el valor de la HIPOTENUSA de un tringulo rectngulo aplicando el teorema de Pitgoras, el permetro y el rea que representa conociendo solamente el valor de sus catetos.

    2. De acuerdo a un principio aritmtico, un nmero es mltiplo de 5 si termina en 0 o en 5. Aplicando este principio determinar si un nmero entero es mltiplo de 5.

    3. Muestre el algoritmo lea 2 valores a,b; y los intercambie. Por ejemplo si a=2 y b=5 el algoritmo debe hacer que a=5 y b=2.

    4. Determinar la suma de los N primeros nmeros enteros de acuerdo a la siguiente formula:

    = ( + 1)

    2

    5. Calcule el volumen de un cilindro recto conociendo su radio y su

    altura. 6. Calcule la media aritmtica de los n primeros nmeros enteros

    positivos. 7. Calcule la distancia entre 2 puntos de coordenadas conocidas. 8. Calcule la longitud de una circunferencia de radio conocido. 9. Cul es el rea total de un paraleleppedo. 10. En una reunin asistieron n personas, Cuntos apretones de mano

    hubieron?

  • Algoritmos y su codificacin en C++

    12 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    13 E. EMMANUEL COAQUIRA M.

    PROCESOS CONDICIN SIMPLE (if-else) Se llaman as porque para ejecutar ciertas rdenes y tareas dependen de una condicin cuyo resultado puede ser verdadero o puede ser falso. Toda condicin implica una comparacin. Ejm.

    Inicio Ingresar nota SI(nota>10)

    Imprimir APROBADO SINO

    Imprimir DESAPROBADO FIN del SI

    Fin

    La condicin, puede ser cualquiera de los siguientes elementos: variable, expresin, Funcin; sin embargo, el valor que representa solamente podr ser verdadero o falso. En C++ el calor 0 significa Falso y un valor diferente de 0 significa Verdadero. Accin V, Accin F: conjunto de sentencias. Si el nmero es sentencias es mayor que uno, se encierra en llaves. C++

    if (CONDICIN) if (CONDICIN) { { ACCIONES; ACCIN V; } } else

    { ACCIN F }

    CONDICIN

    ACCIONES

    CONDICIN

    ACCIN FACCIN V

    a) b)

    a) b)

  • Algoritmos y su codificacin en C++

    14 E. EMMANUEL COAQUIRA M.

    Problema CPP02-01 Ingresar el cdigo de un trabajador, el nmero de horas que trabaja a la semana; y la tasa o pago por hora de trabajo. Si el obrero trabaja ms de 40 horas por cada hora extra se le pagar hora y media. Escribir como salida la identidad, la taza por hora y el pago bruto. DATOS D. Entrada: cdigo (id), tasa por hora (tasa), nmero de hora a la semana (numh). D. Salida: id, tasa, pago bruto (pagof)

    Si 30: = (*) Si Numh 50: = 40 ( 40) 1.5 (**)

    Problema CPP02-02 Una llamada telefnica en cualquier telfono pblico cuesta S/.0.5 por los primeros 3 minutos o menos. Cada minuto adicional es un paso de contador y cuesta S/.0.1. Calcule el monto de una llamada cualquiera. DATOS D. Entrada: Duracin de llamada (duracin). D. Salida: Costo de la llamada (costo).

    CODIFICACIN C++ /*........................... PROGRAMA CPP02.01.CPP Procesos Condicin Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int id,numh; float tasa, pagof; //Ingreso de datos clrscr(); coutid; couttasa; coutnumh; //Calculando el pago final if(numh

  • Algoritmos y su codificacin en C++

    15 E. EMMANUEL COAQUIRA M.

    Problema CPP02-03 Conociendo x, encuentre el valor numrico de la siguiente expresin.

    = 3

    2 25

    DATOS D. Entrada: x D. Salida: y

    CODIFICACIN C++ /*........................... PROGRAMA CPP02.02.CPP Procesos Condicin Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int duracion; float costo; //Ingreso de datos clrscr(); coutduracion; //Calculando el costo de llamada if(duracion

  • Algoritmos y su codificacin en C++

    16 E. EMMANUEL COAQUIRA M.

    Problema CPP02-04 El rendimiento de un alumno se califica segn lo siguiente:

    Bueno si su promedio est entre 16 y 20. Regular si su promedio est entre 11 y 15. Deficiente si su promedio est entre 6 y 10. Psimo si su promedio est entre 0 y 5.

    Escriba un algoritmo que lea el promedio de un alumno y diga cul es su rendimiento. DATOS D. Entrada: promedio (prom) D. Salida: Rendimiento (bueno, regular, deficiente, psimo) Problema CPP02-05 Si el ingreso del encuentro gastronmico es de 3 soles y de acuerdo al consumo correspondiente un descuento respecto a la tabla 1. Determinar, el pago final del comensal, el descuento es al consumo.

    CODIFICACIN C++ /*........................... PROGRAMA CPP02.04.CPP Procesos Condicin Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int prom; //Ingreso de datos clrscr(); coutprom; //Escribiendo el rendimiento del alumno if(prom20) cout

  • Algoritmos y su codificacin en C++

    17 E. EMMANUEL COAQUIRA M.

    Tabla 1: DATOS

    D. Entrada: Consumo (Cons) D. Salida: Pago final a pagar (Pago)

    SUGERENCIA Para el ejercicio 4 tambin se le podra poner de esta manera:

    As se podra ahorrar un poco de espacio, y estructurar un poco mejor la codificacin.

    CODIFICACIN C++ /*........................... PROGRAMA CPP02.05.CPP Procesos Condicin Simple ...........................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float cons,desc,pago; //Ingreso de datos clrscr(); coutcons; //Calcular el pago final if(cons>=200) desc=cons*0.15; else { if(cons>=100) desc=cons*0.1; else if(cons>=50) desc=cons*0.05; else desc=cons*0.01; } pago=3+cons-desc; //Escribiendo los resultados cout

  • Algoritmos y su codificacin en C++

    18 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Encuentre el mayor de 3 nmeros ingresados por el teclado. 2. Determinar las races de una ecuacin de segundo grado. Tener en

    cuenta que las races pueden ser imaginarias. 3. Diga si un nmero es par o impar. 4. Si dos nmeros son positivos calcule su producto, en caso

    contrario calcule la suma. 5. Muestre un algoritmo que nos permita evaluar la funcin:

    () {2 + 1 , 0

    2 + 3 + 2 , 0 < < 3 + 1 , 3

    6. Un profesor desea implementar un algoritmo que le permita bonificar equitativamente a todos sus alumnos de acuerdo a la nota conseguida en un examen, de la siguiente forma:

    NOTA BONIFICACION < 5 3 < 10 2 >=10 pero < 15 1 >=15 pero

  • Algoritmos y su codificacin en C++

    19 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    20 E. EMMANUEL COAQUIRA M.

    1

    Selector

    Accion 1 Accion 2 Accion n Accion x

    2 n default...

    PROCESOS CONDICIN MULTIPLE (switch) Se llama as porque la ejecucin de sus rdenes y tareas dependen de la seleccin que se haga entre varias alternativas o casos. Ejm.

    Inicio Ingresar talla SELECCIONA (talla) de

    caso S: imprimir talla Small

    caso M: imprimir talla Medio

    caso L: imprimir talla Large

    caso X: imprimir talla Extra Large

    Fin de Seleccin Fin

    C++ Switch (selector) {

    Case alternativa 1: Accin 1: break; Case alternativa 2: Accin 2: break; Case alternativa 3: Accin 3: break; . . . Case alternativa n: Accin n: break; Default:

    Accin X; } El selector puede ser variable, expresin, funcin; sin embargo, el valor que representa debe ser escalar. Es decir: numrico entero, o carcter individual. De ninguna manera puede ser una cadena ni un float. Este selector ser evaluado en cada alternativa hasta que encuentre su lugar, si encuentra una alternativa, ejecuta la accin correspondiente y termina la estructura. Cada alternativa est conformada por un nico valor. Cada accin, al igual que en la estructura del tema anterior, puede estar conformada por una o varias sentencias (bloque se sentencias).El uso del default es opcional, sin embargo sirve para ejecutar algo (Accin X) cuando el selector no encuentra su lugar. Encontrado un CASE el Break, es el que da como terminado el SWITCH.

  • Algoritmos y su codificacin en C++

    21 E. EMMANUEL COAQUIRA M.

    Problema CPP03-01 Lea un mes y un ao y determine cuntos das tiene ese mes. Datos D. Entrada: mes y ao. D. Salida: das Tener en cuenta si un ao es bisiesto. Problema CPP03-02 En una tienda de accesorios para computadores, el precio de venta unitario de los diskettes es el mismo para cualquier marca, sin embargo el descuento vara de acuerdo a la marca y se establece en la siguiente tabla. Determinar el importe a pagar por la cantidad de diskettes comprados de una sola marca, considerando que no se paga impuestos. Mostrar importe bruto, descuento e importe a pagar. DATOS D. Entrada: marca, precio, cantidad D. Salida: importe bruto (impbruto), descuento (dscto), importe a pagar (importe)

    CODIFICACIN C++

    /*............................ PROGRAMA CPP03.01.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int m,a,dias; //Ingreso de datos clrscr(); coutm; couta; //Determinar estacion switch(m) { case 1: case 3:case 5:case 7:case 8:case 10: case 12: dias=31;break; case 4:case 6:case 9:case 11: dias=30;break; case 2: if(!(a%4)&&(a%100)||(a%400)) dias=29; else dias=28; break; default: cout

  • Algoritmos y su codificacin en C++

    22 E. EMMANUEL COAQUIRA M.

    Asd Problema CPP03-03 Lea tres nmeros que representen el da, el mes y el ao, y diga si forman una fecha correcta. Considere aos bisiestos. DATOS D. Entrada: da (d), mes (m), ao (a) D. Salida: fecha correcta, fecha incorrecta.

    CODIFICACIN C++

    /*............................ PROGRAMA CPP03.02.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int marca,cantidad; float precio,impbruto,dscto,importe; //Escribir marcas a escoger clrscr(); textcolor(4); gotoxy(30,3);cprintf("MARCAS de DISKETTES"); gotoxy(29,4);cout

  • Algoritmos y su codificacin en C++

    23 E. EMMANUEL COAQUIRA M.

    Problema CPP03-04 Determinar el importe a pagar por un alumno de un instituto cuya cuota tiene un porcentaje de descuento que se establece en la siguiente tabla y est en funcin al colegio de procedencia del alumno; asimismo los importes estn exonerados de impuestos. DATOS D. Entrada: colegio,institut(op) Cuota. D. Salida: Importe a pagar (importe)

    CODIFICACIN C++

    /*............................ PROGRAMA CPP03.03.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int d,m,a,maxdia; //Ingreso de datos clrscr(); coutd; coutm; couta; //Determinar fecha correcta switch(m) { case 1:case 3:case 5:case 7:case 8: case 10:case 12: maxdia=31;break; case 4:case 6:case 9: case 11: maxdia=30;break; case 2:if(!(a%4)&&(a%100)||(a%400)) maxdia=29;break; else maxdia=28;break; default: cout

  • Algoritmos y su codificacin en C++

    24 E. EMMANUEL COAQUIRA M.

    Problema CPP03-05 Una universidad privada tiene una poltica de descuento en porcentajes sobre el pago de pensiones de enseanza, que se basa en la profesin del tutor (polica, profesor de colegio, docente universitario, trabajador no docente y otros) y, el rendimiento del alumno (bueno, regular, deficiente), tal como se muestra en el cuadro siguiente:

    Tabla de descuento (en %) DATOS D. Entrada: ocupacin (ocup), rendimiento (rend) D. Salida: descuento (d)

    gotoxy(30,3);cprintf("COLEGIO DE PROCEDENCIA"); gotoxy(29,4);cout

  • Algoritmos y su codificacin en C++

    25 E. EMMANUEL COAQUIRA M.

    CODIFICACIN C++

    /*............................ PROGRAMA CPP03.05.CPP Procesos Condicion multiple .............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables char ocup,rend; float d; //Escribir ocupacion clrscr(); textcolor(3); gotoxy(35,3);cprintf("OCUPACION"); gotoxy(34,4);cout

  • Algoritmos y su codificacin en C++

    26 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Muestre las opciones de un men, seleccione una opcin e imprima el mensaje apropiado indicando la opcin seleccionada.

    2. Construya una calculadora que lea 2 nmeros y un operador, y efectu la operacin dada. La calculadora ser capaz de realizar las siguientes operaciones bsicas (suma, resta, multiplicacin, divisin).

    3. Lea un da y un mes cualesquiera y determine a que estacin pertenece. Considere que primavera inicia el 23 de setiembre, verano inicia el 21 de diciembre, otoo empieza el 21 de marzo e invierno el 22 de junio.

    4. Los signos del zodiaco son 12: Aries (marzo 21 abril 20), tauro (abril 21 mayo 20), gminis (mayo 21 junio 21), cncer (junio 22 julio 22), leo (julio 23 agosto 22), virgo (agosto 23 setiembre 22), libra (setiembre 23 octubre 22), escorpio (octubre 23 noviembre 21), sagitario (noviembre 22 diciembre 21), capricornio (diciembre 22 - enero 20), acuario (enero 21 febrero 19) y piscis (febrero 20 marzo 20). Escriba un programa que lea el da y mes de su nacimiento y determine a que signo pertenece.

    5. Dada una fecha cuantos das faltan para que termine el ao? 6. Todo el mundo sabe cuntos aos tiene, pero Podra contestar a

    la pregunta cuantos das tiene? 7. Una tienda de ropa ha establecido los porcentajes de descuento,

    que se indican a continuacin, de acuerdo a ciertas caractersticas del comprador: nacionalidad (1,2) y del producto que compra: sexo (H,M), talla (Nio, Joven, Adulto). Se sabe que una persona puede comprar varios productos por lo que se desea mostrar como resultados lo siguiente: nombre del comprador, cantidad de productos comprados, importe comprado, importe descontado y el importe a pagar; para lo cual se deben ingresar los datos que sean necesarios. El proceso para la compra de una persona termine cuando al ingresar el nombre del comprador se presiona ENTER.

    8. Dada una fecha obtenga el nmero de da dentro de ese ao. Por ejemplo el 26/10/2000 es el da 300 del ao 2000.

    9. Un alumno es calificado con a, b, c o d. Ser bueno si obtuvo un a, regular si obtuvo un b, malo si obtuvo un c, y psimo si obtuvo un d. Lea un calificativo y escriba que tipo de alumno es.

    10. Obtenga el nmero de das transcurridos entre dos fechas.

  • Algoritmos y su codificacin en C++

    27 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    28 E. EMMANUEL COAQUIRA M.

    PROCESOS REPETITIVOS (MIENTRAS O while) Se llaman as porque la ejecucin de sus rdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condicin para que contine o para que termine. Ejm.

    Inicio Contador=1 MIENTRAS (contador

  • Algoritmos y su codificacin en C++

    29 E. EMMANUEL COAQUIRA M.

    Problema CPP04-01 Obtenga el cociente y el residuo de una divisin calculando la cantidad de veces que un nmero est contenido en otro, mediante restas sucesivas. Por ejemplo, si el dividiendo es a=5236 y el divisor b=1247, entonces tendremos:

    5236 - 1247 = 3989 3989 - 1247 = 2742 2742 - 1247 = 1495 1495 1247 = 248 ya no seguimos restando pues 248 es menor que 1247: El cociente estar dado por el nmero de restas (4) y el residuo por el ltimo nmero obtenido (248). DATOS D. Entrada: dividendo (a), divisor (b) D. Salida: cociente (coc), Residuo

    CODIFICACIN C++

    /*.............................. PROGRAMA CPP04.01.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int num,den,coc; float a,b; //Ingresando datos clrscr(); couta; coutb; //calculando coc=0; while(a>b) { a=a-b; coc=coc+1; } //Escribiendo los resultados cout

  • Algoritmos y su codificacin en C++

    30 E. EMMANUEL COAQUIRA M.

    Problema CPP04-02 Calcule los divisores comunes de dos nmeros. Por ejemplo los divisores comunes de 6 y 18 son 1, 2, 3 y 6. DATOS D. Entrada: nmeros (a,b) D. Salida: divisores Problema CPP04-03 Hallar la suma de los N primeros trminos de la serie.

    =1

    2+

    1

    4+

    1

    6+ trminos.

    DATOS D. Entrada: cantidad de trminos (n) D. Salida: suma de trminos (S)

    CODIFICACIN C++

    /*.............................. PROGRAMA CPP04.02.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int i,a,b; //Ingresando datos clrscr(); cout

  • Algoritmos y su codificacin en C++

    31 E. EMMANUEL COAQUIRA M.

    Problema CPP04-04 Lea un nmero y forme otro nmero con las cifras en orden inverso. As si el nmero es 12345 el nuevo nmero ser 54321. DATOS D. Entrada: numero (n) D. Salida: inverso (inv)

    CODIFICACIN C++

    /*.............................. PROGRAMA CPP04.03.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int cont,n; float s,par; //Ingresar dato clrscr(); coutn; //calculando la suma cont=1;s=0;par=2; while(cont

  • Algoritmos y su codificacin en C++

    32 E. EMMANUEL COAQUIRA M.

    Problema CPP04-05 Los nmeros Amstrong o cubos perfectos, son aquellos que sumados los cubos de sus dgitos nos dan el mismo nmero. Por ejemplo 153 es un cubo perfecto pues 13 + 53 + 33 = 153. Lea un nmero y diga si es o no un cubo perfecto. DATOS D. Entrada: nmero (n) D. Salida: Es o no es un nmero Amstrong

    CODIFICACIN C++

    /*.............................. PROGRAMA CPP04.05.CPP Procesos Repetitivos: Mientras ..............................*/ //Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables int n,temp,sc; //Ingresar datos clrscr(); coutn; //calculando los cubos perfectos sc=0; temp=n; while(temp>0) { sc=sc+pow(temp%10,3); temp=temp/10; } //Inmprimiendo resultados if(n==sc) cout

  • Algoritmos y su codificacin en C++

    33 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. La secuencia de Fibonacci, es muy conocida en los crculos matemticos y tiene la particularidad que cada nmero es igual a la sumas de los 2 anteriores trminos. La serie de Fibonacci comienza con los nmeros 0 y 1, produciendo la siguiente secuencia: 0, 1, 1, 2, 3, 5, 8, 13, , etc. Muestre todos los nmeros de Fibonacci que sean menores que un nmero dado, adems indicando la suma de los mismos.

    2. Escriba un algoritmo que diga si un nmero es primo. 3. Escriba un programa que permita reducir una fraccin a su mnima

    expresin. Por ejemplo 28

    64=

    7

    16.

    4. Determinar la cantidad de dgitos que tiene un nmero entero y adems mostrar la suma delos dgitos pares impares. Considerar cero (0) como dgito par.

    5. El mximo comn divisor (mcd) de un conjunto de nmeros es el mximo nmero; que divide exactamente a todos ellos. Construya un programa que encuentre el MCD de dos nmeros.

    6. El factorial de un nmero se define como el producto de todos los nmeros consecutivos desde la unidad hasta el nmero y se denota por el smbolo de (!). Por ejemplo 4!=4x3x2x1, teniendo en cuenta esto, lea un nmero y encuentre su factorial.

    7. Un nmero es capica o polndromo, si el nmero es tal que invirtiendo sus cifras da el mismo nmero. Asi 12321 es capica porque invirtiendo sus cifras 12321. Escriba un algoritmo que diga si un nmero ingresado es capica.

    8. Se sabe que 2 = 1 + 3 + 5 + 7 + 2 1. Se pide leer un nmero y calcular su cuadrado haciendo uso de esta relacin.

    9. El mnimo comn mltiplo (mcm) de 2 o ms nmeros, es el menor nmero que lo contiene a todos ellos una cantidad exacta de veces. Construya un algoritmo para calcular el mcm de 2 nmeros ledos por teclado.

    10. Mostrar los N primeros trminos de la siguiente serie, indicando adems la suma de los mismos.

    7,9,12,16,21,

  • Algoritmos y su codificacin en C++

    34 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    35 E. EMMANUEL COAQUIRA M.

    PROCESOS REPETITIVOS (HACER-MIENTRAS O do-while) Se llaman as porque la ejecucin de sus rdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condicin para que contine o para que termine. Es un proceso complementario al anterior. Ejm.

    Inicio Contador=1 HACER

    Ingresar nota Acumular nota Incrementar contador

    MIENTRAS (contador

  • Algoritmos y su codificacin en C++

    36 E. EMMANUEL COAQUIRA M.

    Problema CPP05-01 En el museo de arte un estudiante desea determinar para cierto da, el promedio de edad as como el nmero de visitantes por sexo para lo cual anota, desde que se abre las puertas hasta el cierre de las mismas, el sexo (H,M) y la edad de cada visitante. Al final del da dicho estudiante escriba cero como sexo para dar por terminado su proceso y mostrar los resultados requeridos. DATOS D. Entrada: sexo, edad D. Salida: Nmero de visitantes Hombres(contH) Nmero de visitantes Mujeres(contM) Promedio de edad para Hombres(sumedH/contH) Promedio de edad para Mujeres(sumedM/contM)

    CODIFICACIN C++

    /*...................................... PROGRAMA CPP05.01.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables unsigned int sumedH,sumedM; int contH,contM,edad; float prom; char sexo; //Inicializar elementos contH=contM=sumedH=sumedM=0; //Proceso Repetitivo clrscr(); do{ do{ cout>sexo; }while(sexo!='M'&&sexo!='H'&&sexo!='F'); if(sexo!='F') { coutedad; switch(sexo) { case 'H':sumedH=sumedH+edad; contH++;break; case 'M':sumedM=sumedM+edad; contM++;break; } } }while(sexo!='F'); //Mostrar resultados cout

  • Algoritmos y su codificacin en C++

    37 E. EMMANUEL COAQUIRA M.

    Problema CPP05-02 Cul es la mxima rea de terreno que se puede obtener si las longitudes de un terreno son x y (20-x)? DATOS D. Salida: rea mxima (areamax), Dimensiones Problema CPP05-03 Para n mltiplo de 4 y n mayor que 8 y menor igual que 32, escribir los enteros positivos desde el 1 al n de manera que a la salida sea 4 nmeros en una lnea. DATOS D. Entrada: n: mltiplo de 4 y mayor que 8 y menor igual que 32 D. Salida: i i+1 i+2 i+3

    CODIFICACIN C++

    /*...................................... PROGRAMA CPP05.02.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float x,xmax,area,areamax,inc; //Inicializar elementos x=areamax=0; inc=0.0001;//Incremento //Proceso Repetitivo clrscr(); do{ x=x+inc; area=x*(20-x); if(area>areamax) { areamax=area; xmax=x; } }while(x

  • Algoritmos y su codificacin en C++

    38 E. EMMANUEL COAQUIRA M.

    Problema CPP05-04

    Encuentre el valor de sabiendo que la suma de la serie 1 1

    3+

    1

    5

    1

    7+

    1

    9 es igual a /4.sugerencia considere los trminos cuyo valor

    absoluto sea mayor a 0.000001. DATOS D. Salida: valor de pi

    CODIFICACIN C++

    /*...................................... PROGRAMA CPP05.03.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int i,n; //Proceso Repetitivo do{ clrscr(); coutn; }while((n%4)!=0||n32); //Inicializar elementos i=0; //Mostrar Resultados cout

  • Algoritmos y su codificacin en C++

    39 E. EMMANUEL COAQUIRA M.

    Problema CPP05-05 Un estudiante ha registrado 10 instituciones que dictan un curso de computacin de su inters, a diferentes costos. Desea determinar el costo promedio del curso, el costo ms elevado, el costo ms bajo y el nombre de la institucin que ofrece el costo ms bajo. Se sabe adems que ningn costo llega a tener 4 cifras. DATOS D. Entrada: nombre de institucin (N), costo del curso (costo) D. Salida: costo promedio (cosprom) costo mayor (cosmay) costo menor (cosmen) nombre de quien tiene el costo menor (M)

    CODIFICACIN C++

    /*...................................... PROGRAMA CPP05.05.CPP Procesos Repetitivos: Hacer-Mientras ......................................*/ //Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables int cont; float costo,suma,cosprom,cosmay,cosmen; char N[30],M[30]; //Inicializar elementos cont=1;//contador de instituciones suma=0;//acumulador de costos cosmay=0;//supuesto falso del mayor costo cosmen=999;//supuesto falso del menor costo //Proceso Repetitivo do{ clrscr(); cout

  • Algoritmos y su codificacin en C++

    40 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Lea una serie de nmeros hasta ingresar el valor de cero. Luego indique cuantos nmeros positivos, negativos, pares e impares fueron ingresados.

    2. Hallar la raz cuadrada de un nmero por el mtodo de Newton. 3. A una fiesta ingresan personas de diferentes edades, no se

    permite el ingreso de menores de edad. Se pide hallar la edad menor, la mayor y el promedio de edades. El ingreso debe terminar cuando la edad ingresada sea cero.

    4. Mostrar los N primeros trminos de la siguiente serie, donde N debe estar entre 5 y 30.

    5,7,10,14,19, 5. Se tiene una lmina rectangular de largo y ancho conocidos a la

    que se recorta un cuadrado de lado x en cada esquina con el objeto de formar una caja. Cules son las dimensiones de esta caja, si se desea que el volumen sea el mximo posible?

    6. Lea un nmero positivo y prtalo en dos sumandos de forma que su producto tenga un valor mximo.

    7. En un cajero se muestra un men de opciones retiro, saldo, depsito y salir; un cliente realiza sucesivos retiros desde este cajero, si posee 1000 al inicio de las operaciones. Escriba un algoritmo que efectu dichas operaciones y que permita a un cliente retirar dinero mientras tenga fondos.

    8. Una vendedora de pan tiene n unidades de pan al comenzar el da. Si cada cliente le pide m panes, Cuntos clientes son atendidos completamente?Cuntos panes quedan para el ltimo cliente?

    9. En una universidad se pueden llevar hasta 22 crditos en un ciclo. Escriba un algoritmo que permita a un alumno matricularse, si pasarse del lmite de crditos permitido.

    10. Una ventana tiene forma de rectngulo culminado por un semicrculo. El permetro de la ventana es 6m. Cules son sus dimensiones si debe dejar pasar el mximo de luz?

  • Algoritmos y su codificacin en C++

    41 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    42 E. EMMANUEL COAQUIRA M.

    PROCESOS REPETITIVOS (PARA o for) Se llaman as porque la ejecucin de sus rdenes y tareas se realizan reiterativamente dependiendo del cumplimiento de una condicin para que contine o para que termine. Es un proceso complementario a los anteriores. Ejm.

    Inicio PARA (contador=1;contador

  • Algoritmos y su codificacin en C++

    43 E. EMMANUEL COAQUIRA M.

    Problema CPP06-01 Calcular la suma, suma de cuadrados y la suma de cubos de los N primeros nmeros naturales. DATOS D. Entrada: cantidad de nmeros naturales (numN) D. Salida: suma (s), suma cuadrados (sc), suma cubos (scu) Problema CPP06-02 Hallar la suma S:

    =1

    1 + +

    1

    1 + 2+ +

    1

    1 +

    DATOS D. Entrada: valor de x, cantidad de sumandos (n) D. Salida: suma (s)

    CODIFICACIN C++

    /*............................ PROGRAMA CPP06.01.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include #include //funcion principal void main() { //Declaracion de variables long s,sc,scu; int num,numN; //Ingresar cantidad de numeros naturales clrscr(); coutnumN; //Inicializar ACUMULADORES s=sc=scu=0; //Acumular Sumas for(num=1;num

  • Algoritmos y su codificacin en C++

    44 E. EMMANUEL COAQUIRA M.

    Problema CPP06-03 Un vehculo recorre n distancias en n tiempos diferentes Cul ser su velocidad promedio para toda la trayectoria? DATOS D. Entrada: numero de tramos (n) Distancia (d), tiempo (t) D. Salida: velocidad media (dt/tt)

    CODIFICACIN C++

    /*............................ PROGRAMA CPP06.02.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables float x,s; int i,n; //Ingresar variables clrscr(); coutx; coutn; //Inicializar ACUMULADORES s=0; //Acumular Sumas for(i=1;i

  • Algoritmos y su codificacin en C++

    45 E. EMMANUEL COAQUIRA M.

    Problema CPP06-04 Cuatro artculos cuestan 3, 7, 19 y 23 soles respectivamente. Cules son las posibles cantidades que podemos adquirir de cada artculo, si disponemos de 113 soles y deseamos gastarlo todo? DATOS D. Salida: cantidad de artculos Problema CPP06-05 Muestre todos los nmeros de 3 dgitos tales que si invertimos sus cifras el nmero original aumente en 297. DATOS D. Salida: nmeros (i)

    CODIFICACIN C++

    /*............................ PROGRAMA CPP06.04.CPP Procesos Repetitivos: Para ............................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int a,b,c,d; //calculando posibles cantidades for(a=0;a

  • Algoritmos y su codificacin en C++

    46 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Mostrar la tabla de multiplicar del 1 al 12 para cualquier nmero.

    2. Encuentre el promedio de n nmeros. 3. Mostrar los 20 primeros trminos de la siguiente serie,

    determinando adems la suma de ellos: 7, 10, 13, 16, 19

    4. Los nmeros enteros que satisfacen la ecuacin 2 + 2 = 2, se les conoce como ternas pitagricas. Encuentre todas las ternas pitagricas menores que n.

    5. Muestre todos los pares entre a y b, y diga cuantos son. 6. De cuantas maneras podemos tomar p elementos de un total de n

    elemento? ( ) 7. Imprima el nmero 1, una vez; el 2, dos veces; el 3, tres veces;

    y as sucesivamente hasta llegar a un nmero n ingresado. 8. Dada una fecha dd/mm/aaaa, imprima el calendario correspondiente

    a ese mes. 9. Determine la suma de los n primeros trminos de la serie:

    1

    2

    22+

    3

    32

    4

    42+

    5

    52

    10. Mostrar todos los divisores de un nmero. Si el nmero solo tiene por divisores al 1 y al propio nmero, mostrar el mensaje Nmero primo.

  • Algoritmos y su codificacin en C++

    47 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    48 E. EMMANUEL COAQUIRA M.

    ARREGLOS Y MATRICES Un ARREGLO es un conjunto de elementos dispuestos uno a continuacin de otro donde cada elemento conserva su propio espacio (cantidad de bytes). Adems el espacio de cada elemento es igual para todos y lo que se puede almacenar en cada uno de ellos si bien pueden ser de diferentes valor, el tipo de informacin (tipo de dato) es el mismo, ejem. si un elemento tiene un valor numrico, todos los elementos contendrn valores numricos y slo numricos. Para poder referirnos a un elemento del arreglo en particular es necesario utilizar un ndice que vendra a ser la numeracin consecutiva de cada espacio que ocupa un dato en el arreglo. Esta numeracin generalmente empieza en 1; sin embargo, est sujeto a la iniciativa del programador y los requerimientos del algoritmo que se emplee. Cuando un arreglo tiene un nica numeracin (un solo ndice) se le conoce como un arreglo UNIDIMENSIONAL, aunque algunos preferimos usar el nombre VECTOR. Ejemplos figurativos de algunos VECTORES ndice //Declaracin int A[7] ndice

    //Declaracin char B[10]

    En C++ for(indice=0;indice

  • Algoritmos y su codificacin en C++

    49 E. EMMANUEL COAQUIRA M.

    Debido a que los datos se conservan en los ARREGLOS y MATRICES, pueden ser accesados en cualquier momento y cuantas veces se los necesite, mientras dure la ejecucin del programa. Ejemplo figurativo de una MATRIZ de dos ndices (BIDIMENSIONAL), donde uno de ellos indica la ubicacin de 5 datos y el otro indica de 7 datos. El primer ndice se ve representado por las filas y el segundo por las columnas. ndice1 ndice2 //Declaracin int A[5][7]

    //5 filas y 7 columnas

    Tambin se dice que sta matriz es de 5 x 7, debido a los lmites de sus ndices. Obsrvese que las filas van en primer orden y las columnas en segundo orden. Esta matriz es capaz de conservar 35 datos (5*7) El acceso a los datos individuales de la matriz, A[1,3]=10 A[3,4]=12 A[4,1]=3 A[6,5]=mal! Excede el primer ndice En C++ for(indice1=0;indice1

  • Algoritmos y su codificacin en C++

    50 E. EMMANUEL COAQUIRA M.

    Tambin se dice que sta matriz es de 5 x 4 x 2, debido a los lmites de sus ndices. La definicin de la matriz sera as: int A[5][4][2]. Observe que el tercer ndice pertenece al segundo ndice por lo que podramos decir, figurativamente, que cada fila tiene 4 columnas y cada columna tiene 2 columnas ms. Esta matriz es capaz de conservar 40 datos (5*4*2) El acceso a los datos individuales de la matriz sera: A[0,1,1]=8 A[1,3,1]=2 A[2,0,1]=19 A[4,2,0]=12 En C++ for(indice1=0;indice1

  • Algoritmos y su codificacin en C++

    51 E. EMMANUEL COAQUIRA M.

    Problema CPP07-01 Lea n nmeros, almacnelos en un array e imprmalos. DATOS D. Entrada: nmero de elementos del array (n) D. Salida: array (X[]) Problema CPP07-02 Ordene un conjunto de datos de menor a mayor por el mtodo de la burbuja. DATOS D. Entrada: nmero de elementos del array (n), Ingresando array (X[]) D. Salida: Salida del array ordenado (X[])

    CODIFICACIN C++

    /*....................... PROGRAMA CPP07.01.CPP Arreglos y Matrices .......................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int i,n; float X[50]; //Ingreso de datos clrscr();

    cout>n; //Ingreso del array for(i=0;i

  • Algoritmos y su codificacin en C++

    52 E. EMMANUEL COAQUIRA M.

    Problema CPP07-03 Ordene un conjunto de datos de menor a mayor por el mtodo de seleccin. DATOS D. Entrada: nmero de elementos del array (n), Ingresando array (X[]) D. Salida: Salida del array ordenado (X[]) Problema CPP07-04 Ordene un conjunto de datos de menor a mayor por el mtodo de la burbuja. DATOS D. Entrada: nmero de elementos del array (n), Ingresando array (X[]) D. Salida: Salida del array ordenado (X[])

    CODIFICACIN C++

    /*....................... PROGRAMA CPP07.03.CPP Arreglos y Matrices .......................*/ //Inclusion de librerias #include #include //funcion principal void main() { //Declaracion de variables int n,i,j,k; float temporal,X[50]; //Ingreso de datos clrscr(); cout>n; //Ingreso datos en array for(i=0;i

  • Algoritmos y su codificacin en C++

    53 E. EMMANUEL COAQUIRA M.

    Problema CPP07-05 Lea dos matrices A y B cuadradas y halle la suma de las matrices ingresadas. DATOS D. Entrada: matrices

    A[][] y B[][] D. Salida: suma C[][]=A[][]+B[][]

    //Mostrar array ordenado cout

  • Algoritmos y su codificacin en C++

    54 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS Para cada uno de los siguientes problemas, deber desarrollarse con su respectivo Diagrama de Flujo.

    1. Lea dos vectores A y B y halle la multiplicacin vectorial y escalar.

    2. Determine la cantidad de veces que aparece cada elemento de un array.

    3. Encontrar el mayor y menor valor en un arreglo de 20 nmeros determinando adems el ndice al que corresponden.

    4. Calcular la media, varianza y desviacin estndar de N valores, aplicando las siguientes formulas:

    () = ()/

    =1

    () = ( )/

    =1

    . () =

    5. Ingresar 2 nmeros e imprimir las cifras comunes que tengan considerando un mximo de 10 cifras por nmero.

    Ejm, sean los nmeros:

    19832322 y 87321231; cifras comunes: 1,2,3,8.

    6. Lea dos matrices A y B de nxn. Realizar el producto AxB. 7. Suma de los elementos que se encuentran bajo la diagonal

    principal de una matriz cuadrada. 8. Lea una matriz mxn, y arbitrariamente pueda cambiar cualquier

    elemento de sta. 9. Ingrese una matriz de nxn y luego halle su determinante. 10. Por el mtodo de Gauss Jordan, halle la solucin de un sistema

    de ecuaciones.

  • Algoritmos y su codificacin en C++

    55 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    56 E. EMMANUEL COAQUIRA M.

    FUNCIONES PROPIAS Al llegar a ste tema se asume que Ud. ya ha logrado un entrenamiento lgico adecuado, reconociendo y aplicando correctamente cada estructura de programacin de tal forma que planteado un problema no tenga dudas en utilizarlas convenientemente, construyendo el algoritmo que d solucin al problema. Ahora de lo que se trata es de darle un entorno, una forma, un ambiente, un lugar a cualquier algoritmo construido; al cual le llamaremos PROCESO o FUNCIN. Una funcin es un proceso que realiza una determinada tarea, tiene un nombre y es capaz de recibir datos y devolver resultados a travs de variables especiales que toman el nombre de parmetros e inclusive a travs de su propio nombre. Las funciones se declaran como prototipos antes de la funcin principal (void main()) y se desarrollan despus de la funcin principal. C++ Prototipo: Tipo de dato de la funcin nombre_de_funcion(lista de parmetros); Desarrollo Tipo de dato de la funcin nombre_de_funcion(lista de parmetros) { declaracin LOCALES; sentencias de la funcin; } Observaciones El tipo de dato de la funcin identifica el valor que la funcin retornar como resultado a travs de su nombre. El nombre_de_funcion es justamente el nombre que identifica a la funcin y debe empezar con una letra y luego puede combinarse con letras y/o nmeros y/o el subrayado. Si bien es cierto que el identificador puede estar compuesto de letras y/o dgitos, se recomienda que stos sean expresivos y respecto al proceso que identifican. La lista de parmetros son variables con su respectico tipo de dato separados por comas (,). Cada parmetro debe tener si propio tipo de dato as sean del mismo tipo dos o ms parmetros. Las declaraciones locales SOLAMENTE sern de utilidad para la funcin y nada ms que para ella. Fuera de la funcin dichos elementos NO SON CONOCIDOS. Las sentencias, determinan la tarea de la funcin.

  • Algoritmos y su codificacin en C++

    57 E. EMMANUEL COAQUIRA M.

    Ejemplos de Funciones cuyo tipo de dato es void Problema CPP08-01 Mediante el uso de funciones, muestre los primeros m mltiplos de n. i: sucesivos factores n: # cuyo mltiplos deseamos m: Cantidad de mltiplos En el bloque principal leemos n y m e invocamos a la funcin tablamult(), pasndoles estos valores como parmetros. Al terminar la ejecucin de tablamult(), el control regresa al bloque principal, para que ste termine el programa. Problema CPP08-02 Usando funciones encuentre los divisores comunes de dos nmeros. a: Primer # a inspeccionar b: Segundo # a inspeccionar i: Posibles divisores

    CODIFICACIN C++

    /*....................... PROGRAMA CPP08.01.CPP FUNCIONES PROPIAS .......................*/ //Inclusion de librerias #include #include //PROTOTIPO void tablamult(int,int); //Funcion principal void main () { //Declaracion de variables clrscr(); int n,m; coutn; coutm; tablamult(n,m); getch(); } //DESARROLLO DEL PROTOTIPO void tablamult(int n,int m) { int i; cout

  • Algoritmos y su codificacin en C++

    58 E. EMMANUEL COAQUIRA M.

    Problema CPP08-03 Usando funciones, ordene un conjunto de datos de menor a mayor por el mtodo de la burbuja. n: # de elementos del array X[]: Array unidimensional aux: Utilizada para el intercambio Comenzamos leyendo n e invocando a LeerArray(). Observe otra de las ventajas de definir funciones: las escribimos para una aplicacin, pero podemos usarlas en otras. Esto es una propiedad importante conocida como Reusabilidad del cdigo. Una vez ledos los elementos del array X[], invocamos a la funcin Burbuja(), en donde se procede al ordenamiento. Despus de ordenar X[] y de regreso al bloque principal, solo nos queda imprimir los elementos ordenados, labor que delegamos a la funcin MuestraArray().

    //Funcion principal void main () { //Declaracion de variables clrscr(); int n; float X[50]; coutn; LeerArray(n,X); //Hace ingreso datos en array Burbuja(n,X); //Ordena por burbuja cout

  • Algoritmos y su codificacin en C++

    59 E. EMMANUEL COAQUIRA M.

    Ejemplos de Funciones cuyo tipo de dato NO ES void Problema CPP08-04 El teorema del coseno es muy utilizado en geometra para calcular la longitud del tercer lado de un tringulo, cuando se conocen los otros 2 lados y el ngulo que forman. Siendo a el lado desconocido, b y c los lados conocidos, el ngulo formado por b y c; el teorema del coseno se enuncia como:

    = 2 + 2 2() Calcule el tercer lado de un tringulo aplicando este teorema. Use funciones.

    a: Lado desconocido b, c: Lados conocidos alfa: ngulo formado (b y c) Primero hay que leer los lados b y c y el ngulo alfa en radianes, esto debido a que la funcin cos(), provista por C++, solo calcula las funciones trigonomtricas de ngulos en radianes. A diferencia de los ejercicios anteriores est funcin retorna un valor (a), el cual se enva al bloque principal para su impresin.

    Problema CPP08-05 Usando funciones. Escriba un algoritmo que diga si un nmero es primo o no. n: Nmero a evaluar i: posible divisor

    CODIFICACIN C++

    /*....................... PROGRAMA CPP08.04.CPP FUNCIONES PROPIAS .......................*/ //Inclusion de librerias #include #include #include //PROTOTIPO float LadosAngulo(float,float,float); //Funcion principal void main () { //Declaracion de variables clrscr(); float a,b,c,alfa; cout

  • Algoritmos y su codificacin en C++

    60 E. EMMANUEL COAQUIRA M.

    OBS: Ntese que todas las ejecuciones se han hecho desde la funcin principal; sin embargo recuerde que tambin se pueden hacer desde el desarrollo de cualquier funcin. Ahora que ya sabe ejecutar una funcin, debe saber que las funciones propias que utiliza un programa puede estar en el mismo programa (como en los ejemplos anteriores) pero tambin puede estar fuera del programa conformado lo que se llama una LIBRERA. Entonces la pregunta es Qu funciones deben estar en el mismo programa y que funciones deben estar en una librera? La respuesta es que si las funciones van a poder ser utilizadas en otros programas lo ms lgico y recomendable es que estn en una librera, pero si las funciones son especficas y slo sirven a un programa pueden estar junto al programa. Cmo se construyen libreras propias?, lo veremos en el siguiente tema.

    CODIFICACIN C++

    /*....................... PROGRAMA CPP08.05.CPP FUNCIONES PROPIAS .......................*/ //Inclusion de librerias #include #include //PROTOTIPO int EsPrimo(int); //Funcion principal void main () { //Declaracion de variables clrscr(); float n; coutn; if(EsPrimo(n)) cout

  • Algoritmos y su codificacin en C++

    61 E. EMMANUEL COAQUIRA M.

    PROBLEMAS PROPUESTOS

    1. Escriba una funcin que calcule la raz cuadrada de un nmero por el mtodo de Newton.

    2. Mediante funciones cree una calculadora que lea 2 nmeros y un operador. La calculadora ser capaz de realizar las operaciones (suma, resta, multiplicacin, divisin, potencia).

    3. Mediante una funcin diga si un nmero es divisible por otro. 4. Usando funciones, calcule el rea sombreada formada por una

    circunferencia inscrita en un cuadrado de lado a. 5. Escriba una funcin que retorne el mayor elemento de un array. 6. Escriba una funcin que ordene un array por el mtodo de

    seleccin. 7. Escriba una funcin que ordene un array por el mtodo de

    insercin. 8. Escriba una funcin para calcular la media aritmtica, la

    geomtrica armnica, la cuadrtica ( = 2/ , la ponderada, la varianza y la desviacin estndar de los datos.

    9. Dada una temperatura t, convertirla a su equivalente en una diferente escala (C, F y K). Hacer uso de funciones.

    10. Construir una funcin que reciba una cadena de caracteres y los devuelva todas sus letras convertidas en minsculas.

  • Algoritmos y su codificacin en C++

    62 E. EMMANUEL COAQUIRA M.

  • Algoritmos y su codificacin en C++

    63 E. EMMANUEL COAQUIRA M.

    LIBRERIAS PROPIAS Una librera es considerada como una caja de herramientas que contiene diversos elementos de utilidad para cualquier programa o para un programa especfico o para otras libreras que lo necesitan. Dichos elementos pueden ser constantes, variables, funciones. CARACTERISTICAS PRONCIPALES

    - Una librera NUNCA SE EJECUTA sola directamente, sino que ms bien sus elementos son utilizados por los programas cuando estos son ejecutados.

    - Una librera en C++ se compone de 2 archivos, uno con extensin h y otro con extensin cpp. El archivo con extensin h se le conoce como archivo de cabecera y all se declaran todos los prototipos de las funciones que conformaran la librera. El archivo con extensin cpp contiene todos los desarrollos de las funciones.

    - Una librera simplifica la codificacin de los programas debido

    a que los elementos que van a ser utilizados NO SON CODIFICADOS en los programas.

    - La compilacin de una librera se puede realizar

    individualmente, compilando el archivo de extensin cpp (nunca el de extensin h) o tambin se puede realizar en automtico cuando se compile o ejecute el proyecto construido para la ejecucin del programa que la utiliza.

    - Una librera puede ser utilizada por otras libreras y/o por

    cualquier programa que necesite de por lo menos un elemento contenido en la librera. Sin embargo, cuando se utilizan libreras propias es obligatorio la construccin de un Proyect como lo veremos en los ejemplos.

    ESTRUCTURA GENERAL DE UN ARCHIVO DE CABECERA (extensin h)

    #if!defined _nombrearchivo_h_ #define _nombrearchivo_h_ //Declaraciones Globales //Constantes //Variables //Prototipos de Funciones propias #endif Este archivo debe grabarse con extensin h, por ejemplo: lib.h

  • Algoritmos y su codificacin en C++

    64 E. EMMANUEL COAQUIRA M.

    ESTRUCTURA GENERAL DE UN ARCHIVO DE DESARROLLO (extensin cpp) //Inclusin del archivo de cabecera #include lib.h //Desarrollo de los Prototipos declarados en el archivo de cabecera

    Este archivo debe grabarse con extensin cpp pero con el mismo nombre que se dio al archivo de cabecera, por ejemplo: lib.cpp

    Observaciones

    1. Todos los elementos contenidos en el archivo de cabecera estarn disponibles para los programas o libreras que lo necesiten.

    2. Solamente se debe compilar el archivo de extensin cpp, nunca el

    de extensin h.

    3. Normalmente nos referimos al archivo de cabecera cuando hablamos de librera ya que este archivo es el que se incluye (#include) en los programas.

    CREACIN DE LIBRERIAS PROPIAS Normalmente se dan los siguientes pasos:

    (1) Codificar la librera o archivo de cabecera con extensin h (2) Codificar el desarrollo de los prototipos en otro archivo con

    el mismo nombre que el archivo de cabecera pero con extensin cpp.

    (3) Compilar el cpp con ALT + F9 (4) Si hay errores

    Corregir Regresar al paso (2)

    (5) La librera esta lista para ser utilizada EJERCICIOS

    1. Construir una librera de nombre IngDatos que contenga los siguientes elementos:

    - Una funcin que permita escribir una cadena a partir de cualquier coordenada de la pantalla segn los parmetros recibidos.

    - Una funcin que permita devolver una cadena compuesta por un determinado nmero de caracteres del mismo valor dados como parmetros. Por ejemplo una cadena de 30 asteriscos, una cadena de 60 rayas, etc.

    - Una funcin que permita ingresar un dato alfanumrico a partir de cualquier coordenada de la pantalla, considerando una longitud mxima para el dato alfanumrico. La funcin debe devolver el dato ingresar.

    - Una funcin que permita ingresar un dato numrico entero con las mismas caractersticas a la funcin anterior.

    - Una funcin que permita ingresar un dato tipo float con las mismas caractersticas de la funcin anterior.

  • Algoritmos y su codificacin en C++

    65 E. EMMANUEL COAQUIRA M.

    NOTA.- Las instrucciones #if, #define, #endif se requieren para evitar que ste archivo de cabecera se repita su inclusin en un mismo programa. De esta manera estamos protegiendo la posibilidad de error de Mltiple inclusin Grabar archivo como ingdatos.h Abrir un nuevo archivo y codificar el desarrollo de dichas funciones, as:

    CODIFICACIN C++

    /*.................................. Archivos de cabecera: ingdatos.h ..................................*/ #if!defined _ingdatos_h_ #define _ingdatos_h_ //Prototipo de funciones void EscribeCad(int columna, int fila,const char * cadena); char * RepiteCad(int longitud, char caracter); unsigned char * IngresaCad(int columna,int fila, int longitud); int IngresaEnt(int columna,int fila, int longitud); float IngresaReal(int columna,int fila, int longitud); #endif //fin del archive cabecera

    CODIFICACIN C++

    /*..................................... Archivo de desarrollo: ingdatos.cpp .....................................*/ #iclude #include #include #include //para strlen() #include //para atoi() #include //para toupper() #include ingdatos.h //para reconocer a nuestros prototipos. //------------------------------------------------------------ Void EscribeCad(int columna,int fila, const char * cadena) { gotoxy(columna,fila); cprintf(%s,cadena); //para que respete atributo de color } //------------------------------------------------------------ char * RepiteCad(int longitud, char caracter) { char * cadena=new char[longitud+1]; memset(cadena,0,longitud+1); memset(cadena,carcter,longitud); return cadena; } //------------------------------------------------------------ unsigned char * IngresaCad(int columna,int fila, int longitud) { const char asterisco=*; const char nulo=0; const char enter=13; int posicion; unsigned char character; unsigned char * cadena=new char[longitude+1];

  • Algoritmos y su codificacin en C++

    66 E. EMMANUEL COAQUIRA M.

    Grabar es archivo como como ingdatos.cpp Compilarlo con ALT+F9 Nota: la inclusin de una librera del C++ se hace con los smbolos , por ejemplo #include ya que slo de esta manera el compilador buscara dicha librera en su ruta correspondiente. Sin embargo la inclusin de una librera propia se hace utilizando los smbolos , por ejemplo #include ingdatos.h ya que de esa manera el compilador buscara dicha librera en el directorio actual de trabajo o en el directorio indicando a travs de la opcin: options directorios.

    unsigned char * cadena=new char[longitude+1]; //inicializar contenido de cadena con asteriscos strcpy(cadena,RepiteCad(longitud,asterisco)); //inicializar posicin del carcter en la cadena posicion=0; do{ EscribeCad(columna,fila,cadena); gotoxy(columna+posicin,fila); carcter=getch(); if(carcter>=32) //carcter imprimible { cadena[posicin]=carcter; posicin++; } if(carcter==8) //backspace if(posicin>0) { cadena[posicin]=0; posicin--; cadena[posicin]=asterisco; } }while(carcter!=enter&&posicin!=longitud); if(posicin==longitud) EscribeCad(columna,fila,cadena); char * posast=strchr(cadena,asterisco); if(posast) //existe un asterisco en la cadena ingresada *posast=nulo; //corta la cadena return cadena; } //------------------------------------------------------------ int IngresaEnt(int columna,int fila,int longitud) { int Numero; char * cadena=new char[longitud+1]; strcpy(cadena,IngresaCad(columna,fila,longitud)); Numero=atoi()cadena; Retusn Numero; } //------------------------------------------------------------ float IngresaReal(int columna,int fila,int longitud) { float Numero; char * cadena=new char[longitude+1]; strcpy(cadena,IngresaCad(columna,fila,longitud)); Numero=atof(cadena); return Numero; } //------------------------------------------------------------

  • Algoritmos y su codificacin en C++

    67 E. EMMANUEL COAQUIRA M.

    2. Codificar un programa que utilice la librera IngDatos codificada en el ejercicio anterior.

    Grabar este programa como plngDatos.cpp Compilarlo con ALT+F9 NO EJECUTAR TODAVIA Nota: observe que las funciones utilizadas EscribeCad(), IngresaCad(), IngresaEnt() y IngresaReal() NO ESTAN EN EL PROGRAMA, sino que estn en la librera propia ingdatos.h e ingdatos.cpp Para poder ejecutar el programa, debemos construir un proyecto de la siguiente manera: Elegir opcin Project.

    Abrir presionando [ENTER] en open. Digitar un nombre, por ejemplo plngDatos.PRJ. En la parte inferior de la pantalla aparece una ventana con el nombre dado. Presionar la tecla [Insert]. Presionar la tecla [TAB]. Usando las flechas direccionales elegir el archivo plngdatos.cpp Usando las flechas direccionales elegir el archivo ingdatos.cpp Presionar tecla [ESC]. Construir el proyecto presionando [F9] Si no hubo errores se gener un archivo ejecutable de nombre plngdatos.exe, el cual ya puede ser ejecutado desde el mismo ambiente C++ presionando [CTRL] + [F9] o saliendo del ambiente C++ y ejecutndolo como cualquier programa ejecutable. Antes de abandonar el ambiente C++ debe cerrar el proyecto: Project-Close.

    Nota: para cualquier proyecto se debe elegir un archivo que contiene la funcin principal y todos los archivos cpp propios que son los desarrollos de las libreras propias utilizadas. El nombre del proyecto generalmente es el mismo nombre del archivo que contiene a la funcin principal, pero puede ser otro.

    CODIFICACIN C++

    /*........................ PROGRAMA pnlgDatos.cpp ........................*/ #include #include #include ingdatos.h //funcion principal void main() { char Nombre[81]; int Edad; float peso; clrscr(); //de la libreria conio.h EscribeCad(10,5,NOMBRE : ); //de la librera EscribeCad(10,6,EDAD : ); //ingdatos.h EscribeCad(10,7,PESO en Kg. : ); Strcpy(Nombre,IngresaCad(23,5,25)); Edad=IngresaEnt(23,6,2); Peso=IngresaReal(23,7,6); getch(); }

  • Algoritmos y su codificacin en C++

    68 E. EMMANUEL COAQUIRA M.

    DIAGRAMA DE FLUJO

    Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travs de sistemas de tratamiento de informacin. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado. Un diagrama de flujo u organigrama es una representacin diagramtica que ilustra la secuencia de las operaciones que se realizarn para conseguir la solucin de un problema. Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el cdigo frente a la computadora. Los diagramas de flujo facilitan la comunicacin entre los programadores y la gente del negocio. Estos diagramas de flujo desempean un papel vital en la programacin de un problema y facilitan la comprensin de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fcil escribir el programa en cualquier idioma de alto nivel. Vemos a menudo cmo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, est correcto decir que un diagrama de flujo es una necesidad para la documentacin mejor de un programa complejo. Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo, el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema. Su correcta construccin es sumamente importante porque, a partir del mismo se escribe un programa en algn Lenguaje de Programacin. Si el Diagrama de Flujo est completo y correcto, el paso del mismo a un Lenguaje de Programacin es relativamente simple y directo. Es importante resaltar que el Diagrama de Flujo muestra el sistema como una red de procesos funcionales conectados entre s por " Tuberas " y "Depsitos" de datos que permite describir el movimiento de los datos a travs del Sistema. Este describir : Lugares de Origen y Destino de los datos , Transformaciones a las que son sometidos los datos, Lugares en los que se almacenan los datos dentro del sistema , Los canales por donde circulan los datos. Adems de esto podemos decir que este es una representacin reticular de un Sistema, el cual lo contempla en trminos de sus componentes indicando el enlace entre los mismos.

  • Algoritmos y su codificacin en C++

    69 E. EMMANUEL COAQUIRA M.

    PARA EL LECTOR DEL AUTOR Quise hacerlo mejor, pero si no logras entenderlo. ---Grrrr--- (:@) Amigo lector; si t que estas al otro lado de este libro. He tratado de escribir algo motivador, algo como Que culpa tengo yo de que sea mejor que t?, mentira, no!, no era eso, lo nico que te voy a decir como un gran Fsico [Se creativo, piensa diferente y no seas mecnico]. Este libro est hecho para todas las personas que piensan diferente, que tengan preguntas, que no estn satisfechas con las respuestas, que no estn satisfechas de lo que saben, que quieran mejorarse y mejorar la educacin. Me hubiera gustado mucho que este libro fuese autodidacta, como siempre se sabe no hay mejor profesor que uno mismo. Espero que hayas disfrutado siguiendo esta publicacin y espera por el siguiente -.-Matlab, el fin de C++ o simplemente una remodelacin?-.-

    Para sus Dudas..?? Comentarios.. CyberBullyng.. Vistenos en http://mySpace91.ucoz.com El programa con el cual se trabaja es llamado Bc31 y lo puedes conseguir tambin en la ---web--- que se encuentra debajo. -.-he agregado pasos a seguir en la instalacin/ejecucin-.- He aqu un programa para que puedan correr los Diagramas de flujo. -.-En mi opinin personal, esto me parece de gran ayuda para corregir los procesos antes de aventurarnos a la codificacin-.- Programa DFD. ---web--- ---- http://myspace91.ucoz.com/load ---- He puesto todo mi empeo en realizar este libro, con agrado puedo decirles, que aunque estoy contento de haberlo concluido, no estoy totalmente satisfecho pues no es posible dejar impreso algunas cosas o ideas que tengo por decir. Si en caso, quieras hacer alguna correccin, o aadir alguna sugerencia puedes contactarme a: [email protected] O dejar tu comentario en la misma Web -.-la cual ya ha sido antes mencionada-.-

    Por qu no me haces tu amigo?. Creo que me lo merezco No?

  • Algoritmos y su codificacin en C++

    70 E. EMMANUEL COAQUIRA M.

    AGRADECIMIENTOS

    Esta primera edicin ha sido posible gracias al apoyo de todos

    mis amigos, por darme su invalorable ayuda y sus muchsimas ganas

    puestas en esta publicacin.

    A mi padre, por su forma de decirme que me quiere y que siga

    estudiando, que siga adelante; y dicindome PARA TODO HAY TIEMPO.

    A mi madre, por estar siempre a mi lado y apoyndome en todo

    momento, comprenderme y decirme que siga adelante a pesar de todo.

    A mis hermanitos, por estar ah conmigo en las buenas y malas,

    por molestarme y por los grandes momentos de alegra que compartimos y

    compartiremos.

    A mi amor, por confiar, creer en m, dndome apoyo, y diciendo

    siempre que si puedo lograrlo, por eso y ms te quiero m nia.

    A mis amigos DKM, NyD, por brindarme en todo momento su ayuda y

    disponibilidad permanente para intercambiar ideas.

    A usted, amigo lector por su inters en adquirir este libro que

    estoy seguro contribuir en incrementar su conocimiento actual.

  • Algoritmos y su codificacin en C++

    71 E. EMMANUEL COAQUIRA M.

    Copyright

    Autor

    E. EMMANUEL COAQUIRA M.

    Editor

    Leaders of the World

    Copyright 2013 End