Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Mecanica
Temas Paginas
UNI FIM
BORLAND C++
Indice 2
Introduccin 3
Algoritmos Pseudocodigo /Diagrama de Flujo 4
Identificadores ,variables, constantes 6
Procesos Secuenciales 8
Instrucciones de Control (Si Entonces) y anidadas 9
Instruccin de Control de Seleccin Multiple 14
Estructuras de Control Repetitivas 18
Elementos bsicos del Lenguaje C++/Borland C++ 24
Operadores en C++/Borland C++ 26
Tipos de Datos en C++/Borland C++ 29
Estructura de un Programa en C++/Borland C++ 31
Instrucciones de Control 34
Las estructuras de Control Repetitivas 37
Funciones Definidas , Funciones de Librera y Recursividad 41
Arreglos o Arrays 48
Arreglos Asignacin e Inicializacin de arreglos unidimensionales 49
Arreglos Bidimensionales 51
Tratamiento de Caracteres y Cadenas 54
Punteros 59
Asignacin Dinamica de Memoria 61
Estructuras y Anidamientos 64
Uniones 67
Programacin Orientada a Objetos Definiciones 69
LABORATORIOS 71
Apndice de Matlab 155
Introduccin 155
El EID de Matlab 156
Formatos de salida, operadores,comandos 158
Combinaciones, caracteres especiales, control de formatos 159
Tipos de matrices predefinidas 160
Formacion de Matrices a partir de Otras 161
Operador DOS Puntos 162
Aplicaciones con Matlab 163
Instrucciones de Control 166
Integracion Numerica con Matlab 174
Graficos con Matlab 176
Ejercicios sobre Ecuaciones no Lineales 178
Bibliografia 182
INTRODUCCION
Borland C++ es un lenguaje de programacin orientado a Objetos que utiliza como plataforma las
herramientas del lenguaje C estndar y del Lenguaje C++ .
INTRODUCCIN A LA PROGRAMACIN
El Objetivo es Familiarizar al alumno con el entorno del Lenguaje de Programacin verstil y fcil de manipular
como es Borland C++; es mi deseo que Ud aproveche y aplique los conocimientos adquiridos, tanto en clase
de teoria como en el Laboratorio.
Algunos conceptos a tomarse en cuenta:
Dato(s)
Es una informacin que va a ser representada en un programa para su posterior modificacin.
Lenguaje maquina
Conjunto de instrucciones numricas en sistema binario (1 0 0 1 ) reconocido por el computador como
micro_operaciones.
Preprocesador
Permite la inclusin de archivos(#include), sustitucin de macros(#define) y compilacin condicional, las lneas
que comienzan con # contiene instrucciones para que el compilador realice ciertas tareas antes de que la
compilacion del programa se active es decir antes que el compilador traduzca el programa fuente en codigo
mquina. Su sintaxis es independiente del resto del lenguaje, siendo necesaria que estas lneas sean escritas
desde la primera columna del programa.
Compilador
Es un programa encargado de traducir las instrucciones de un programa a instrucciones de lenguaje de
maquina, verifica que no exista errores sintacticos del Lenguaje de programacin .
Sentencia
Describe el conjunto de acciones a seguir especificado en un lenguaje de programacin que ser ejecutado
por el computador.
Sintaxis
La sintaxis de un lengueje de programacion es el conjunto de reglas para formular instrucciones
gramaticalmente correctas para el lenguaje sea cual fuere. Ahora bien, en la practica significa esto que una
instruccin en Borland C++ con la sintaxis correcta tiene una forma apropiada especificada para su
compilador, de tal manera que ste aceptar la instruccin y no generar un mensaje de error.
TEMA: ALGORITMOS
PSEUDOCODIGO / DIAGRAMA DE FLUJO
Los algoritmos pueden constituir por as decirlo en un listado de instrucciones que indican el camino a
seguir para dar solucin a un problema y que puede o no ser ser resuelto por una computadora ,
generalmente el algoritmo viene acompaado de un pseudocdigo y un diagrama de flujo.
Cuando el Algoritmo se ha desarrollado en forma correcta, el paso siguiente es llevar el pseudocodigo a la
codificacion del loenguaje de programacion.
Como ya se explic, la codificacion del algoritmo(pseudocodigo) en un determinado lenguaje debe
respetar su sintaxis para que el compilador pueda traducirlo en Lenguaje Maquina y hallar la solucion al
problema planteado.
Se entiende que por verificacin del algoritmo, el seguimiento del mismo con datos que se ajusten a las
caracterstica del problema que se va a resolver.
Caracterstica:
Los algoritmos en general deben ser:
Precisos :Los pasos a seguir en el algoritmo deben ser precisados claramente.
Definido: Debe dar siempre el mismo resultado para un conjunto de datos idnticos de entrada.
Finito : El algoritmo, independientemente de la complejidad del mismo, debe ser siempre de
longitud finita.
Metodologa:
Definicin de los Objetos_Datos de Entrada y Salida(Ingreso desde teclado y salida por pantalla)
Objetos_Datos de Entrada: Datos que se ingresan por teclado.
Objetos_Dato de salida: Datos u objetos de resultado.
Procesamiento de los Objetos_Datos (datos).
Visualizacion/Impresin de resultados.
Pseudocodigo
Es la parte textual del algoritmo,se podra decir que es como la receta para un paciente o tambin una
receta culinaria para cocinar un plato. Generalmente es la traduccin del Ingls de la sintaxis del
compilador al idioma con el que estamos trabajando.
DIAGRAMA DE FLUJO
Un diagrama de flujo es la representacin grfica de un algoritmo.
En cuanto a la simbologia utilizada para la representacin, se tomara la norma (ANSI ISO).
DIAGRAMA DEFINICION
INICIO FIN
ENTRADA DE DATOS
PROCESOS/CONSTANTES
F V BIFURCACIN(V/F)
PROCESOS(Desde/Para)
LLAMADA A (PROCEDIMIENTOS/FUNCIONES)
ESCRITURA
PANTALLA
CONECTOR
DIAGRAMA NASSI_SCHNEIDERMAN(N-S)
Tambien conocido como diagrama de CHAPIN es como un diagrama de flujo en el que se omiten las
flechas y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los
diagramas de flujo se pueden escribir diferentes acciones en una caja y dependiendo de las acciones de
control estas cambian para su mejor interpretacin, tal como se vera en los ejercicios y aplicaciones.
Inicio
Accion 1
Accion 2
Codificacin y Programacin
Es el Proceso mediante el cual se traduce un algoritmo a una codificacin en un lenguaje de programacin
especifico.
Programa
Conjunto de instrucciones que se ha desarrollado con la finalidad de que sea ejecutado por el computador.
Objetos_Datos
Son Objetos_Datos de un programa, todos aquellos datos manipulados por las Instrucciones.
Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de
las distintas operaciones que intervienen en la solucin del problema.
Se les da este nombre solo para efectos de entrada y salida de datos en la solucion de un problema.
IDENTIFICADORES
Los identificadores son palabras creadas por el programador para dar nombre a los objetos y dems
elementos que necesita declarar en un programa: variables, constantes, tipos, estructuras de datos,
archivos, procedimientos.
Deben empezar siempre con una letra, no deben existir espacios en el nombre, no empezar con un
numero.
VARIABLES :
Una variable es un ente (objeto_dato) que almacena una posicin de memoria cuyo valor puede cambiar
durante el desarrollo del algoritmo o ejecucin del programa.
Una variable se identifica por los siguientes atributos:
a) nombre que le identifica.
b) tipo que describe el universo en donde se desenvuelve la variable.
Los nombres de las variables, a veces conocidos como Identificadores, suelen constar de varios
caracteres alfanumricos de los cuales el primero debe necesariamente ser una letra.
Ejemp: int par; float num_123 ; char opc1 ; char nombre[15] ; short pequenio1 ;
par=2. unsignet sin_signo;
CONSTANTES: Son identificadores que generalmente son declarados en el programa antes de las
variables, estos identificadores por lo general asumen un valor dado por el programador, ste valor no
cambia durante el proceso del programa.
getch();
} Dando como resultado:
el valor verdadero de t es 1
el valor falso de t quivale a 0
Otra manera es usando los Interruptores (switch=sw) que slo es usado cuando a la variable se le inicializa
a, 0 (falso) para luego cambiar a 1 (verdadero), con cualquiera de estos valores y dependiendo en la
ubicacion del programa se le cambia al valor opuesto
int sw=0; //se asume falso int i,sp=0,simp=0,sw=0; //asume falso
........do{ for(i=1;i<=100;i++)
if(a<b) if(i%2==0){
cout<<proceso1; sp=sp+i;
proceso2; sw=1; // asume verdadero }
sw=1 // asume verdadero else
else simp=simp+i;
cout<<proceso3 cout<<"La suma de los primeros 100 pares es
while(sw!=1);// mientras no sea verdadero "<<sp<<endl
................ <<"\nLa suma de los primeros 100 impares es
Ejemplo de aplicacin "<<simp;
/*Programa que suma los pares y los impares de getch();
100 numeros enteros positivos*/ }
#include<iostream.h> /*Salida
#include<conio.h> La suma de los primeros 100 pares es 2550
main(){ La suma de los primeros 100 impares es 2500 */
MEMORIA
VAR1=66
SUM0 AUXVAR1*17
ACUVAR1+5 SUMSUM+AUX+ACU
SUM0+(66+17)+(66+5)
Como puede apreciar los valores son almacenados en bloque, claro que esta explicacin es muy
simplista,en realidad cada valor es almacenado en caldas de memoria y tienen una direccion que determina
que espacio de memoria va a utilizar.
El espacio de memoria la determina el tipo de datos que es utilizado por la variable o identificador. Esto
hace que un lenguaje de programacin difiera de un programa de aplicacin.
Espero que con estas lineas se comprenda la razon por la cual es necesario que una variable tenga un tipo
de datos.
Pseudocodigo Leer R
Inicio INICIO
Leer R Calculo del Area
Calculo del Area S=pi*R*R
S=pi*R*R R
Calculo de la longitud Calculo de la longitud
L=2*pi*R L=2*pi*R S=pi*R*R
Escribir S,L
Fin Escribir S,L
L=2*pi*R
Fin
S, L
INICIO
FIN
R=OSORIO
DANIEL. F 2 2 F1F 2 cos(theta * K )
2
F1 MALDONADO2 R Pgina 8 de 184
Escribir R
FIN
UNI FIM
BORLAND C++
P4. Desarrolle un algoritmo que permita simular el retiro de dinero de un cajero automatico.
El cajero solo emite billetes de las siguientes denominaciones: 200,100,50,20 y 10 .
Objeto_dato de Entrada: Q //Cantidad
Objeto_dato de Salida : b200, b100, b50, b20, b10 //denominacin de billetes
Pseudocodigo
Inicio
Leer Q INICIO
b200 =entero(Q/200)
Q=resto(Q/200)
b100=entero(Q/100) Q
Q=resto(Q/100)
b50=entero(Q/50)
Q=resto(Q/50) b200 =entero(Q/200)
b20=entero(Q/20) Q=resto(Q/200)
Q=resto(Q/20) b100=entero(Q/100)
b10=entero(Q/10) Q=resto(Q/100)
Escribir b200,b100,b50,b20,b10 b50=entero(Q/50)
Fin Q=resto(Q/50)
N-S b20=entero(Q/20)
Leer Q Q=resto(Q/20)
b200=entero(Q/200) b10=entero(Q/10)
Q=resto(Q/200)
b100=entero(Q/100)
Q=resto(Q/100) b200,b100,b50
b50=entero(Q/50) ,b20,b10
Q=resto(Q/50)
b20=entero(Q/20)
Q=resto(Q/20)
b10=entero(Q/10) FIN
Escribir
b200,b100,b50,b20,b10
Fin
TEMA: INSTRUCCIONES DE CONTROL DE PROGRAMA
Las estructuras de seleccin permite al usuario tener un control del programa mediante el uso de
instrucciones de control,constituyendo mecanismos para dirigir el flujo de ejecucin, dentro de estas
a).Instruccin de Control Simle.
La estructura Si - Entonces
Indica a la computadora que efecte una serie de una o mas instrucciones basadas en el resultado de
una comparacin.
INICIO
CONDICION
VERDAD (SI)
PROCESO 1
FIN
PROCESO 2
ESCRIBIR
FIN
PROCESO_F PROCESO_V
IMPRIMIR
ESCRIBIR
FIN
FIN
A>B
INICIO
A,
UNI FIM
BORLAND C++
Fin del Si
Escribir Mensaje
Fin Men= Par
Men
FIN
auxA
AB
Baux
A,B
FIN
Fin
UNI FIM
BORLAND C++
Escribir inicio
Men, E
Leer E
Fin
Si(E>=18)
VERDAD (SI)
Men= Mayor de Edad
ESCRIBIR
Men,E
FIN
Mensaje
Men
INICIO
N-S
INICIO
LEER NOTA N
SI N>=17
NO SI
N>=15
NO SI SOBRESALIENTE
NO N>=13 SI NOTABLE
ASISTE APROB
ESCRIBIR MEN
FIN
La Var_Selectora puede ser variable, expresin, funcin; empero, sin embargo, el valor representado
debe ser por decir lo menos, un valor escalar es decir un dato numrico entero o un carcter . No se acepta
una cadena o un dato real.
Se debe entender que cada alternativa tiene un nico valor y que va ha realizar una determinada accin o
proceso.
(b) Si halla una coincidencia que contenga el valor de la Var_Selectora, entonces ejecutara el proceso
correspondiente dando por finalizado la estructura, para luego buscar otra coincidencia, y ejecutar.
(c) Existe un termino que se usa ocasionalmente y que representa la accin cuando ninguna de las
alternativas se cumple, es el caso del si no , el termino no es obligatorio, pero permita clarificar una
aplicacin.
INICIO
Pseudocodigo
Condicion o var_Selectora
En Caso que (Var_Selctora) sea Leer
Dato
Caso 1 proceso_1
Caso 2 proceso_2
Caso 3 proceso_3
Condicion
.
Caso N proceso_N
Caso X proceso_Desconocido
Var_alterna1
Fin del Caso Proceso1
Var_alterna2 Proceso2
Var_alterna3 Proceso3
Var_alternaN ProcesoN
Var_alternaX Proceso_Desco
IMPRIMIR
FIN
DIAGRAMA N - S
1 CONDICIONANTE O
VAR_SELECTORA
2
3
Proceso_1 Proceso_2
Proceso_3 X
.... N
Proce_N Proc_Desc
N-S
INICIO
Establecer Operandos op1,op2
Mas +; Menos -; Por *; Entre ?; Residuo ; Potencia ~
op1+op2 -
*
op1-op2
op1*op2 ?
op2<>0
no si op2<>0
error op1/ no si ~
op2 completado.
Se deja como ejercicio para que sea error resto op1~op2 x
(op1/op2
desconocido
INICIO 1
Inicializar constantes
Mas =+
Menos =- IMPRIMIR
Por =* RESULTADO
Entre =?
Residuo =
Potencia =~
FIN
DIGITAR EL OPERADOR A
USAR
INGRESE :
OPERANDO1
OPERANDO2
OPERADO
R
Operando2
No Si
Diferente de
RESULTADO = Resultado= Ope1 ? Ope2
RESULTADO=RESIDUO(OPER1/OPER2)
RESULTADO=(OPE1)~(OPE2)
~
NO
CONDICION
Diagrama Nassi_Schneiderman
SI IMPRIMIR
1 1 1 1 1 FIN
D=
A A B A 2 B A 3B A N *B
A,B,N
Suma=0.
1
AB=(A+c*B).
Inverso=1/AB.
Suma=Suma+Inverso.
C++. C<N
Fin del mientras
Escribir: Suma=Suma+1/A.
Fin SUMA=SUMA+1/A
AB=(A+C*B)
INVERSO=1/AB
SUMA=SUMA+INVERS IMPRIMIR
O SUMA
C++
FIN
2. En la siguiente serie se pide hallar la suma de los elementos que ocupan las posiciones pares,y la
suma total de elementos, sabiendo que el # de termninos es igual a 50.
4 6 8
Su 2 ...
3 5 7 INICIO
Solucion:
Objetos_Datos de Entrada: N
Objetos_Datos de Salida: N
suma de posiciones pares: sp
suma total de elementos: su
Pseudocodigo i=1,su=0,sp=0
Inicio
Leer N F
Establecer variables i<-N
i=1; par=0;Su=0;
mientras(i<=N) V sp,su
si(resto (i/2=0)entonces V
Resto(i/2)
sp=2*i/(2*i-1)
=0
fin del si F
su=2*i/(2*i-1) sp=2*i/(2*i-1)
i=i+1
fin del mientras
escribir su, sp FIN
sp=2*i/(2*i-1)
i=i+1
PROCESO2
DIAGRAMA (N-S)
PROCESO1
V F
PROCESO2
Condicion
FIN
Inversoinverso*10
+digitoM=numero
M=numero/10
V F
Numero>
0
Inverso
FIN
1 2 3 4
S ...
t 1 2t 3 3t 5 4t 7
PROCESO
desde/para de var_contador=Vi Hasta Vf
ProcesoA
ProcesoB IMPRIMIR
Fin desde/para
FIN
Aplicacin
Se va a Ingresar un Numero y la tarea consiste
en mostrar todos los divisores de ese numero ingresado.
Cuando el numero Ingresado tiene por divisores
a la unidad(1) o al mismo numero mostrara un
mensaje diciendo El Numero es Primo
SOLUCION
Objetos_Datos de ENTRADA Y SALIDA
Objejo_Datos de Entrada: el Numero entero(NumeEnte)
Objeto_Dato de Salida : numero de divisores(NumeDivi),
PSEUDOCODIGO
Inicio
Leer un Numero entero: NumeEnte
Definir la variable Contador de Divisores e Inicializarla 0
NumeDivi=0
Contabilizar los divisores y mostrarlos
PARA Divisor=1 HASTA NumeEnte, HACER
INICIO
SI Residuo de NumeEnte/Divisor=0, ENTONCES
Inicio
Escribir Divisor
ContDiv=ContDiv+1 LEER NumeEnte
fin del SI
Fin del PARA
Escribir mensaje ContDivi=0
SI ContDiv=2, ENTONCES
MENSAJE Numero Primo
SINO para Divisor=1,
MENSAJE No es Primo NumeEnte
Fin del Si
Fin Resto(Num si
eEnte/Divis
or=0
no
Escribir Divisor
1
ContDivi=ContDivi+1
No si
ContDivi=
2
MENSAJ 1
DIVISOR
E
FIN
Smbolos
Estn clasificados en:
letras : A..Z, a..z (no incluye la y )
dgitos : 0 1 2 3 4 5 6 7 8 9
smbolos especiales
se tienen los siguientes:
simples :
SIMPLES
+ - * / = < >
; ! : % & { } . ,
^ | sizeof
DOBLES
<= >= == !! |= &&
>>= <<=
// /* */
Identificadores
Es el nombre mediante el cual se define una variable, constante, tipo, funcin, estructura, unin, clase,
objeto, etc.
Los identificadores declarados en Boland C++ tienen las siguientes caractersticas.
Pueden estar conformados por 127 caracteres como mximo.
Ejemplos :
Suma = ( 4 caracteres )
Contador = ( 8 caracteres )
Palabras reservadas
Son identificadores que tienen un significado especial establecido por el lenguaje de programacin.
Siempre deben escribir en minsculas.
Se lista a continuacin las palabras reservadas definidas por el compilador Borland C++
Comentarios
Sirven para documentar un programa y siempre van entre /* */ //.
Ejemplo :
/* Este es un comentario que tiene
mas de una linea */
//Otro comentario pero solo de una linea
[ ] ( ) . -> ++ -- &
* + - ! sizeof /
% << >> < > < = >
== != | && !! ? :
= * = / = % = + = - = << =
> > & = | = , # ##
Prioridad de Operadores
0 1 2 310152030506070 80
1
2 gotoxy(20,2); cin>>A;
3
15
gotoxy(30,15);cout<< A+4<<A+4;
18
DANIEL. OSORIO
MALDONADO Pgina 28 de 184
25
UNI FIM
BORLAND C++
Determina la naturaleza del dominio de valores que puede tomar una variable u Objeto_Dato, as como
tambin los operadores que pueden procesar dicha variable.
Existen 2 tipos de datos
Tipos Fundamentales.
Tipos Derivados.
Tipos Fundamentales
Tipos Derivados
El uso de datos de tipo double y float es aplicado en las matemticas como punto flotante. (Nmeros
reales)
En Borland C++ realiza en forma automtica en las operaciones la asignacin del punto flotante cuando
ste no se especifique.
Este tipo de dato es utilizado cuando una funcin realiza una tarea y la funcin no retorna valor
alguno.
Ejemplo :
void error ( char *name)
{ cout <<Nombre Inicial << name :
}
Ejemplo :
Puede tambin ser utilizado para declarar punteros como vaco. Con lo que se puede
operar con datos de distintos tipos. Esto es porque al compilar este no determinar el
tamao de la variable puntero vaco.
Ejemplo
#include<iostream.h>
#include<conio.h>
main(){
int x;float r;
void *p=&x; //*p apunta a x
cout<< "Ingrese un valor para x ";
cin>>x;
cout<< "La direccion de x es "<<p
<<sizeof(*p);
getch();
}
/*Ingrese un valor para x 200
La direccion de x es 0x0012ff88 */
1. Cuerpo de la funcion
Es el centro de la codificacin en ella se resuelve todo el codigo del programa.
2. Llamada a Funcion
Se da cuando ha sido declarada una funcion y es aqu donde se le llama por su nombre
3. Implementacin de Funciones
Las funciones definidas por el usuario son codificadas en esta seccin ejemplo:
Sentencia de Asignacin
Es el proceso mediante el cual se asigna un valor dato a una variable previamente definida en dicha
funcin
Sintaxis
identificadores _ Variable = dato ;
En dato puede ser el resultado de una expresin en la cual se procesan variables y constantes definidas por
el usuario, esto quiere decir que la expresin de la derecha es evaluada y el resultado es asignado a la
variable especificada a la izquierda.
Su=1;
par=2
Su +=par;
#include iostream.h
Las comillas dobles indican que el fichero ser buscado primero en el directorio actual de trabajo y si no es
encontrado continuar con la bsqueda en el los directorios standard especificados en el submen
Options del Ambiente Integrado (Editor Compilador) del Borland C++.
Si el fichero especificado se escribe de la siguiente forma:
#include<iostream.h>
El fichero solo ser buscado en el directorio standart.
El fichero iostream.h provee una serie de facilidades definidas en base a clases que se encargan de la
entrada y salida de datos y transformarlos al tipo de variable correspondiente.
Se tiene los siguientes Objetos
cout<<Pone caracteres en la salida estndar (pantalla)
cin>>Lee caracteres de la entrada estndar (teclado)
Salida
Permite la salida de datos por pantalla al tener una variable o expresin numrica como salida esta
es transformada a caracteres para ser mostrada en pantalla.
Ejemplo :
# include <iostream,h>
#include <math.h>
#include<conio.h>
main ( )
{
float a,b;
double poten;
cout<<Ingrese los Nmeros<<endl
<<Ingrese el valor de a: ;>>cin>>a;
cout<<Ingrese el valor de b: ;>>cin>>b;
poten=pow(a,b);
cout<<La Potencia de <<a<<Elevedo a
<<b<<Es <<poten<<endl;
getch( );
}
SECUENCIAS DE ESCAPE
Secuencia Normal
\n Nueva lnea
Sentencia 2 Sentencia 1
El compilador evala las expresiones condicionales desde arriba descendiendo, y tan pronto como el compilador
encuentre una condicin verdadera, ejecuta la instruccin asociada y salta el resto de la escalera. Si no es as se
ejecutara el "else" final. Si no hay else al final y son falsas las otras condiciones no se efecta nada.
La Instruccin switch
Esta instruccin, realiza comprobaciones mltiples o condiciones mltiples.
Borland C++ comprueba una variable sucesivamente frente a una lista de constantes enteras o de carcter,
luego de encontrar una
coincidencia, la computadora ejecuta las instrucciones o bloque de instrucciones que se asocian a la constante.
Default
Si al evaluar <expresin> esta toma un valor que no se encuentra en ninguna <exp_constant> de los casos entonces se
proceder con la ejecucin de la <instruccin por defecto>.
INICIO
EXPRESIO
N
INSTRUCCIN 1
EXP_CONST 1
INSTRUCCIN 2
EXP_CONST 2
INSTRUCCIN 3
EXP_CONST 3
EXP_CONST N INSTRUCCIN N
MENSAJE
Sintaxis :
switch(<expression>) {
FIN
case <exp_const2>:
instruccin(s);break;
case <exp_const3>:
instruccin(s);break;
.
.
default :
instruction(s);
NOTAS:
Exp_const debe ser una Variable una expresin, una funcin y el valor que representa necesariamente
debe ser un escalar, en pocas palabras debe ser numrico entero o sino carcter individual, nunca un float
ni una cadena. Debe tenerse en cuenta que que exp_const ser evaluada en cada alternativa hasta
encontrar el lugar que le corresponde.
Cada exp_const esta conformada por un nico valor
Cada Instruccin puede estar conformada por una o varias sentencias.
1. El valor de exp_const es evaluado en las alternativas una por una.
2. Una vez encontrada una alternativa que contenga el valor de la exp_const, ejecuta la instruccin
correspondiente y termina la estructura que le corresponde.
3. Si no existe una <exp_const> que corresponda el control para la instruccin que sigue al bloque
del switch, a menos que este contenga la etiqueta de "default", en este caso el control se
transfiere a la instruccin que sigue a "default"
4. Dos etiquetas "case en el mismo bloque no pueden tener <exp_const> con el mismo valor.
5. La Instruccin "break" se usa para terminar la secuencia que est asociada a la <exp_const>.Si
se omite la instruccin break, la ejecucin continua en la Instruccin del siguiente "case " hasta
que la computadora encuentre un break o el final del switch.
Aplicacin:
Programa que realiza una serie de operaciones matemticas:
#include<conio.h>
#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<iomanip.h>
#include<stdlib.h>
main( )
{
int opera;
unsigned int a,b;
char opc;
do{ clrscr();
//system(cls); llama al DOS para limpiar la pantalla, recomendable solo con Win98SE o
anteriores
cout<<"Ingrese 02 Numeros : ";
cout<<"Ingrese a: ";cin>>a;
cout<<"Ingrese b: ";cin>>b;
cout<<"MENU DE OPERACIONES :"<<endl;
cout<<"1 :Suma\n"
<<"2 :Resta\n"
<<"3 :Producto\n"
<<"4 :Division\n"
Sentencia_A
a) do While
Sentencia_B
Pseudocodigo: loop
Hacer Sentencia_A
Sentencia_B Expresin NO
Mientras(Expresin) sea Verdadera
Si
Imprimir
Sintaxis :
do{ <Sentencias>
sentencia_A
FIN
sentencia_B
}while (Expresion);
Las <sentencias> son ejecutadas en forma repetida segn que el valor de la expresin < expresin> sea
verdadera.
La prueba control toma el lugar despus de cada ejecucin de la <sentencia> esto nos indica que la
comprobacin de continuar con la ejecucin de <sentencia> est a la salida del ciclo iterativo o bucle o
loop. Se dive que la instruccin do- while itera al menos una vez.
Ejemp lo :
#include<iostream.h>
#include<conio.h>
main()
{
long factorial;
int i= 1,n=1;
do {
n* =i;
i++;
}while (i <=factorial) ;
cout<< El Factorial de n es : <<n;
}
getch();
}
b) while
Aqu la Instruccin se repetir mientras la condicin sea verdadera y lo hace mediante un bucle o lazo.
Termina cuando la condicion es falsa.
Pseudocodigo
Mientras (condicion) sea verdadera
Sentencia_1 datos
Sentencia_2
Fin del mientras
Sintaxis : No
Condicio
n si
While (<condicin>) loop
{
<sentencia_1> Sentencia_1
<sentencia_2> Sentencia _2
Imprimir
Ejemplo :
/*Algoritmo de Euclides para encontrar el maximo comun divisor
de dos Numeros */
#include<Iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje Otra Prueba [S][N] ?:
int a,b; // declaracion global
main()
{
for(;;){clrscr();
cout<<"Ingrese el Primer Numero: ";cin>>a;
cout<<"Ingrese el segundo Numeros: ";cin>>b;
while(a!=b)
if(a>b)
a-=b;
else
b-=a;
cout<<"El Maximo comun divisor es: "<<a<<endl
<<mensaje;
if(toupper(getchar())==N)
break;}
}
c) For
Esta instruccin ,es uno de las mas usadas dentro de las de flujo de control esta instruccin tiene su
equivalente en otros lenguejes de programacin tradicionales como el Basic/Pascal en Fortran.
for(inicializacion;condicion;incremento)
{
sentencias ;
}
dato
s
Para
Proceso1
imprim
La primera expresin se refiere a la condicin inicial, si es una sola condicin si son varias (deben estar
separadas por ;);lo mismo ocurre con la tercera expresin que esta dedicada a la actualizacion. La
expresin central se refiere al test de terminacin ,muy parecido al while ,contina el bucle mientras se
cumpla la condicin.
La siguiente instruccin for() permite construir un lazo, y solo saldra de ese lazo mediante un instruccin,
en este caso la instruccin if(),en la cual se libera del lazo cuando la condicion conlleva a una alternativa
falsa.
Esta instruccin es usada frecuentemente cuando una aplicaciondeba o no abandonar el programa.
#include<iostream.h> randomize();
#include<conio.h> cout<<"Ingreso mi Numero ";cin>>my;
main(){ cout<<"Genero un numero entre 1 y 7 \n";
pc=random(7)+1;
for(;;){ cout<<"El numero de la pc es "<<pc;
cuerpo del programa //procesos if(my==pc)
cout<<"\nSuertudo Adiviniste! mi numero
if(condicion ) fue "<<my<<'y'<<"\nEl Numero de la pc
break; fue "
} <<pc;
else
//Proprama que usa for(;;) cout<<"\nSin Suerte!";
//Adivine un numero en el rango de 1 a 7 cout<<mensaje;
#include<iostream.h> if(toupper(getch())=='N')break;
#include<conio.h> }
#include<stdlib.h> }
#define mensaje "\nOtra Prueba [S][N]" Ingreso mi Numero 3
#include<ctype.h> //para la mayuscula del Genero un numero entre 1 y 7
Caracter El numero de la pc es 3
main() Suertudo Adiviniste! mi numero fue 3y
{ El Numero de la pc fue 3
int my,pc; Otra Prueba [S][N]
for(;;){clrscr();
Declaracin :
#include<iostream.h>
#include<conio.h>
float media_tres (float numl,float num2,float num3);
main()
{
Llamada a la funccion Descripcin del cuerpo de la funcin.
getch();
}
//desarrollo de la funcin
float media_tres (float numl,float num2,float num3)
{
Desarrollo de la funcion
Return(valor);
}
EJEMPLO;
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#define mensaje "Otra Prueba[S][N] ?"
float media_tres (float numl,float num2,float num3);//prototipo
float media; //declaracion global
main(){
float num1,num2,num3;for(;;){clrscr();
cout<<"Primer numero ";cin>>num1;
cout<<"Segundo numero ";cin>>num2;
cout<<"Tercer numero ";cin>>num3;
cout<<"El promedio es "<<media_tres(num1, num2, num3)<<endl
<<mensaje; if(toupper(getch())=='N')
break;}
float m,n,p;
main(){
for(;;){clrscr();
leerabc(m,n,p) ;
cout<<"El Mayor es "<<mayorabc(m,n,p) ;
cout<<endl<<mensaje<<endl
<<&m;
if(toupper(getch())=='N')
break;}
}
Resultado:
a= 12
b= 21
c= 17
El mayor valor es 21
Otra Prueba[S][N] ?
Para que resulte la aplicacin se hace uso del paso por referencia, en este caso usamos el
operador & que devuelve la direccion:
Void leerabc(float &a,float &b,float &c);
Retorno de valores
Una funcin puede retornar cualquier tipo bsico de dato, punteros, referencias,
objetos, etc.
EJEMPLO:
#include<iostream.h>
#include<conio.h>
int sumar(int, int);//Prototipo
main( ){
int a,b;
gotoxy(10,10);
cout<<"Introduce primer nmero";
cin>>a;
gotoxy(10,11);
cout<<Introducir segundo numero ;
cin>>b;
int c;
gotoxy(10,12);
c=sumar(a,b);
cout<<El resultado es <<c;
}
int sumar(int, int ){
return(a+b)
}
Para forzar la devolucin de un valor se utiliza la instruccin cout<< indicando el dato a devolver a
continuacin. Vea por ejemplo
//Usando Funciones definidas por el usuario
#include<iostream.h>
#include<conio.h>
void Leerab(float &a,float &b)
{cout<<"a = ";cin>>a;
cout<<"b = ";cin>>b;}
float operacion(float &a,float &b)
{cout<<(a+b);
return(a-b);}
main(){
float m,n;
Leerab(m,n);
cout<<" La suma y la diferencia es "<<operacion(m,n);
getch();
Paso de argumentos
Por valor -> cuando se realice la llamada lo que se hace es una copia de los datos para
utilizarlos en la funcin. Con este sistema los valores originales no se pueden modificar
desde la funcin.
Por referencia > lo que se pasa es la direccin de memoria del dato utilizado como parmetro.
De esta forma ambas variables compartirn la misma zona de memoria. Si cambia el valor de una,
cambia el valor de la otra.
Slo pueden ser valores literales o constantes. No pueden ser valores reales
EJEMPLO:
//Con argumento en la funcion
#include<iostream.h>
#include<conio.h>
int suma(int a, int b, int c); //prototipo
int resta(int a, int b=0, int c= 0);//prototipo
main ( ) {
cout<<"Para sumar (1,2,3)= "<<suma (1,2,3) << endl;
cout<< "Para sumar (1,2) ="<<suma (1,2,0) << endl;
cout<<"Para sumar(1)="<<suma(1,0,0)<<endl;
cout<<"Para sumar(0) ="<<suma(0,0,0)<<endl<< endl;
Funciones Matematicas
abs()Devuelve el valor absoluto del argumento entero x. int abs(int x); #include<stdlib.h>
fabs()Devuelve el valor absoluto del argumento en punto flotante de x: double fabs(double x)
ceil()Encuentra el nmero entero ms pequeo no menos que el argumento x. double ceil(double x)
floor()Encuentra el nmero entero ms grande no mayor que el argumento x. double floor(double x);
exp()Calcula la e exponencial al argumento x. double exp(double x);
Funciones trigonomtricas
sin( ) devuelve el seno de un ngulo. Su formato es: double sin(double ngulo);
cos () devuelve el coseno de un ngulo. El formato es: double cos(double ngulo);
tan () devuelve la tangente del ngulo indicado. El formato es: double tan(double ngulo);
asin()Devuelve el arco seno del angulo especificado. El formato es :double asin(double angulo)
acos()Devuelve el arco coseno del angulo especificado. El formato es :double acos(double angulo)
atan ()>devuelve el arcotangente del ngulo especificado. El formato es: double atan (double ngulo);
Recursividad
Se dice que un proceso es recursivo s forma parte de si mismo o sea que se define en funcin de si mismo.
La recursin aparece en la vida diaria, como por ejemplo si colocamos dos espejos uno al frente del otro y
no posicionamos en el centro, entonces podremos apreciar que la imagen se repite infinita veces. ste
simple ejemplo nos sirve de modelo en problemas matemticos, en estructuras de datos y en muchos otras
aplicaciones.
Un ejemplo muy conocido es el clculo del factorial de un nmero que esta definida para cualquier valor
de n(n-1)!
n! 1 si n=0 o n=1
n(n-1)! si n>0
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
# define mensaje "\n Otro Factorial [S][N] ?: "
void LeerN(long &N)
{cout<<"Ingrese N = ";cin>>N;}
long factorial(long N)
{
if((N==0)||(N==1))
return 1;
else
return(N*factorial(N-1));
}
main() {
for(;;) {clrscr();
long M;
LeerN(M);
gotoxy(10,10);cout<<"El Factorial de "<<M<<" es "<<factorial(M)<<endl
<<'\t'<<mensaje;
if(toupper(getch())=='N')break;
}
}
/*Ingrese N = 9
El Factorial de 9 es 362880
Otro Factorial [S][N] ?: */
Experiencia : modifique el tipo de dato a long double y pruebe hasta que valor de N puede calcular.
TEMA: ARREGLOS
Definiciones Generales:
Ejemplos simples:
char apellidos [20] :declara un array de nombre apellidos con tipo de dato char y de tamao 20.
int dato[5]:
7 13 17 19 23
0 1 2 3 4
Como consecuencia podemos afirmar que las tres caractersticas de un array de un array son:
int numero[23];
tamao: 23
nombre
tipo de dato
Escritura :
Pseudocodigo: Sintaxis
desde i=0 hasta n-1 hacer for (i=0;i<n;i++)
Escribir A(i) cout<<a[i];
fin desde
Ejemp.
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
imain(){
int array[10];
for(int x=0;x<5;x++){
cout<<"Introduce el "<<(x+1)<<": "<<"Numero";
cin>>array[x];
}
for(x=0;x<5;x++){
If((array[x]/2)==(array[x]/2))
cout<<setw(4)<<array[x];
}
getch();
}
En Borland C++ los arrays son tratados como punteros .El nombre del array es en realidad un puntero a
la primera posicin(a = *numero) ->as solo apuntara al primero).Pero si desea obtener todos los datos
del array deber usar la aritmtica de punteros. Cuando a un puntero se le suma una unidad lo que se
consigue es que el puntero apunte al siguiente dato de ese mismo tipo(a = * (numero + 1)).
C++ /Borland C++ no realiza comprobacin de entornos en los arrays: as no detiene la escritura fuera del
final del array. Si se sobrepasa el final durante una operacin de asignacin, entonces se asignaran valores
a otra variable o a una traza de cdigo del programa; como consecuencia de ello no arrojara error
,dependiendo en todo caso de la habilidad del programador de realizar las codificaciones y rutinas de la
mejor manera posible.
a[0]=23,a[1]=37,a[2]=97,a[3]=-31,[4]=101.
int a[4]={13,53} equivale a: a[4]={13,53,0,0}
int lista_1[ ]={17,37,29,23,43,-47,83} ;el nmero de elementos esta dado por el nmero de valores
dado entre llaves.
Observa: Borland C++ no permite inicializar arrays si estn declarados como locales. Para poder inicializar
un array se le debe definirse como global, es decir debe ser una variable que exista durante toda la
ejecucin del programa. Esto se consigue definiendo el array a nivel externo o declararlo como static.
[clase]<tipo><nomb_array>[expN]={caract 1, caract2,...,caractn}
O
[clase]<tipo><nomb_array>[expN]=cadena
0 1 2 3 columnas
3 5 7 13 0 fila 1
17 19 23 29 1 fila2
A[5][4] 31 37 43 47 2 fila3
53 59 61 67 3 fila4
71 79 83 97
4 fila5
Sintaxis
<tipo><nombre_array>[expn1][expn2];
Tipo de Variable
sintaxis
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>[i][j];
DANIEL. OSORIO MALDONADO Pgina 51 de 184
UNI FIM
BORLAND C++
sintaxis
for(j=0;i<n;j++)
for(i=0;j<m;i++)
cin>>[i][j];
Para acceder a las posiciones de un array bidimensional hay dos mtodos: por indexacin o por punteros .
Por indexacin se debe colocar el ndice de cada dimensin del nomb_array [x][y].
#include<iostream.h>
#include<conio.h>
#include <ctype.h>
#include <iomanip.h>
main( ){
char proved[10][16];
int i,cantidad[10],n;
float precio[10],Total[10],t=0;
char opc;
for(;;){clrscr();
gotoxy(2,5);cout<<"Ingrese N de PROVEEDORES: ";cin>>n;
for (i=0;i<n;i++) {
cout<<"Proveedor: ";
cin>>proved[i];
cout<<"Cantidad :";cin>>cantidad[i];
cout<<"Precio Unitario:";cin>>precio[i];}
for (i=0;i<n;i++){
Total[i]=cantidad[i]*precio[i];
t=t+Total[i];
}
clrscr();
gotoxy(18,6);cout<<"Proveedores con Cantidad de Productos y su Costo Total ";
gotoxy(18,7);cout<<"********************************************* ";
gotoxy(2,8);cout<<setw(25)<<"Proveedor"<<setw(12)<<" Precio Unitario "<<setw(12)<<"Cantidad"
<<setw(10)<<" Total"<<endl;
for(i=0;i<n;i++)
cout<<setw(10)<<"["<<i<<"]"<<setw(10)<<proved[i]<<setw(14)<<precio[i]<<setw(14)<<cantidad[i]
<<setw(14)<<Total[i]<<"\n";
cout<<"Otro Reporte: [S][N]: ";
La biblioteca del turbo C++ tiene un variado conjunto de funciones del manejo de caracteres.
Estas funciones corresponden tanto a las librerias <stdio.h> , <ctype.h>, y <string.h> para cadenas
b). strncat(cadena1,cadena2,n) similar a la anterior pero copiando solo los n primeros caracteres de la
segunda cadena en la primera.
Sintaxis de la funcion:
char *strncat(char *cadena 1,char *cadena 2,int n)
Ejemplo
Ejem
Funciones para bsqueda de caracteres en cadenas
a).strchr(cadena,car) Busca la primera aparicion del carcter(car) en la cadena proporcionando un puntero
de la primera aparicion de car en la cadena.Si fuese el caso de no encontrar una coincidencia devuelve el
puntero nulo.
Sintaxis de la funcin con punteros
char *strchr(char *cadena,char car):
Ejempl.
#include<iostream.h>
#include<conio.h>
#include<string.h>
int main(){
char s[80]="Cadena de Prueba";
char s1[80];
clrscr();
gotoxy(6,6);
cout<<strchr("Salario Mensual =$98765",'$');
s1==strchr(s,'a');
gotoxy(10,10);cout<<s1;
return(0);
}
if (ptr)
cout<<"strpbrk found first character: "<< *ptr;
else
cout<<"strpbrk didn't find character in set ";
getch();
}
//strpbrk found first character: S
#include <iostream.h>
#include <string.h>
#include<conio.h>
main()
{
char *string1 = "1234567890";
char *string2 = "123DC8";
int length;
length = strspn(string1, string2);
cout<<"El Caracter en donde la cadena es diferente esta en la posicion :"
<<length;
getch();
}
// El Caracter en donde la cadena es diferente esta en la posicion :3
//No olvide que que la primera posicion tiene valor 0
#include <iostream.h>
#include <string.h>
#include<conio.h>
main()
{
char *string1 = "1234567890";
char *string2 = "757DC8";
int length;
length = strcspn(string1, string2);
cout<<"El Caracter donde intersecta a la cadena esta en el indice o posicion : "<<length;
getch();
}
//Character where strings intersect is at position: 4
//No olvide que se empieza desde el indice posicion 0
f) strstr(cadena1,cadena2) localiza la primera aparicin de una cadena en otra. Si tiene xito, la funcin
strstr devuelve un puntero a la primera aparicin de cadena2 como una subcadena de cadena1.Si la
bsqueda falla. Se devuelve NULL.
Sintaxis funcion con cuntero
Char *strstr(char *cadena1,char *cadena2)
#include <iostream.h>
#include <string.h>
#include<conio.h>
main()
{
char *str1 = "Borland International", *str2 = "nation", *ptr;
ptr = strstr(str1, str2);
cout<<"The substring is :\n"<< ptr;
getch();
}
/*The substring is :
national*/
#include <string.h>
#include <iostream.h>
#include<conio.h>
main()
{
char input[16] = "abc,d";
char *p;
/* strtok places a NULL terminator
in front of the token, if found */
p = strtok(input, ",");
if (p) cout<<'\n'<< p;
//aplicacin_1
#include <string.h>
#include <iostream.h>
#include<conio.h>
main()
{
char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
int ptr;
ptr = strcmp(buf2, buf1);
if (ptr > 0)
cout<<"buffer2 is greater than buffer1 ";
else
cout<<"buffer2 is less than buffer1 ";
//Aplicacion_2
#include <string.h>
#include <iostream.h>
#include<conio.h>
main( ){
char clave[50];
gotoxy(2,4);cout<<Ingrese Clave de Acceso :;
cin.getline(clave,50);
gotoxy(2,6);
if(strcmp(clave, TIENES PERMISO )==0)
cout<<Clave de Acceso Correcta ;
else if(strcmp(Clave,tienes permiso)==0;
cout<<Clave de Acceso Correcta ;
else
cout<<Denegado el Acceso ;
gotoxy(20,20);cout<<Presione Enter ;
getch();
}
main ( )
{
unsigned int a,*p,*q;
Otro ejemplo:
/* Programa que Asigna valores de un puntero a otro puntero */
#include<iostream.h>
#include<conio.h>
imain()
{
int x;
int *p1,*p2;
cout<<"Ingrese el Valor de x: ";cin>>x;
p1 =&x;
p2=p1;//La direccion que tiene p1 se asigna a p2
Ejemplo 02 main()
//Intercambiar 02 valores usando punteros {
#include<iostream.h> float a,b;
#include<conio.h> Leerab(&a,&b);
void Leerab(float *x,float *y){ swab(&a,&b); /* Llama a la funcin swab y pasa la
cout<< "Ingrese el valor de a ";cin>>*x; direccin de a y b */
cout<< "Ingrse el valor de b ";cin>>*y; cout<<"\n Ahora a= "<<a<<" y b= "<<b;
} getch();
void swab(float *x,float *y){ }
float t; /*Salida
t=*x; Ingrese el valor de a 2
*x=*y; Ingrse el valor de b 5
*y=t;
} Ahora a= 5 y b= 2*/
El programa pide dos valores, enteros los cuales se almacenan en a y b respectivamente. Luego se invocan a
la funcion swab; entonces recepciona dos direcciones, las cuales son guardadas en dos punteros. Luego las
direcciones o contenidos son cambiados. El programa termina entonces cambiando los datos de las variables.
Resultado de la ejecucin:
Los valores son 77 77 173
Los valores son 77 999 999
En las primeras lneas del programa, se hace uso de los punteros tal y como se haca en C++.
point2 ilustra el uso del operador new. Este operador requiere un modificador que debe ser un tipo. La
parte new int significa que se crea un nuevo entero en la memoria, y devuelve la localizacin del entero
creado. Esta localizacin es asignada a point2. La siguiente lnea asigna 173 al entero al que apunta point2.
Es importante distinguir entre point2, la localizacin del entero, y *point2, el entero. El puntero point2
apunta ahora a una variable entera que se ha reservado dinmicamente, y que puede utilizarse de igual
forma que se haca en C. Como ejemplo, se imprime el valor al que apunta.
A continuacin, se reserva memoria para una nueva variable, y point2 se refiere a la misma variable
reservada dinmicamente a la que apunta point1. En este caso, la referencia a la variable a la que point2
apuntaba previamente se ha perdido, y nunca podr ser utilizada o su memoria liberada. Slo cuando se
vuelva al sistema operativo se liberar la memoria que ocupaba. Por tanto, no debe utilizarse.
Punteros a funciones
Los punteros a funciones ya existan en C, aunque no se utilizan regularmente. Veamos un ejemplo:
#include <iostream.h>
#include<conio.h>
void printMensaje (float dato);
void printNumero (float dato);
void (*funcPuntero)(float);
Los Arreglos de Registros consiste controlar varios registros mediante una variable indexada
Ejemplo:
/*ARREGLO de REGISTROS , declarando como: registro Notas[N]
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
#define N 30
struct Alumno{
char codigo [10];
char nombres[30];
char apellidos[30];
};
struct Rendimiento{
Alumno ficha;
int p1,p2,p3,p4,pp;
}Notas[N];
main() {
int m,menor;
register int i;
float s=0,S=0,promedio,pp;
/*Ingrese de Datos */
cout<<"\nIngrese Nmeros de Alumnos a Procesar =>";
cin>> m;
for(i=0;i<m;i++)
{
cout<<"\n Ingrese Codigo : ";
gets(Notas[i].ficha.codigo);
cout<<"\n Ingrese Nombres =>";
gets(Notas[i].ficha.nombres);
cout<<"\n Ingrese Apellidos =>";
gets(Notas[i].ficha.apellidos);
cout<<"\n Ingrese La Notas =>"<<endl;
cout<<"Ingrese Nota1: ";
cin>>Notas[i].p1;
cout<<"Ingrese Nota2: ";
cin>>Notas[i].p2;
cout<<"Ingrese Nota3: ";
cin>>Notas[i].p3;
cout<<"Ingrese Nota4: ";
cin>>Notas[i].p4; }
for(i=0;i<m;i++){
menor=Notas[i].p1;
if(menor>Notas[i].p2) menor=Notas[i].p2;
if(menor>Notas[i].p3) menor=Notas[i].p3;
if(menor>Notas[i].p4) menor=Notas[i].p4;
S+=(Notas[i].p1+Notas[i].p2+Notas[i].p3+Notas[i].p4);
pp=(S-menor) /3.0;
cout<<"\nEl Promedio de las Notas de:"
<<Notas[i].ficha.nombres<<" es: "<<pp<<endl;
for(i=0;i<m;i++)
s+=(Notas[i].pp);
promedio =s/(float)m;
cout<<"Promedio de las notas de los "
<<m<<" Alumnos es: "<<promedio<<endl;}
else
cout<<"\n NO hay mas alumnos que procesar: ";
getch();
}
Anidamiento de estructuras
Las declaraciones de la estructuras se pueden anidar. Es decir, una estructura contriene uno o mas
miembros que son estructuras, tal es el caso del ejmplo arriba en la cual se tiene una estructura llamada
Alumno , con datos a cerca de esta estructura y luego creo otra estructura llamada Rendimiento y dentro de
esta estructura recien valido el nombre de de la estructura alumno con la variable ficha.
union int_or_long {
int i;
long l;
} a_number;
Si la variable a_number (variable asociada a la union) , se encuentra dentro de una funcion, la union es de
ambito local a esa funcion. Si esta instruccio se encuentra se encuentra fuera de las funciones,ser de
ambito global.
Al igual que como las esturcturas, es posible asociar varias variables a la misma union . Tambien, lo mismo
que ocurre con las estructuras, se hace referencia a los miembros de una union mediante el operador
punto(.). la sintaxis es simplemente :
a_number.nombre ; a_number ->nombre nombre de algun miembro de la union.
#include iostream.h
#includestdio.h
union prueba {
char c;
int b;
float d;
};
main(){
union prueba bcd;
cout<<Ingrese dato b;cin>>bcd.b;
cout<<direccion de b :<<&bcd.b<<\n;
cout<<direccion de d :<<&bcd.d<<\n;
cout<<direccion de cbd :<<&bcd<<\n;
cout<<numero de bytes :<<sizeof(bcd)<<\n;
getch();
}
El compilador asigna como espacio de memoria el mas grande posible, para contener el tipo de datos con
mayor logitud de bytes, esto se averigu mediante :
typedef : el tipo typedef permite al usuario crear nuevos de tipos de datos y se apoya en el compilador,
esquemticamente :
Identificador de
typedef Tipo dato
usuario ;
typedef char array[25]; aqu se crea un nuevo nombre de tipo array
declarndose entonces que los vectores x,y obedecen al tipo array array x,y.
Se debe evitar el uso exagerado de nuevos tipos de datos, puede conllevar a confusin.
Ejemplo:
#include<isotream.h>
#include<conio.h>
typedef int entero
typedef double real
main(){
entero evalor;
real rvalor;
Al llegar a esta parte del Capitulo es bueno hacer un acercamiento entre la clase primitiva y las
clases propiamente dichas que crean los objetos.
Al hablar de clases primitivas me estoy refiriendo a las estructuras como una forma de programar
al estilo de las clases, es decir sin los metodos ni propiedades que con llevan la programacin
Orientada a Objetos.
Una clase :Estructura que define las caracteristicas de un objeto.
consta de miembros de 02 tipos y todos son privados
*datos //instancia statica
*funciones //instancia dinamica
Mientras que una structura triene sus instancia y sus miembros todas publicas.
Objeto :variable correspondiente a una clase
include<iostream.h> {
#include<conio.h> gotoxy(x,y);
class punto { cout<<ch;
public: }
int x,y; void punto::ocultar()
char ch; {
void mostrar(); cout<<" ";
void ocultar(); }
}; main( )
void punto::mostrar() {
El grfico siguiente muestra como debe quedar la ventana para empezar una aplicacin
por primera vez. Aqu puede empezar a escribir cdigo.
Al empezar a escribir el cdigo vamos atener una pantalla como se muestra, debe
seguirse los pasos que su profesor le indique para no cometer errores.
Al terminar de escribir el cdigo se esta en la posibilidad de compilar el programa, es
decir es la fase anterior a la ejecucin, permite corregir errores de sintaxis, para ello se
usa proyect\compile o tambien alt+F9.
Puede apreciar que hay dos ventanas pequeas, una para el cdigo y la otra para
depurar o tambien llamada ventana de mensajes.
Desde la ventana de mensajes se puede corregir los errores y esto es cuando aparece
un signo de admiracin de color rojo, indicndonos la posible ubicacin del error, se
hace dobleclic del boton primario para corregir
Como salvar una aplicacin: para esta operacin se puede usar el menu con las
opciones File\save o File\save as.
como tambien el icono
Si desea cortar,copiar y pegar puede usar:
En la figura que se podr reconocer las distintas opciones que ofrecen los botones del Entorno
de Desarrollo del Borland C++
Como por ejemplo :
Botn de apertura.
Botn para compilar la aplicacin.(opcin Proyect\compilar)
Opcin de copiado\cortar\pegar.
Para realizar nuestra primera aplicacin debemos activar el Icono
que representa al Borland C++.
Para ello ir a men Inicio\programas\Borland C++.
Una vez activado el programa debemos estar seguros que estamos en el rea de trabajo, y es
all donde se debera a codificar el programa que ser resuelto por la computadora.
/*INGRESO DE DATOS*/
gotoxy(40,7); cin.getline(nom,20);
gotoxy(40,8); cin.getline(curso,15);
gotoxy(40,9); cin >>pc;
gotoxy(40,10);cin >>pg;
pg=toupper(pg);
if (pg=='C')
{ gotoxy(20,12);cout<<"Cancelado \n";
gotoxy(50,10);cout<<"Resta =0";}
else
{
gotoxy(60,10);cin >>canti;
gotoxy(20,12) ;cout<<"Resta :"<<(pc-canti)<<" Nuevos Soles";
}gotoxy(20,23); cout<<"Otra Inscripcion [S][N]?:";
}while (toupper(getch())=='S');
getch();
}
Aplicacin #3
Visualizar una aplicacin que permita el ingreso del nombre del Usuario, el nombre del curso
sin espacios en blanco y luego las notas de practicas como por ejemplo
prac1,prac2,prac3,prac4 hallar el promedio de estas notas
Para luego sumarlas a las de los examenes parciales y finales.
El promedio final tendr la siguiente formula:
Pp=(prac1+prac2+prac3+prac4)/4.
Profin=(Pp+Expar+Exfin)/3.0.
#include <iostream.h>
#include<conio.h>
main(){
float prac1,prac2,prac3,prac4;
float Pp,Profin,Expar,Exfin;
char nombre[20],curso[20];
cout<<"Ingrese su nombre ";
cin>>nombre;
cout<<"Ingrese nombre del curso sin espacios ";
cin>>curso;
cout<<"Ingrese la nota de la primera practica ";
cin>>prac1;
cout<<"Ingrese la nota de la segunda practica ";
cin>>prac2;
cout<<"Ingrese la nota de la tercera practica ";
cin>>prac3;
cout<<"Ingrese la nota de la cuarta practica ";
cin>>prac4;
Pp=(prac1+prac2+prac3+prac4)/4.0;
cout<<"Ingrese la nota del examen parcial ";
cin>>Expar;
cout<<"Ingrese la nota del examen final ";
cin>>Exfin;
Profin=(Pp+Expar+Exfin)/3.0;
cout<<"El promedio final de : "<<nombre<< es <<Profin;
getch();
}
El resultado se aprecia en la siguiente vista:
Aplicacin #5
/*Aplicacin que muestra como rellenar los espacios en blanco con un carcter(*)
Programa que calcula las distintas bases existentes */
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
i main() {
int i,n;
cout<<"Ingrese el valor de i: ";cin>>i;
cout<<setfill('*'); //rellena de *
cout<<setiosflags(ios::showbase|ios::uppercase);
cout<<"En base 10: "<<setw(6)<<setbase(10)<<i<<endl;
//Tambien <<dec<<i<<endl
cout<<"En Base 8: "<<setw(6)<<setbase(8)<<i<<endl;
// Tambien <<oct<<i<<endl
cout<<"En Base 16:"<<setw(6)<<setbase(16)<<i<<endl;
//Tambien <<hex<<i<<endl
//GGcout<<"En Base 2:"<<setw(6)<<setbase(2)<<i<<endl;
getch();
}
Aplicacin #6
/* Escriba un programa en borland C++ para calcular y mostrar el maximo momento
flexionante, M de una viga, la cual esta apoyada en ambos extremos La formula para el
maximo momneto flexionante es M=XW(L-X)/L, donde X es la distancia desde el extremo
ixquierdo de la viga donde un peso,
W,esta colocado, y L es el Largo de la Viga. El despliegue producido por el programa :
el maximo momento flexionante es xxxx.xxx
|
|<--x->|
| W
-------------------------
#<----------L---------->#*/
#include"iostream.h"
#include"conio.h"
#include"math.h"
#include"iomanip.h"
main( ) {
float X,W,L,M;
cout<<"Ingrese la Longitud de la Viga :";cin>>L;
cout<<"Ingrese el peso W :";cin>>W;
cout<<"Ingrese la distancia desde el extremo al Peso X :";cin>>X;
cout<<setiosflags(ios::fixed|ios::showpoint)
<<setw(10)<<setprecision(4);
M=X*W*(L-X)/L;
cout<<"El Maximo Momento Flexionante es:"<<M;
getch();
}
Aplicacin #7
//Dado un valor cualquiera convertirlo en Grados C o F segn sea el caso
#include"iostream.h"
#include"conio.h"
#include"math.h"
main(){
float valor;
short k=32;
float C,F,Fa,Ce;
double Grados;
cout<<"a)Ingrese un valor en grados Celsius ";cin>>C;
Fa=(9.0/5.0)*C+32;
cout<<"b)Ingrese un valor en Grados Farenheith ";cin>>F;
Ce=(5.0/9.0)*(F-32);
cout<<"\n\n\tEntonces las conversiones son "
<<"\nLos Grados Celsius a Farenheid son :"<<Fa
<<"\nY los Grados Farenheid a Celsius es :"<<Ce;
getch();
}
//Uso del Redondeo
#include <math.h>
#include <stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
float number = 123.54;
float down, up;
down = floor(number);
up = ceil(number);
cout<<"Numero Original "<<number<<endl
<<"El numero redondeo abajo "<<down<<endl
<<"El numero redondeo arriba "<<up;
getch();
} /*Numero Original 123.54
El numero redondeo abajo 123
El numero redondeo arriba 124
*/
LABORATORIO N2
Aplicacin N1
//Este programa va a ordenar tres numeros ingresado
//desde Teclado
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<ctype.h>
main(){
int a,b,c,temp;
cout<<"Ingrese el Valor a:";cin>>a;
cout<<"Ingrese el valor b:";cin>>b;
cout<<"Ingrese el valor c:";cin>>c;
if (a>c)
{temp=a;
a=c;
c=temp;}
if (b>c){temp=b;
b=c;
c=temp;}
if (a>b)
{temp=a;
a=b;
b=temp;}
cout<<"Los Numeros Ordenados son :\n"<<a<<setw(5)
<<setw(5)<<b<<setw(5)<<c;
}
Aplicacin N2
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<ctype.h>
imain()
{
float a,b,c,max,perim;
char opc;
do{
clrscr();
cout<<"Ingrese los valores de los lados: "<<endl;
cout<<"Ingrese el lado a: ";cin>>a;
cout<<"Ingrese el lado b: ";cin>>b;
cout<<"Ingrese el lado c: ";cin>>c;
if(a>b)
max=a;
else
max=b;
if(max<c)
max=c;
perim=(a+b+c);
if(perim>2*max)
cout<<"Forman un Triangulo \n";
else
cout<<"Los Lados no Forman Un Triangulo"<<endl;
cout<<"Desea otra Prueba[S][N]?:";
opc=toupper(getch());
}while(opc=='S');
getch();
}
Aplicacin N3
//PROGRAMA QUE CALCULA EL AREA DE UN TRIANGULO CONOCIENDO
//SUS TRES LADOS
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
#include<ctype.h>
main(){
float a,b,c,p;
double ap,at;
char opc;
do{clrscr();
cout<<"ingrese los lados del Triangulo:\n";
cout<<"Ingrese lado a:";cin>>a;
cout<<"Ingrese lado b:";cin>>b;
cout<<"Ingrese lado c:";cin>>c;
p=(a+b+c)/2;
ap=(p*(p-a)*(p-b)*(p-c));
if (ap){
at=sqrt(ap);
cout<<"\n El Area Total es :"<<setiosflags(ios::fixed|ios::showpoint);
cout<<setprecision(2)<<at<<endl;}
else{
cout<<"Los Lados No Determinan Un Triangulo";}//<<"\n Pruebe Nuevamente";}
cout<<"\nDesea Probar Nuevamente [S][N]:?";
opc=toupper(getch());
}while(opc=='S');
}
//El Manipulador ios::fixed fija formato para reales.
//El Manipulador ios::showpoint muestra punto decimal y decimales
//El Manipulador setw(nn) establece el ANCHO del dato
//El Manipulador setprecision(2) establece 2 decimales para un real.
Aplicacin N4
/*Programa que calcula la cantidad de a pagar por las Horas Trabajadas si La horas superan a
40 que son las normales se considera el resto como
Horas Extras y estas se pagan 50% mas que las normales*/
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#include<iomanip.h>
void main()
{char nombre[20],opc;
int horas;
float precio_hora,salario;
do{
clrscr();
cout<<"ingrese su nombre:";
cin.getline(nombre,20);//no ingrese espacio en blanco
cout<<"Ingrese cantidad de horas trabajadas:";
cin>>horas;
cout<<" Ingrese Precio por Hora:";
cin>>precio_hora;
if(horas<=40)
salario=horas*precio_hora;
else
salario=40*precio_hora+1.5*precio_hora*(horas-40);
cout<< " Su Nombre es : ";
cout.width(10);cout<<nombre<<endl;
cout<<setiosflags(ios::fixed|ios::showpoint);
cout<<"salario: "<<setw(10)<<setprecision(2);
cout<<salario<<endl<<endl;
cout<<"Desea Continuar [S][N]:";
do{
opc=toupper(getch());
}while(opc!='N'&& opc!='S');
}while(opc!='N');
clrscr();
cout<<"ESO ES TODO POR HOY !!!...";
getch();
}
aplicacin N5
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
#include<iomanip.h> //para manipuladores setw,setiosflags,etc
#define Pdsc0 0.10
#define Pdsc1 0.15
#define Pdsc2 0.20
#define Pdsc3 0.30
main(){
// Declarando Variables
float Compra,Dscto,PgImp,PgTotal,Q;
char rp;
do{
clrscr();
cout <<"Ingrese la Compra :";cin >>Compra;
Q=Compra;
if (Q >100)
Dscto = Q*Pdsc3;
else if(Q>60)
Dscto = Q*Pdsc2;
else if(Q>30)
Dscto = Q*Pdsc1;
else
Dscto = Q*Pdsc0;
//Calcular el Monto del Impuesto
PgImp =(Q-Dscto)*Imp;
//Calcular el Importe de la compra
PgTotal= (Q - Dscto+PgImp);
//Visualizar Resultados
cout<< endl;
cout << setiosflags(ios::fixed|ios::showpoint);//formato para Reales
cout <<"Compras :"
<<setw(10)<<setprecision(2)<<Q <<endl
<<"Descuento :"
<<setw(10)<<setprecision(2)<<Dscto <<endl
<<"Impuesto :"
<<setw(10)<<setprecision(2)<<PgImp <<endl
<<"Importe a pagar :"
<<setw(10)<<setprecision(2)<<PgTotal <<endl
<<"Otra compra [S][N]?:";// <<endl;
rp=toupper(getche());
}while(rp=='S');
}
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include<ctype.h>
main()
{
char Cod[8],Nom[25],opc;
int UnidaProd,Boni,DocProd,NumeUnid,PagDocProd,PagoUnida,a;
float SueldoBruto,SistSalud,AFP,Impuesto,Total,SueldoNeto;
do {
clrscr();
/*PROGRAMA DEL MARCO*/
gotoxy(2,2);cout<<'*';
a=3;
while(a<65)
{
gotoxy(a,2);cout<<'*';
gotoxy(a,24);cout<<'*';
gotoxy(a,12);cout<<'*';
gotoxy(a,22);cout<<'*';;
a=a+1;
}
gotoxy(65,2);cout<<'';
a=3;
while(a<25)
{
gotoxy(2,a);cout<<'*';
gotoxy(65,a);cout<<'*';
a=a+1;
}
gotoxy(65,24);cout<<'*';
gotoxy(2,24);cout<<'*';
/*FIN DEL MARCO*/
gotoxy(20,5);cout<<"DEPARTAMENTO DE CONTABILIDAD";
gotoxy(15,7);cout<<"CODIGO :";
gotoxy(15,9);cout<<"NOMBRES:";
gotoxy(15,11);cout<<"UNIDADES PROD. :";
gotoxy(15,13);cout<<"INGRESOS :";
gotoxy(45,13);cout<<"EGRESOS :";
gotoxy(15,15);cout<<"PAGO DOCENAPRODUC (S/.) :";
gotoxy(45,15);cout<<"SNP :";
gotoxy(15,17);cout<<"PU (S/.) :";
gotoxy(45,17);cout<<"IMP :";
gotoxy(15,19);cout<<"BONIF (S/.):";
gotoxy(15,21);cout<<"SB :";
gotoxy(45,19);cout<<"AFP :";
gotoxy(45,21);cout<< "TOTAL:";
gotoxy(25,23);cout<<"SALARIO NETO:";
/*INGRESO DE DATOS*/
gotoxy(23,7);cin>>Cod;cin.ignore();
gotoxy(24,9);cin.getline(Nom,25);
gotoxy(32,11);cin>>UnidaProd;
DocProd=(UnidaProd/12);
NumeUnid=(UnidaProd%12);
PagDocProd=DocProd*50;
PagoUnida=NumeUnid*3;
if(DocProd>=60)
{Boni=100;}
if(DocProd>40 && DocProd<60)
{Boni=50;}
if(DocProd<=40)
{Boni=0;}
SueldoBruto=(float)(PagDocProd+PagoUnida+Boni);
SistSalud=SueldoBruto*0.02;
AFP=SueldoBruto*0.01;
if(SueldoBruto>=700)
{Impuesto=SueldoBruto*0.20;}
if(SueldoBruto>400 && SueldoBruto<700)
{Impuesto=SueldoBruto*0.10;}
if(SueldoBruto<=400)
{Impuesto=0;}
Total=SistSalud+AFP+Impuesto;
SueldoNeto=SueldoBruto-Total;
/*DIRECCIONANDO VALORES*/
gotoxy(30,15);cout<<PagDocProd;
gotoxy(30,17);cout<<PagDocProd;
gotoxy(30,19);cout<<Boni;
gotoxy(30,21);cout<<SueldoBruto;
gotoxy(55,15);cout<<SistSalud;
gotoxy(55,17);cout<<Impuesto;
gotoxy(55,19);cout<<AFP;
gotoxy(55,21);cout<<Total;
gotoxy(40,23);cout<<SueldoNeto;
gotoxy(20,25);cout<<"DESEA CONTINUAR [S/N] :";
opc=getch();
}
while(tolower(opc)!='n');
}
/*Determinar la suma de los n primeros terminos de la serie :
2 3 4
1 X x x x
2! 3! 4!
Definir Objetos_Datos de entrada y salida
Objeto_datos de Entrada: Num Termninos:NumTerm
Valor de x (X)
Objeto_Dato de Salida : Suma de la Serie(Suma) */
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<ctype.h>
main(){
double Suma =0,X, trmino;
short NumTerm,Cont;
char rp;
for(;;){clrscr();
cout<<"Ingrese el Numero de trminos: ";cin>>NumTerm;
cout<<"Ingrese el valor de X: ";cin>>X;
Cont=1; //Contador de Trminos
termino=1;//primer termino de la serie
//Acumular el valor de los Trminos de la serie
while(Cont<=NumTerm)
{
Suma+= termino;
termino*=(X/Cont);
Cont++;
}
cout<<"\nLa Suma de los "<<NumTerm<<"Primeros Trminos Es :"
<<setiosflags(ios::fixed|ios::showpoint)
<<setprecision(10)<<Suma<<endl
<<"Otra Suma [S][N]: ";
rp=toupper(getch());
if(rp=='N')break;}
Aplicacin N6
/*Terna pitagorica entre los lados a , b y c
por ejemplo 3^2+4^=5^2
para valores de a y b <=25*/ A=3 B= 4 y C= 5
#include<iostream.h> A=5 B= 12 y C= 13
#include<math.h> A=6 B= 8 y C= 10
#include"conio.h" A=7 B= 24 y C= 25
main(){ A=8 B= 15 y C= 17
int A,B; A=9 B= 12 y C= 15
long C; A=10 B= 24 y C=
for(A=1;A<=25;A++) 26
for(B=A;B<=25;B++) A=12 B= 16 y C=
{ 20
C=floor(sqrt(A*A+B*B)); A=15 B= 20 y C=
if(C*C==(A*A+B*B)) 25
cout<<"A="<<A<<' '<<"B= "<<B<<' '<<" y C= "<<C<<endl;} A=18 B= 24 y C=
getch(); 30
} A=20 B= 21 y C=
29
Aplicacin N7
/*Programa que invierte una cantidad numerica */
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
main(){
long n;
int digito;
long invertido=0;
cout<<"Ingrese un Nmero de varias cifras:";
cin>>n;
do
{
digito = n % 10;
invertido =invertido*10 +digito;
n = n / 10;
}while (n>0);
cout<<"El Numero Invertido Es:"<<setw(8)<<invertido;
getch();
}
aplicacin N8
/*Programa que Imprime los Factores de un Numero Entero *
Definir Objetos Datos
Objetos Datos de Entrada :Numero (n)
:Numero (num)
Objeto Dato de Salida :Factores de un Numero (fact) */
#include<conio.h>
#include<iostream.h>
#include<ctype.h>
#include<iomanip.h>
main(){
LABORATORIO N3
Aplicacin N1
/*Un Programa simple sobre funciones */
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void circulo(float radio,double &Ar);
float r;
double Ar;
main(){
cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(3);
circulo(r,Ar);
getch();
}
void circulo(float R,double &Ar)
{ cout<<"Ingrese el Valor del radio: ";
cin>>r;
Ar=M_PI*pow(r,2);
cout<<"El Aea del Circulo es : "<<Ar;
}
Aplicacin N2
/* Area del Circulo y la Longitud de la Circunferencia */
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
#include<iomanip.h>
void circulo();
void circunferencia();
double radio;
main(){char rp;
for(;;){clrscr();
cout<<"Ingrese el valor del Radio: ";cin>>radio;
cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(3);
circulo();
circunferencia();
cout<<"\nOtro Calculo [S][N]; ";
rp=toupper(getch());
if(rp=='N')
break;}
getch();
}
void circulo()
{double c;
c=M_PI*(pow(radio,2));
cout<<"\n(*)El Area del Circulo es = "<<c;
}
void circunferencia()
{double d;
d=2*(M_PI)*radio;
cout<<"\n(*)La Longitud de la Circunferencia es=\a"<<d;}
Aplicacin N3
/* Programa que hace Uso de funciones que no es void para Realizar calculos */
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
#include<iomanip.h>
Aplicacin N4
#include<iostream.h>
#include<conio.h>
#include<math.h> //pongo math.h por que estoy utilizando la funcion pow();
void calcular(int n); //prototipo de la funcion calcular
main() //main es la funcion principal
{int ter;
gotoxy(17,2);cout<<"PROGRAMA QUE CALCULA EL TERMINO N \n";
gotoxy(16,3);cout<<"Y LA SUMA DE LOS N PRIMEROS TERMINOS\n";
gotoxy(15,4);cout<<"DE LA SERIE 3/5 - 5/8 + 8/13 - 13/21 + ...\n\n";
cout<<"Cuantos terminos quiere tener(N) : ";cin>>ter;cout<<endl<<endl;
calcular(ter); //aqui llamo a la funcion calcular
getch();
}
void calcular(int n) //definicion de la funcion calcular
{int p=3,q=5;
float s=(3.0/5);
if(n>1)
{ for(int i=2;i<=n;i++)
{q=(p+q);
p=(q-p);
s=s+p*pow(-1,i+1)/q*1.0;
}
}
cout<<"El termino N es : "<<p*pow(-1,n+1)<<"/"<<q<<endl<<endl;
cout<<"La suma de los N primeros terminos es : "<<s;
}
Aplicacin 5
/*Programa que Genera el codigo Ascci */
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
main(){
int x;
char ca;
for(x=32;x<=255;++x)
{
ca =x;
cout<<x<<"=>"<<ca<<"\t";}
getch();
}
aplicacin 6
//Programa que convierte coordenadas polares a rectangulares
#include<iostream.h>
#include <math.h>
#include <conio.h>
void polar(float x,float y, float&r,double &theta);
void obtrec(float &x,float &y);
void mostrar(float,double);
main(){
float distancia;
double angulo;
float x,y;
obtrec(x,y);
polar(x,y,distancia,angulo);
mostrar(distancia,angulo);
getch();}
Recursividad :
Aplicacin N1
/*Programa Hanoi, recurre a la funcion torres(), para encontrar la solucion
al juego.Acontinuacion se presenta para n=??*/
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
main(){ int n;
char opc;
for(;;){clrscr();
char a='A',b='B',c='C';
cout<<"Ingrese El Numero de discos: ";cin>>n;
cout<<"\n Solucion de las torres de Hanoi : ";
torres(n,a,b,c);
cout<<"\nOtra Generacion[S][N]: ";
opc=toupper(getch());
if(opc=='N')break;}
getch();
} Ingrese El Numero de discos: 3
Aplicacin N2
/* Calcula la Serie Fibonacci */
#include<iostream.h> Ingrese el Numero n: 21
#include<conio.h>
#include<ctype.h> El Termino 21 Corresponde
al Numero de Fibonacci :
long double fib(int n); 10946
long double fibo(int n); Otro Tremino [S][N]:
long n;
main(){
char opc;for(;;) { clrscr();
cout<<"Ingrese el Numero n: ";cin>>n;
cout<<"\nEl Termino "<<n<<" Corresponde al Numero de Fibonacci : "
<<fib(n);
cout<<"\nOtro Tremino [S][N]: ";
opc=toupper(getch());
if(opc=='N')break;}
getch();
}
LABORATORIO N4
Aplicacin N1
//Programa sobre vectores visualiza los valores ingresados y luego los ordena
#include<iostream.h>
#include<conio.h>
main(){
int aux,i,fc,n;
int a[20];
cout<<"Ingrese el Numero de elementos n= ";
cin>>n;
for(i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";
cin>>a[i];
}
clrscr();
for(i=1;i<=n;i++)
{cout<<"a["<<i<<"]="<<a[i]<<endl; }
getch();
do{ fc=0;
for(i=1;i<=n;i++)
if (a[i]>a[i+1])
{aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
fc=1; } }while(fc!=0);
clrscr();
for(i=1;i<=n;i++)
{cout<<"a["<<i<<"]="<<a[i]<<endl; }
getch(); }
if(A[ind]<menor)
{ menor=A[ind];
indMen=ind; }
}
clrscr();
for(ind=0;ind<NumElem;ind++) // los pares e impares
if(A[ind]%2==0){
par =par+1;}
else{
impar=impar+1;}
cout<<setw(40)<<"Arreglo Generado"<<endl;
for(ind=0;ind<NumElem;ind++)
cout<<setw(10)<<ind<<")"
<<setw(6)<<A[ind]<<endl;
4.-/*Formar un arreglo con los N primeros numeros primos y mostar los resultados
en forma de tabla.Validar que N este entre 1 y 100;*/
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<stdlib.h>
#define Maxi 100 //tamanhio del vector
main(){
unsigned //enteros positivos
Primos[Maxi],
ContPrimos,ContDivi,Numero,NumNatural,
NumPrimos;
ContPrimos=0;//contador de Numeros primos
NumNatural=2;//numero natural inicial
Primos[0]=1;//primer numero primo
do{ system("cls");
cout<<"Cantidad de Numeros Primos :";
cin>>NumPrimos;
}while(NumPrimos<1||NumPrimos>Maxi);
do{ ContDivi=0;
for(Numero =1;Numero<=NumNatural;Numero++)
if(NumNatural%Numero==0)
ContDivi++;
if(ContDivi==2) //es primo
{ContPrimos++;//contador de primos
Primos[ContPrimos]=NumNatural;}
NumNatural++;
}while(ContPrimos!=NumPrimos);
//mostrar tabla de resultados
cout<<setw(25)<<"Numero Natural N-->"<<setw(27)<<"Primo[N] "<<endl;
for(Numero=0;Numero<NumPrimos;Numero++)
cout<<setw(20)<<Numero+1
<<setw(30)<<(Primos[Numero])<<endl;
getch();}
#include<iostream.h>
#include<conio.h>
#include "ctype.h"
#include "iomanip.h"
main(){
char proved[10][16];
int i,cantidad[10],n;
float precio[10],Total[10],t=0;
char opc;
for(;;){clrscr();
gotoxy(2,5);cout<<"Ingrese N de PROVEEDORES: ";cin>>n;
for (i=0;i<n;i++) {
cout<<"Proveedor: ";
cin>>proved[i];
cout<<"Cantidad :";cin>>cantidad[i];
cout<<"Precio Unitario:";cin>>precio[i];}
for (i=0;i<n;i++){
Total[i]=cantidad[i]*precio[i];
t=t+Total[i];
} clrscr();
gotoxy(18,6);cout<<"Proveedores con Cantidad de Productos y su Costo Total ";
gotoxy(18,7);cout<<"***************************************** ";
gotoxy(2,8);cout<<setw(25)<<"Proveedor"<<setw(12)
<<" Precio Unitario "<<setw(12)<<"Cantidad"
<<setw(10)<<" Total"<<endl;
for(i=0;i<n;i++)
cout<<setw(10)<<"["<<i<<"]"<<setw(10)<<proved[i]<<setw(14)
<<precio[i]<<setw(14)<<cantidad[i]
<<setw(14)<<Total[i]<<"\n";
cout<<"Otro Reporte: [S][N]: ";
opc=toupper(getch());
if(opc=='N')break;}
getch();
}
main(){
int i,j,n,suma1=0,suma2=0,
sumafin=0,media,nota_1[20],nota_2[20];
do{ gotoxy(2,2);clreol();
cout<<"Total de Notas <2,30> :";
cin>>n;
}while(n<2 && n<20);
for(i=0;i<n;i++){
gotoxy(2,4);clreol();
cout<<"Ingrese notas_1 :";
cin>>nota_1[i];
}
for(j=0;j<n;j++){
gotoxy(2,6);clreol();
cout<<"Ingrese notas_2 :";
cin>>nota_2[j];
}
gotoxy(2,8);cout<<"Notas_1 ={ ";
for(i=0;i<n;i++)
cout<<setw(6)<<nota_1[i];
cout<<"}";
gotoxy(2,10);cout<<"Notas_2 ={ ";
for(j=0;j<n;j++)
cout<<setw(6)<<nota_2[j];
cout<<"}";
for(i=0;i<n;i++)
suma1=(suma1+nota_1[i]);
for(j=0;j<n;j++)
suma2 =(suma2 + nota_2[j]);
sumafin= (suma1 +suma2);
gotoxy(2,12);cout<<"La suma es :";
cout<<setw(6)<<sumafin;
getch();
}
6.- /*Colaboracin del Ing. Carlos Rafo.Las cadenas de caracteres,tienen las siguientes
operaciones longitud,
concatenacion,subcadenas e indexacion;en el programa siguiente efecta llamada
a la funcion mid(),con el fin de encontrar una subcadena de k caracteres,a
partir del elemento m */
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#define N 80
void put_cadena(char nombre[]);
void mid(char y[],char x[],int m,int k);
main(){
char x[N];
char nombre[N];//="Hola c Plus Plus";
clrscr();
cout<<"Ingrese Una cadena ";
cin.getline(nombre,N);
cout<<"\nLa Cadena es ";
put_cadena(nombre);
mid(nombre,x,5,6);
put_cadena(x);
getch();
}
7.-//Una Matiz que se genera aleatoriamente y dice que elemento es el mayor .*/
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void leer();
void muestra();
int mayorm();
int menorm();
int mam,mem;
int ima,jma,ime,jme;
int W[15][15];
int q;
main(){
char r;
cout<<"desea generar una matriz Respond S :";
cin>>r;
if(r=='S')
{
cout<<"\nDe que orden\n";
cin>>q;
if(q>2&&q<16)
leer();
else
{cout<<"el numero esta fuera del rango\n";
getch();
exit(0);
}
}
else
exit(0);
cout<<"\nla matriz es\n";
muestra();
cout<<"\nel mayor elemento es "<<mayorm();
cout<<"\nsu posicion es "<<(ima+1)<<","<<(jma+1)<<"Col";
cout<<"\nel menor elemento es "<<menorm();
cout<<"\nsu posicion es "<<(ime+1)<<","<<(jme+1)<<"Col";
getch();
}
void leer()
{
randomize();
int i,j;
for(i=0;i<q;i++)
for(j=0;j<q;j++)
W[i][j]=(random(65)+5);
}
void muestra()
{
int i,j;
for(i=0;i<q;i++)
{
for(j=0;j<q;j++)
{cout<<"\t"<<W[i][j];}
cout<<"\n";}
getch();
}
int mayorm()
{int i,j;
mam=0;
for(i=0;i<q;i++)
for(j=0;j<q;j++)
if(W[i][j]>mam)
{mam=W[i][j];
ima=i;
jma=j;
}
return(mam);
}
int menorm()
{
int i,j;
mem=70;
for(i=0;i<q;i++)
for(j=0;j<q;j++)
if(W[i][j]<mem)
{mem=W[i][j];
ime=i;
jme=j;
}
return(mem);
}
LABORATORIO N5
struct Alumno{
char codigo [10];
char nombres[30];
char apellidos[30];
};
struct Rendimiento{
Alumno ficha;
int p1,p2,p3,p4,pp;
}Notas[N];
main() {
int m;
register int i;
float s=0,S=0,promedio,pp;
/*Ingrese de Datos */
clrscr();
cout<<"\nIngrese Nmeros de Alumnos a Procesar =>";
cin>> m;
for(i=0;i<m;i++) {
cout<<"\n Ingrese Codigo : ";
gets(Notas[i].ficha.codigo);
cout<<"\n Ingrese Nombres =>";
gets(Notas[i].ficha.nombres);
cout<<"\n Ingrese Apellidos =>";
gets(Notas[i].ficha.apellidos);
cout<<"\n Ingrese La Notas =>"<<endl;
cout<<"Ingrese Nota1: ";
cin>>Notas[i].p1;
cout<<"Ingrese Nota2: ";
cin>>Notas[i].p2;
cout<<"Ingrese Nota3: ";
cin>>Notas[i].p3;
cout<<"Ingrese Nota4: ";
cin>>Notas[i].p4; }
for(i=0;i<m;i++){
S+=(Notas[i].p1+Notas[i].p2+Notas[i].p3+Notas[i].p4);
pp=S/4.0;
cout<<"\nEl Promedio de las Notas de:"
<<Notas[i].ficha.nombres<<" es: "<<pp<<endl;
S=0;
Notas[i].pp=pp;}
if(m>1){
for(i=0;i<m;i++)
s+=(Notas[i].pp); //1+Notas[i].p2+Notas[i].p3+Notas[i].p4);
promedio =s/(float)m;
cout<<"Promedio de las notas de los "
<<m<<" Alumnos es: "<<promedio<<endl;}
else
cout<<"\n NO hay mas alumnos que procesar: ";
getch(); }
aplicacin N2
/* Programa que calcula el Area de un Trapecio usando struct y funciones*/
#include<iostream.h>
#include<conio.h>
#include<ctype.h>
struct Trapecio{
int base,Base,altura;
void leer(int &b,int &B,int &h)
{base=b;Base=B;altura=h;
}
int calcular_Area()
{int Atrape;
Atrape=(base+Base)*altura/2;
return(Atrape);
}
};
main() {
int x,y,z;
char Rp;
for(;;){ clrscr();
Trapecio figura;
cout<<" Ingrese La base Menor del Trapecio = "; cin>>x;
cout<<" Ingrese La Base Mayor del Trapecio = "; cin>>y;
cout<<" Ingrese la Altura del Trapecio = "; cin>>z;
figura.leer(x,y,z);
cout<< " El Area del Trapecio es = "<<figura.calcular_Area()
<<" Unidades cuadradas "<<endl
<<"Pruebe con Otros Valores [S][N]";
Rp=toupper(getch());
if(Rp=='N')
break; }
}
Aplicacin N3
/*El siguiente programa resuelve el modulo de valores complejos haciendo uso de punteros */
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<ctype.h>
struct complejo {
double x,y;
};
{double c;
c=sqrt((z->x*z->x) +(z->y*z->y));
return (c);
}
float x,y;
main() {
char rp;
for(;;){clrscr();
cout<<"Ingrese el valor de x :";cin>>x;
cout<<"Ingrese el valor de y :";cin>>y;
complejo a={x,y};
cout<<"El Modulo Calculado es :"<<comp_abs(&a)
<<"\n Otro Calculo [S][N] :";
rp=toupper(getch());
if(rp=='N')break;}
Aplicacin N4
/*problema contiene la definicion de clases y los conceptos de privado y
publico.Este programa utiliza una clase para obtener valores
trigonometricos para un angulo cualquiera
*/
#include<iostream.h>
#include<math.h>
#include<ctype.h>
#include<conio.h>
const double G_A_RAD= (M_PI)/180;
class grado{
double valor_dato;
public:
void establecer_valor(double);
double obtener_seno(void);
double obtener_coseno(void);
double obtener_tangente(void);
double obtener_secante(void);
double obtener_cosecante(void);
double obtener_cotangente(void);
} grad;
Aplicacin N5
Aplicacin N6
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
class Fecha
{
private:
int mes;
int dia;
int anyo;
public :
Fecha(int =7,int=4,int =2001);//constructor
void estfecha(int,int,int);//una funcion miembro para copiar una fecha
void mostrarfecha(void);//una funcion miembro para desplegar una fecha
};
void Fecha::mostrarfecha(void)
{
cout<<"La fecha es ";
cout<<setfill('0')
<<setw(2)<<mes<<'/'
<<setw(2)<<dia<<'/'
<<setw(2)<<anho %100;//extrae los ultimos dos digitos
cout<<endl;
//return;
}
main(){
Fecha a,b,c(4,1,1998);//declara 3 digitos, inicializa 1 de ellos
b.estfecha(12,25,2002);//asigna los valores a los miembros de datos dde b
a.mostrarfecha();//desplegar los valores del objeto a
b.mostrarfecha();//desplegar los valores del objeto b
c.mostrarfecha();//desplegar los valores del objeto c
getch();}
La fecha es 07/04/01
La fecha es 12/25/02
La fecha es 04/01/98
TEMA: ASIGNACION DINAMICA DE MEMORIA
Aplicacin N1
/*asignacion dinamica consiste en reservar una serie de pocisiones de memoria
durante la ejcucion del programa.Para hacer la signacion dinamica se utilizan
los operadores :
new ->permite reservar memoria(equivale a la funcion malloc de c ....
delete -> restaura la memoria */
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip.h>
int main(){
int *array,a,n;
clrscr(); Ingrese el Primer Vector
cout<<"Introduce la Dimension del array "; Tamao del Vector 2
cin>>n;
array=new int[n]; Ingresar Valores del
if(n==0){cout<<"No hay suficiente memoria "; Vector
exit(1); 14
} 15
for(int x=0;x<n;x++){
cout<<"Introduce el valor "<<x<<":"; Ingrese el Segundo
cin>>array[x];} Vector
cout<<"\nLos valores Introducidos son: "; Tamao del Vector 2
for(int x=0;x<n;x++) {
cout<<"\nValor "<<x<<setw(3)<<array[x];} Ingresar Valores del
delete []array; Vector
getch(); } 17
18
Aplicacin N2
//Programa que suma vectores con tamanios dinamicos SUMA DE VECTORES
#include <iostream.h> 31 33
#include <conio.h>
struct vector { float *vect;
int tama;
};
int sumavectores(struct vector &r, struct vector &a, struct vector &b);
void ingresavector(struct vector &v);
main() {
struct vector r,a,b;
int i,error;
cout<<"\Ingrese el Primer Vector";
ingresavector(a);
cout<<"\Ingrese el Segundo Vector";
ingresavector(b);
error=sumavectores(r,a,b);
if(!error)
{cout<<"\n SUMA DE VECTORES "<<endl;
for(i=0;i<=(r.tama-1);i++)
cout<<r.vect[i] <<' ';
}
delete a.vect;
delete b.vect;
if(!error)
delete r.vect;
getch(); }
int sumavectores(struct vector &r,struct vector &a,struct vector &b) {
int error,i;
error=0;
if(a.tama==b.tama){
r.vect=new float[a.tama];
r.tama=a.tama;
for(i=0;i<=(r.tama-1);i++)
{ r.vect[i]=a.vect[i]+b.vect[i];}
}
else {
error =1;
cout<<"\nError: Los tamannios de los vectores deben ser iguales "; }
return error;
}
void ingresavector(struct vector &v) {
int tama,i;
cout<<"\nTamao del Vector ";
cin>>tama;
v.vect=new float[tama];
v.tama=tama;
cout<<"\nIngresar Valores del Vector "<<endl;
for(i=0;i<=(v.tama-1);i++)
cin>>v.vect[i];cout<<endl; }
Aplicacin N3
//Calificaciones
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
main(){
float numcalif;
short i;
cout<<"Introduzca el Numero de calificaciones a procesar ";
cin>>numcalif;
float *calif=new float[numcalif]; // se crea el arreglo
float S=0.0,Promedio;
for(i=0;i<numcalif;i++)
{ cout<<"Introduzca una Calificacion ";
cout<<i<<" : ";cin>>calif[i]; }
cout<<"\nSe creo un arreglo para "<<numcalif<<" Numeros Reales \n";
cout<<"Los valores almacenados en el arreglo son : ";
for(i=0;i<numcalif;i++)
cout<<"\n "<<i<<": Nota "<<calif[i];
cout<<endl;
cout<<"La Suma y Promedio de las Notas : ";
for(i=0;i<numcalif;i++)
S+=calif[i];
Promedio =S/numcalif;
cout<<"La Suma es "<<S<<" \nY el Promedio es "<<Promedio;
delete []calif; // devuelve el espacio de almacenaje al monton
getch();}
MISCELNEA
Problemas propuestos en Practicas y examens tomados en la UNI
for(k=n;k>=2;k--)
{ for(i=1;i<=k-1;i++)
{ if(a[k][k]<a[i][i])
{ temp=a[k][k];
a[k][k]=a[i][i];
a[i][i]=temp;}
}
}
gotoxy(7,10);cout<<"\nLa Matriz con la diagonal Ordenada es : "<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{gotoxy(6*j,12+i);cout<<a[i][j];}
}
for(i=1;i<=n;i++)
D[i]=a[i][i];
cout<<"\nLa diagonal con los elementos es : D[i] :";
for(i=1;i<=n;i++)
cout<<setw(3)<<D[i];
getch();
}
3.- /*calcular la media,la varianza y desviacion standar ede n Valores (Mximo 37)
aplicando las formulas:
Media(X)=sigma desde i=1 hasta n (Xi)/n
Defina Ud los Objetos Datos */
#include"iostream.h"
#include"conio.h"
#include"iomanip.h"
#include"math.h"
#define Max 37
int main()
{ short N,i;
float suma,media,varianza,dstandar,X[Max];
clrscr();
do{cout<<"Ingresar numero de valores<1.."
<<Max<<">: ";
cin>>N;
cin.ignore();//ignora el enter
}while(N>Max);
for(i=1;i<=N;i++)
{cout<<"Ingresar valor ["
<<setw(2)<<i<<" ]:";
cin>>X[i];
cin.ignore();
}
//Hallar la media
suma =0.0;
for(i=1;i<=N;i++)
{suma+=X[i];
media=(float)suma/N;}
//Determinar la varianza y desviacion standar
suma=0;
for(i=1;i<=N;i++)
suma+=pow((X[i]-media),2);
varianza=(float)suma/N;
dstandar=pow(varianza,0.5);//raiz cuadrada
//Mostrar resultados
cout<<endl
<<setiosflags(ios::fixed|ios::showpoint);
cout<<"Media :"
<<setw(10)<<setprecision(3)<<media<<endl
<<"Varianza :"
<<setw(10)<<setprecision(3)<<varianza<<endl
<<"Desv.standar :"
<<setw(10)<<setprecision(3)<<dstandar<<endl
<<endl;
getch();}
4. Genere al azar nmeros comprendidos en el rango del 1 a 79 en un numero de 17 y
luego guardarlos en un Vector de la siguiente formula
1 / 3 n 3 n
79
1 2n 4 n 2
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
int i,n;
float A[50];
float leer(int n);
void show(float A[50]);
main( ){ randomize();
for (i=1;i<=17;i++){
n=random (79-1+1)+1; {
A[i]=leer(n); } }
cout<<"el vector es:";
show(A); }
float leer(int n){
return (pow(n,3)-n)/(3.0*(2*pow(n,4)-pow(n,2))); }
void show(float A[50]){
for (i=1;i<=17;i++){
cout<<A[i]<<" "; } }
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
void matriz(int a[20][20], int n){int i, j;
randomize();
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=random(9-1)+1;}}}
main(){
int a[20][20], diag2[20];
int n=0;
do{cout<<"ingrese la dimension de la matriz: "; cin>>n;
}while(n<=0);
matriz(a,n);
mostrar(a,n);
sec_diag(a,diag2,n);
ordenar(diag2,n);
cout<<endl<<"Su m.c.m. es: "<<mcm(diag2,n)<<endl;
getch();}
6. /*MENU DE MATRIXES*/
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
void crear(int matriz[20][20],int *n);
void central(int matriz[20][20],int aux[20],int n);
void ultima(int matriz[20][20],int aux[20],int n);
void mayor(int matriz[20][20],int aux[20],int n);
void menor(int matriz[20][20],int aux[20],int n);
void mostrar(int matriz[20][20],int n);
main(){
int matriz[20][20];
int aux[20];
int n;
char opc;
do{clrscr();
gotoxy(30,5); cout<<"MATRICES ALEATORIAS ";
gotoxy(30,6); cout<<"====================";
gotoxy(10,9); cout<<"1.- Crear";
gotoxy(10,10); cout<<"2.- Intercambiar la columna central con la fila central";
gotoxy(10,11); cout<<" de una matriz cuadrada";
gotoxy(10,12); cout<<"3.- Intercambiar la ultmima columna con la ultima fila";
gotoxy(10,13); cout<<"4.- Intercambiar la fila mayor con la diagonal
principal";
gotoxy(10,14); cout<<"5.- Intercambiar la columna menor con la diagonal
principal";
gotoxy(10,15); cout<<"6.- Salir";
gotoxy(30,20); cout<<"Ingrese opciones=>";
cin>>opc;
switch (opc){
case '1': crear(matriz,&n);break;
case '2': central(matriz,aux,n);break;
case '3': ultima(matriz,aux,n);break;
case '4': mayor(matriz,aux,n);break;
case '5': menor(matriz,aux,n);break;
}
}while(opc!='6');}
void crear(int matriz[20][20],int *n) {
int i, j;
do { clrscr();
gotoxy(5,2);
cout<<"Ingrese el orden de la matriz(impar): ";
cin>>*n;
} while ((*n<=0) || ((*n%2)==0));
randomize();
for(i=1;i<=*n;i++)
for(j=1;j<=*n;j++)
matriz[i][j]=random(9-1)+1;
mostrar(matriz,*n); }
void central(int matriz[20][20],int aux[20],int n) {
int mid, i;
mid=((n/2)+1);
clrscr();
for(i=1;i<=n;i++)
aux[i]=matriz[i][mid];
for(i=1;i<=n;i++)
if(i!=mid)
matriz[i][mid]=matriz[mid][i];
for(i=1;i<=n;i++)
matriz[mid][i]=aux[i];
mostrar(matriz,n); }
void ultima(int matriz[20][20],int aux[20],int n)
{ int i;
clrscr();
for(i=1;i<=n;i++){
if(i!=n){
aux[i]=matriz[i][n];
matriz[i][n]=matriz[n][i];
matriz[n][i]=aux[i];
}
}
mostrar(matriz,n);
}
for(i=1;i<=n;i++)
{
if(i!=fmax)
{ aux[i]=matriz[i][i];
matriz[i][i]=matriz[fmax][i];
matriz[fmax][i]=aux[i];}}
mostrar(matriz,n);}
void menor(int matriz[20][20],int aux[20],int n)
{ int i, j, min=0, cmin=1, temp;
clrscr();
for(i=1;i<=n;i++)
min+=matriz[i][1];
for(i=2;i<=n;i++)
{ temp=0;
for(j=1;j<=n;j++)
temp+=matriz[j][i];
if(temp<min)
{ min=temp; cmin=i; }
}
for(i=1;i<=n;i++)
{if(i!=cmin)
{ aux[i]=matriz[i][i];
matriz[i][i]=matriz[i][cmin];
matriz[i][cmin]=aux[i];}
}
mostrar(matriz,n);}
void mostrar(int matriz[20][20],int n){
int i, j;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<matriz[i][j]<<" ";
cout<<endl; }
getch(); }
main() {
char tecla;
double variable;
int grado,i;
do {
clrscr();
cout << "P(n) = A(n)X^n+A(n-1)X^n-1+A(n-1)X^(n-2)+... +A(1)X^1+A(0)X^0\n\n";
cout << "Ingrese el grado del polinomio \"n\" = ";cin >> grado;
double* coeficiente = new double[grado+1]; /*definimos un vector a la medida donde se
almanenaran los coeficientes del polinomio*/
for(i=grado;i>=0;i--) {
cout << "Ingrese el coeficiente A("<< i << ") del polinomio : ";
cin >> coeficiente[i];
}
cout << "\nIngrese el valor de la variable X : ";cin >> variable;
cout << "\nEl resultado luego de evaluar el polinomio es : "
<< polinomio(variable,grado,coeficiente);
delete[] coeficiente; //borrando el vector dinamico
cout << "\nDesea continuar (S/N) : ";cin >> tecla;
} while(toupper(tecla) == 'S');
clrscr();
cout << "El programa ha finalizado";
getch();
}
int i, k, N, M;
float Ma, Mg, Mh;
main(){
long A[100];
clrscr();
cout<<"Ingrese el numero de elementos del arreglo: ";cin>>N;
randomize();
cout<<"\nLa media aritmetica es: "<<M_aritmetica(A, Ma)
<<"\nLa media geometrica es: "<<M_geometrica(A, Mg)
<<"\nLa media armonica es: "<<M_armonica(A, Mh);
getch();}
int x,y,z,M;
system("cls");
cout<<"INGRSE EL VALOR DE a:";cin>>x;
cout<<"INGRSE EL VALOR DE b:";cin>>y;
cout<<"INGRSE EL VALOR DE c:";cin>>z;
cout <<"el MAYOR de a="<<x<<" b="<<y<<"c="<<z<< "es "<<' '<<min(&x,&y,&z,M);
getch();
}
/*Programa que usa punteros a char, en este caso se trata de del conocido
programa del zodiaco, Colaboracin de Carlos Rafo */
#include<iostream.h>
#include<conio.h>
#define N 12
#include<stdlib.h>
#include<ctype.h>
main(){
int dd,mm,b;char rp; for(;;){
system("cls");
do{
cout<<"Ingrese la Fecha de Nacimiento :"<<endl
<<"\n Dia ...";cin>>dd;
cout<<"\n Mes ...";cin>>mm;
}while(dd>meses[mm-1]);
b=signo(dd,mm);
cout<<"\nSu SIGNO es :"<<nombre(b);
cout<<endl
<<"Otro signo [S][N] :";
rp=toupper(getch());
if(rp=='N')break;}
9.- #include<iostream.h>
#include<conio.h>
#include"time.h"
#include"stdlib.h"
main(){
int lista[50];
int ind,n,dd;
system("cls");
cout<<"Ingrese el valor del Numero de Elementos : ";cin>>n;
cout<<"\nElementos Ingresados : "<<endl;
randomize();//permite la generacin de nuevos Numeros
for(ind=0;ind<n;ind++){
dd=rand()%80;
lista[ind]=dd;}
for(ind=0;ind<n;ind++)
cout<<"\n El elemento "<<ind<<" es : "<<*(lista+ind);
cout<<"\nLa direccin que apunta al vector lista[] :"<<&(lista);
getch(); }
/* Como puede apreciar para acceder a los elementos del array es:
*(lista+ind)
Esto deja constancia de que lista es la direccion de comienzo del array.
Si a esta direccin le sumamos 1,que quiere decir que si ind vale 1,
nos situamos en el siguiente entero de la lista, esto es
*(lista+1) y lista[1]representan el mismo valor. Notar que un incremento
de uno sobre una direccion equivale a vanzar no un byte, sino un numero
de bytes igual al tamanio de los objetos al que se esta tratando. entonces
es razonable pensar :
*(array+indice) o array[indice] es lo mismo
Puesto que *(lista+0) y lista[0], siendo "p" una variable de tipo puntero,
la asignacion: p=&lista[0] es la misma que la signacion p=lista.
Esto indica que la direccin de comienzo de un array es la misma que la
del primer elemento. Por otra parte, despus de haber efectuado la
asignacin p= lista, las siguientes expresiones dan lugar a idnticas
resultados:
p[ind],*(p+ind),lista[ind],*(lista+ind)
sin embargo , hay una diferencia entre el nombre de un array y un puntero.
el nombre de array es una constante y un puntero es una variable,
esto quiere decir que las operaciones:
lista=p 0 lista++ no son correctas
p=lista 0 p++ si son correctas */
switch(opc)
{
case'1':crear(a,&m);break;
case'2':buscar(a,m);break;
case'3':listar(a,m);break;
case'4':ordenar(a,m);break;
case'5':modificar(a,m);break;
case'6':adicion(a,&m);break;
case'7':eliminar(a,&m);break;
}
}while (opc!='8');
}
main(){
int num;
LeerN(num);
if ( primo (num))
cout<<"El Numero "<<num<<"Es Primo \n";
else
cout<<"El Numero "<<num<<"No es Primo \n";
cout<<"\nLos Primos Gemelos de los primeros 400 Son \n";
for( int j=1; j<=400; j=j+2)
if ((primo(j)==1)&&(primo(j+2)==1))
cout<<j<<' '<<j+2<<endl;
getch();
}
main(){
char c ; system("cls");
cout<<"\nIngrese Seno/Coseno : ";
c=getchar();
if(c=='S'||c=='s')
graph_1(sin);
else{
if(c=='C'||c=='s')
graph_1(cos);
else cout<<"\nInconsistente ";
}
getch();
}
void graph_1(F f)
{
float a;
int y;
for(a=0.0;a<3.0*M_PI;a+=0.50){
y=30+(int)20.0*(*f)(a);
tabulador(y);
cout<<"*\n";
}
}
void tabulador(int x)
{
for(int i=1;i<=x;i++)
cout<<' ';
}
13.- /*Una Integral . Suponga que una funcion f es positiva en un intervalo D={a<=x<=b}
Deseamos calcular el area bajo la curva y=f(x) entre x=a y x=b
Desarrollado por Daniel Osorio Maldonado*/
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
#include<stdlib.h>
main(){
int i,N;
float a,b,Area,R,SUM,x,h;
system("cls");
cout<<"Ingrese los Valores de a ";cin>>a;
cout<<"Ingrese los Valores de b ";cin>>b;
cout<<"Ingrese el # de Secciones :";cin>>N;
cout<<"Los Valores Parciales son:"<<endl
<<"Suma de A "<<FUN(a)<<endl
<<"Suma de B "<<FUN(b);
cout<<"\nSea La funcion de finida :FUN=2*x*x-5*x+3 ";
FUN(x);
h=(b-a)/N;
SUM=FUN(a)+FUN(b);
for(i=1;i<=N ;i++)
SUM=SUM+2*FUN(a+i*h);
Area=(h*SUM)/2;
cout<<"\nEl Area de la seccion es :"<<Area;
getch();
}
14.- /*Escriba un programa que analice los numeros del 0 - 99,de tal forma
que encuentre los nuemeros tales que la diferencia entre el numero inicial
y el que se forma al invertir sus cifras sean 27 */
#include<iostream.h>
#include<conio.h>
main(){
int N1,N2,N,NAUX,NUME,C27=0;
//cout<<"Ingrese un Numero :";cin>>N;
for(N=0;N<=99;N++){
N1=N/10;
N2=N-N1*10;
NAUX=N2*10+N1;
//Calculamos la diferencia entre :
NUME=N-NAUX;
if(NUME==27){
C27++;
cout<<':'<<"N ="<<N<<' '<<NAUX;}}
cout<<"\nLos Numeros que resultan igual a 27 son :"<<C27;
getch();}
15.- /*se ha lanzado al aire una moneda veinte veces si el nmero de caras es mayor que el
nmero de
sellos, emitir un mensaje que diga "Suertudo!", caso contrario "Sin Suerte". */
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
main(){
int m,veces,cara=0,sello=0;
randomize();
for (veces=0; veces<20; veces++) {
m=random(95)/10;
if (m%2==0)
cara++;
else
sello++;
} // fin del for
cout<<"La moneda fue lanzada 20 veces\n";
cout<<"cayo CARA "<<cara<<" veces.\n";
cout<<"cayo SELLO "<<sello<<" veces.\n";
if (cara>sello)
cout<<"SUERTUDO\n";
else
cout<<"SIN SUERTE\n";
getch();}
16.- /*se tiene un nmero de varias cifras, se quiere averiguar cuantas cifras pares y cuantas
impares
lo componen. Luego hallar la suma de las cifras colaboracin: Vasques Paragrulla */
#include<iostream.h>
#include<conio.h>
main(){
long N;
int dpar=0, dimpar=0,digito,total=0,suma=0;
cout<<"Ingrese un # de varias cifras : ";
cin>>N;
while (N>0){
digito=N%10;
if (digito%2==0)
dpar++;
else
dimpar++;
total++;
suma=suma+digito;
N=N/10;
}
cout<<"\ndigitos pares = "<<dpar<<endl
<<"\ndigito impares = "<<dimpar<<endl
<<"\nLa suma de los digitos es= "<<suma<<endl
<<"\nTotal digitos ingresados = "<<total;
getch();
}
cout<<' '<<"1/"<<m;
}
}
}
void valcen( )
{
int m=0,f=3;
for (int i=1;i<=27;i++)
{ m=m+f;
f=f+2;
if (i==(27/2))
cout<<"\n valor central : "<<' '<<"1/"<<m;
}
}
void sumlat()
{
int m=0,f=3,li,lf;
for (int i=1;i<=27;i++)
{ if (i==(27/2))
{ li=m;
cout<<"\nsuma de laterales del valor central: "<<' '<<"1/"<<li<<"+";
}
m=m+f;
f=f+2;
if (i==(27/2)+1)
{lf=m;
cout<<"1/"<<lf<<"="<<((1.0/li)+(1.0/lf));
}
}
}
main() {
imprime();
valcen();
sumlat();
getch(); }
19.- /*los primeros 27 terminos de la serie son :0 1/3 1/8 1/15 1/24 1/35 1/48 1/63 1/8
0 1/99 1/120 1/143 1/168 1/195 1/224 1/255 1/288 1/323 1/360 1/399 1/440 1/483 1
/528 1/575 1/624 1/675 1/728 valor central : 1/224
suma de laterales del valor central: 1/195+1/255=0.00904977*/
M=random(Ls-Li+1)+Li;
if(N==M)
cout<<"Ud. Acerto ";
else
cout<<"Ud. No acerto ";
getch();}
#define n 6
void imprimir();
void leer();
void suma_may();
void suma_menor();
void resultante();
float sum_may[10];
float sum_men[10];
int A[6][6],i,j,mayo=0,menor=800;
int colM;
int colm;
main(){
//cout<<"Ingrese el orden de la matriz:";cin>>n;
cout<<"La matriz generada es:\n";leer();
suma_may();
suma_menor();
cout<<"\n\nLa matriz conbinada es:\n";resultante();
getch();
}
void leer()
{
randomize();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
A[i][j]=rand()%100;
imprimir();
}
void imprimir()
{
for(i=0;i<n;i++){
for(j=0;j<n;j++)
cout<<setw(5)<<A[i][j];cout<<"\n"; }
}
void suma_may()
{
sum_may[j]=0;
for(j=0;j<n;j++)
for(i=0;i<n;i++)
sum_may[j]=A[i][j]+sum_may[j];
for(j=0;j<n;j++){
if(sum_may[j]>mayo) { mayo=sum_may[j]; colM=j;} }
cout<<"\nLa suma Mayor es:"<<mayo;
cout<<"\nLa columna de dicha suma es:"<<colM+1;
void suma_menor()
{
sum_men[j]=0;
for(j=0;j<n;j++)
for(i=0;i<n;i++)
sum_men[j]=A[i][j]+sum_men[j];
for(j=0;j<n;j++){
if(sum_men[j]<menor) { menor=sum_men[j]; colm=j;} }
cout<<"\n\nLa suma Menor es:"<<menor;
cout<<"\nLa columna de dicha suma es:"<<colm+1;
}
void resultante(){
for(i=0;i<n;i++){
for(j=0;j<n;j++) {
if(j==colM){ cout<<setw(5)<<A[i][colm];if(colM==6)cout<<"\n";}
if(j==colm){ cout<<setw(5)<<A[i][colM];if(colm==6)cout<<"\n";}
if(j!=colM && j!=colm)
cout<<setw(5)<<A[i][j]; }
cout<<"\n"; }
22.=/* Campeonato de Futbol INTERFACULTADES :Se juega con 06 equipos cada uno juega
juega 6 partidos.
Se desea "simular" los resultados de dicho campeonato generando aleatoriamente el
Numero de goles que "consigue" y "recibe" cada equipo en cada partido .el ganador sera
aquel que tenga la mayor dierencia de goles al final del campeonato.si en caso no
hubiera un solo ganador, dar el mensaje correspondiente.Asumir que en un partido de no
puede haber mas 12 goles recibidos o anotados por un equipo
DEFINIR Objetos_Datos Entrada y salida
Objeto_Datos de Entrada:Ninguno
Objeto_Datos de Salida :Nombre de los equipos (Nombre[])
goles a favor por equipo(Equipo[])
goles en contra por equipo(Equipo[])
diferencia de goles por equipo (DifGoles[])
nombre del equipo ganador (Nombre[ganador])
mensaje*/
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
//Definicion de constantes
#define NumEquipos 6
#define GolesMax 12
#define False 0
#define True 1
//funcion principal
main(){
short Equipo[NumEquipos][2]; //arreglo de goles a favor y en contra de cada equipo
int DifGoles[NumEquipos]; //arreglo de diferencia de goles de cada equipo
char Nombre[NumEquipos][40]= //arreglo de nombres
{"FACULTAD MECANICA",
"FACULTAD CIVILES",
"FACULTAD ARQUITECTU",
"FACULTAD IND-SISTEMA",
"FACULTAD CIENCIAS",
"FACULTAD ECONOMIA"};
short cont,ganador,partido,mayor,TipoDeGol;
short ganauno;
char opc;
for(;;){clrscr();
//Inicializar a todos los equipos con 0 goles
for(cont=0;cont<NumEquipos;cont++)
for(TipoDeGol=0;TipoDeGol<2;TipoDeGol++)
Equipo[cont][TipoDeGol]=0;
//Escribir titulos
clrscr();
cout<<setw(15)<<"Equipos"<<setw(19)<<"G.Favor"
<<setw(15)<<"G.Contra"<<setw(15)<<"Diferencia"
<<endl;
//Escribir resultados
for(cont=0;cont<NumEquipos;cont++)
{
cout<<setw(2)<<(cont+1)<<')'
<<setiosflags(ios::left)
<<setw(20)<<Nombre[cont]
<<resetiosflags(ios::left)
<<setw(10)<<Equipo[cont][0]
<<setw(15)<<Equipo[cont][1]
<<setw(15)<<DifGoles[cont]
<<endl;
}
cout<<endl;
if(ganauno)
cout<<"Equipo Ganador :"<<Nombre[ganador];
else
cout<<"Hay empate para el primer Lugar ";
cout<<"\nOtra Prueba [S][N]:";
opc=toupper(getch());
if(opc=='N')break;}
}
Resultado
/* Equipos G.Favor G.Contra Diferencia
1)FACULTAD MECANICA 39 31 8
2)FACULTAD CIVILES 37 39 -2
3)FACULTAD ARQUITECTU 30 46 -16
4)FACULTAD IND-SISTEMA 32 26 6
5)FACULTAD CIENCIAS 26 44 -18
6)FACULTAD ECONOMIA 31 29 2
Equipo Ganador :FACULTAD MECANICA
Otra Prueba [S][N]:*/
23.- /* Escriba un programa que lea un entero positivo N>=10 y calcule el producto
(1/1^2)X(3/2^2)X(5/3^2)X....2N-1/N^2 */
#include"iostream.h"
#include"iomanip.h"
#include "ctype.h"
#include"conio.h"
#include"math.h"
main(){
double P=1.0;
long N,M=1.0 ;
float denominador,numerador;
unsigned conta=1;
cout<<"Ingrese el Numero de Terminos :";cin>>N;
while(conta<=N){
denominador=pow(M,2);
numerador=2*M-1;
P=P*numerador/denominador;
M=M+1;
conta++;
}
cout<<"\nEl Producto es :"<<P;
getch(); }
#include<iostream.h>
#include<conio.h>
main(){
float sueldo,neto,descuento;
int faltos;
neto=planilla(sueldo,faltos,&descuento);
cout<<"DESCUENTOS= "<<descuento<<endl;
cout<<"NETO A PAGAR="<<neto; getch(); }
main(){
int i,cant;
char cadena[200] ;
char arcad[50][LMAX];
char pmc;
for(;;) {system(cls);
cout<<"\n\ningresar una frase(cadenas)\n\n";
gets(cadena);
cant=separar(arcad,cadena);
cout<<"\n\nnumero de palabras: "<<cant<<"\n\npalabras:\n\n ";
for(i=0;i<cant;i++)
cout<<arcad[i]<<"\n";
cout<<"\n\ndesa separar otras frase? [S][N] " ;
pmc=toupper(getch()) ;
if(pmc=='N')
break; }
getch(); }
main(){
serie a,b,n;
ingresar(n);
mostrar(a,b,n);
getch();
}
void mostrar(serie&a,serie&b,serie&n){
int t;
clrscr();
t=n.x;
cout<<"Los "<<t<<" primeros terminos de la serie son: "<<endl;
for(int i=0;i<t;i++){
a.x=(2*i)+1;
b.x=(2*i)+3;
cout<<a.x<<"/"<<b.x<<" , ";}}
30./*Programa que simula los lados de un triangulo isosceles calcula el baricentro ..*/
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
void leer(int &x,int &y);
void imprimir(int x,int y);
float area(int x,int y,int z,int w);
float angulo(int x,int y,int z,int w);
void baricentro(int x,int y,int z,int w,int p,int q);
void main()
{randomize();
int a,b,c,d,m,n;
float A,B,C,p,s,ang;
int i=0;
do{
leer(a,b);
leer(c,d);
leer(m,n);
A=sqrt(pow(a-c,2)+pow(b-d,2));
B=sqrt(pow(a-m,2)+pow(b-n,2));
C=sqrt(pow(m-c,2)+pow(n-d,2));
if(A==B)i=1;
if(A==C)i=1;
if(B==C)i=1;
if((A==0)||(B==0)||(C==0))i=0;
}while(i==0);
cout<<" EL PRIMER PUNTO ES : ";
imprimir(a,b);
cout<<" EL SEGUNDO PUNTO ES : ";
imprimir(c,d);
cout<<" EL TERCER PUNTO ES : ";
imprimir(m,n);
cout<<"LOS LADOS DEL TRIANGULO SON : "<<"A = "<<A<<" B= "<<B<<" C=
"<<C;
p=((A+B+C)+0.0)/2;
s=area(A,B,C,p);
cout<<"\n"<<" EL AREA DELTRIANGULO ES IGUAL: "<<s;
ang=angulo(A,B,C,s);
cout<<"\n"<<"EL ANGULO ES : "<<ang;
baricentro(a,c,m,b,d,n);
getch();
}
void leer(int &x,int &y)
{
x=rand()%98;
y=rand()%98;
}
void imprimir(int x,int y)
{cout<<"\n"<<" ( "<<x<<" ; "<<y<<" ) "<<"\n";
}
float area(int x,int y,int z,int w)
{float S;
S=sqrt(w*(w-x)*(w-y)*(w-z));
return(S);
}
float angulo(int x,int y,int z,int w)
{float an;
if(x==y)
{an=asin(2.0*w/(x*z));
}
if(x==z)
{an=asin(2.0*w/(x*y));
}
if(y==z)
{an=asin(2.0*w/(y*x));
}
return(an);
}
void baricentro(int x,int y,int z,int w,int p,int q)
{float X,Y;
X=(x+y+z+0.0)/3;
Y=(w+p+q+0.0)/3;
cout<<"\n"<<"LA COORDENADA DEL BARICENTRO ES : ";
imprimir(X,Y);
}
if(suma1>suma2){
cout<<"El ganador es: "<<nom1;}
if(suma2>suma1){
cout<<"El ganador es: "<<nom2;}
if(suma2==suma1){
cout<<"Empataron ";}
cout<<mensaje;
if(toupper(getch())=='N')break;
}}
32. /*programa que permite crear una matriz para despus crear un vector que puede sumar
a cada
uno de los elementos de la matriz*/
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
main() {
int vectorsuma[20][20];
int vector1[20][20];
int vector2[20][20];
int n,i,j;
cout<<"Ingrese la matriz cuadrada n:";
cin>>n;
for( i=0;i<n;i++)
{ for( j=0;j<n;j++)
{cout<<"Ingrese los valores del vector1 ["<<i+1<<"],["<<j+1<<"]:";
cin>>vector1[i][j];
}
}
cout<<endl;
for( i=0;i<n;i++)
{ for( j=0;j<n;j++)
{cout<<"Ingrese los valores del vector2["<<i+1<<"],["<<j+1<<"]:";
cin>>vector2[i][j];
}
}
cout<<endl;
cout<<"entonces el vectorsuma sera:"<<endl;
for( i=0;i<n;i++)
{ for( j=0;j<n;j++)
{cout<<" vectorsuma ["<<i+1<<"],["<<j+1<<"]:";
cout<<vector1[i][j]+vector2[i][j];
}
cout<<endl;
}
cout<<endl;
//mostrando las matrices:
cout<<"las matrices son:"<<endl ;
for( i=0;i<n;i++)
{for( j=0;j<n;j++)
{ cout<<setw(5)<<vector1[i][j];
}
cout<<endl;
}
cout<<endl;
for( i=0;i<n;i++)
{for( j=0;j<n;j++)
{ cout<<setw(5)<<vector2[i][j];
}
cout<<endl;
}
cout<<endl;
for( i=0;i<n;i++)
{for( j=0;j<n;j++)
{ cout<<setw(5)<<vector1[i][j]+vector2[i][j];
}
cout<<endl;
}
getch();
}/* Como tarea genere Ud. La Matriz de Manera aleatoria y genere el vector aleatoriamente */
33. //Programa que usa punteros a estructuras en este caso halla un modulo y la
//suma de sus elementos
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
struct complex{
double x,y;
void leerxy(double a,double b);
double comp_abs(complejo *Z);
double sumaxy(complejo *w);
};
void complejo::leerxy(double a, double b)
{x=a;y=b;}
main()
{
float p,q,z;
complex comp1;
cout<<"Ingrese el primer valor ";cin>>p;
cout<<"Ingrese el segundo valor ";cin>>q;
comp1.leerxy(p,q);
complejo P={p,q};
cout<<"El Modulo es "<<P.comp_abs(&P)<<endl
<<"La suma es "<<P.sumaxy(&P);
getch();
}
35. /*programa que genera valores aleatorios y son almacenados en un vector realizando:
a) Los numeros por encima del promedio.
b) Los numeros multiplos de cinco.
c) La suma de los numeros.
d) El promedio de los valores almacenados
e) El menor numero . */
f) Los numeros que se repiten
#include<stdlib.h>
#include<time.h>
#include<iostream.h>
#include<conio.h>
main(){
int Notas[50],Nrepetidas[50],j=1, i, menor,k;
float promedio,S1=0,S2=0,S3=0,r;char opcion;
randomize ();
for(i=1;i<=20;i++){
Notas[i]=rand()%70+5;
menor=Notas[1];
S3=Notas[i]+S3;
promedio=S3/20;
if(Notas[i]%5==0)
S2=S2+1;
for(k=1;k<=20;k++){
if(menor>Notas[k])
menor=Notas[k]; }}
for(i=1;i<=20;i++){
if(Notas[i]>promedio)
S1=S1+1;
}
for(i=1;i<=20;i++){
for(k=1+i;k<=20;k++){
if (Notas[k]==Notas[i]){
Nrepetidas[j]=Notas[k];j=j+1;}
}
}
cout<<" "<<endl;
cout<<" Numeros aleatorios "<<endl;
cout<<" "<<endl;
do{
r=j;
cout<<"{ ";
for (i=1;i<=20;i++){cout<<Notas[i]<<' ';}
cout<<"}";
cout<<endl;
cout<<"Los numeros por encima del promedio son: "<<S1<<endl
<<"Los numeros multiplos de cinco son: "<<S2<<endl
<<"La suma de los numeros es: "<<S3<<endl
<<"El promedio es: "<<promedio<<endl
<<"El menor numero es: "<<menor<<endl;
cout<<"Los numeros que se repiten son: "<<endl;
cout<<"{";cout<<" ";
for(j=1;j<=r-1;j++){
cout<<Nrepetidas[j]<<" ";}
cout<<"}";
cout<<endl;
cout<<" Desea continuar (S/N)?";
cout<<endl;
opcion=getch();
cout<<endl;
}
while (opcion=='S'||opcion=='s');
cout<<" "<<endl;
cout<<" FIN "<<endl;
cout<<" "<<endl;
getch();
}
36. /*Programa que cuenta el numero de caracteres del apellido y las iniciales del Nombre y
Apellidos */
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<string.h>
int separar(char subcad[][20],char *cad)
{int i,j,k;
i=0; k=0;
do
{while (cad[i]==' ') i++;
if (cad[i]=='\0') break;
j=0;
while((cad[i]!=' ')&&( cad[i])!='\0')
{ subcad[k][j]=cad[i];
i++; j++;
}
subcad[k][j]='\0';
k++;
}while(cad[i]!='\0');
return k;
};
main()
{int i,cant=0,cant1=0,cant2=0;
char cadena[200];
char arcad[50][20];
cout<<"Ingesar nombres y apellidos ";
gets(cadena);
cant = separar(arcad,cadena);
cant1=cant-2;
cout<<"las iniciales son :";
for(i=0;i<cant;i++)
cout<<arcad[i][0]<<" ";
cant2=strlen(arcad[1]);
cout<<"El numero de caracteres del apllido paterno ;"<<cant2;
getch();
}
38. Programa que resuelve um sistema de Ecuaciones por el metodo por el metodo
Gauss_Jordan
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<iomanip.h>
int cont=1,n,p, i,j,k,l,r,s,dato;
double A[15],W[10][10],Wo[10][10],x[10],m,sum;
void menu();
void matriz_de_trabajo();
void ingresar_sistema();
void visualisar_sistema();
void hacer_diagonal_principal_dif_cero();
void Gaus_jordan();
void crear_pivote();
void crear_nulos_en_columna_pivote();
void calc_solucion();
void mostrar_solucion();
main ()
{ ingresar_sistema();
visualisar_sistema(); cont++;
hacer_diagonal_principal_dif_cero();
Gaus_jordan();
visualisar_sistema();
mostrar_solucion();
getch();
}
void ingresar_sistema()
{
cout<<"\n Ingrese Numero de Incognitas: ";
cin>>n;
cout<<"Ingrese Elementos de la Matriz A :\n ";
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{cout<<"A["<<(i+1)<<(j+1)<<"]=";
cin>>W[i][j];
}
cout<<"\n";
}
cout<<"Ingrese los Elementos de la Matriz B:\n ";
for(i=0;i<n;i++)
{ cout<<"\t\tB"<<(i+1)<<"=";cin>>W[i][n];
}
}
void visualisar_sistema()
{ getch();
if( cont==1)
{ clrscr();
cout<<"\n Sistema Ax=B ingresado:\n ";
}
else
cout<<"\n\n\n Sistema Ax=B (Matriz escalonada reducida) :\n";
cout<<"matriz A: ";
gotoxy(6*n,wherey());
cout<<"matriz B:\n";
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{ cout<<W[i][j];
cout<< \t;
}
cout<<W[i][n];
cout<<"\n";
}
getch();
}
void hacer_diagonal_principal_dif_cero()
{ //creando una fila adicional A[k]=(suma de todas las filas)
for(k=0;k<=n;k++)
for(j=0;j<n;j++)
A[k]= A[k]+W[j][k];
void Gaus_jordan()
{ //creando la matriz escalonada reducida con operaciones elementales
for(j=0;j<n;j++)
for(k=0;k<n+1;k++)
{ if(j==k)
{ crear_pivote();
crear_nulos_en_columna_pivote();
}
}
}
void crear_pivote()
{ //haciendo pivotes W[j][j]=1
m=W[j][j];
if (m!=0)
for(s=j;s<=n;s++)
W[j][s]= W[j][s]/m;
else
{ cout<<"\n\n No es Inversible";
dato++;
}
}
void crear_nulos_en_columna_pivote()
{ //haciendo W[i][j]=0, j!=i , j != n , con operaciones elementales
for (l=0;l<n;l++)
{ m=W[l][k];
if(l!=k)
for(r=0;r<n+1;r++)
{ Wo[k][r]=m*W[k][r] ;
W[l][r]=W[l][r]- Wo[k][r];
}
}
}
void mostrar_solucion()
{ if(dato!=0)
cout<<"\n\n El Sistema Tiene infinitas Soluciones" ;
else
{ cout<<"\n solucion al sistema Ax=B:\n";
for(int i=0;i<n;i++)
{ cout<<"x["<<(i+1)<<"]="<<W[i][n];
cout<<"\t";
}
}
}
39. Programa que resuelve la siguiente serie
1 1
e 2a e 2 4a e 3 6a
M ..... ....
a 2a 3a
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<ctype.h>
#define e exp(1)
#define mensaje "\n otra prueba [s][n]"
main()
{
float s,a,r,n;
do{ clrscr();
cout<<"Ingrese el Numero de Terminos N ";
cin>>n;
cout<<"Ingrese el valor inicial de a: ";
cin>>a;
s=0;
for(int i=1;i<=n;i++)
{
r=pow(-1,1+i)*sqrt((pow(e,sqrt(i))+2*i*a)/(i*a));
s=s+r;}
cout<<"el valor de la suma es: "<<endl;
cout<<s<<endl;
cout<<mensaje;
}while(toupper(getch())=='S');
getche();
}
41. /*Suponga que tiene un numero n y una aproximacion a su raiz cuadrada. para
obtener una aproximacion mas exacta a la raiz cuadrda real se puede utilizar
la siguiente formula:
aproximacion nueva=(n/aproximacion anterior)+aproximacion anterior)/2
Utilizando esta informacion, escriba una programa en C++que solicite al usuario
un numero y una suposicion inicial de su raiz cuadrada. Utilizando estos datos el
programa debe calcular una aproximacion de la raiz cuadrdad que sea exacta hasta
0.00001.(Sugerencia: detenga la gaza cuando la diferencia entre dos aproximaciones
sea menor que 0.00001).*/
#include<iostream.h>
#include<conio.h>
#include<math.h>
#define DIFACEPTADA 0.00001
main(){
float num,raiz,aprox;
cout<<"Introduzca el Numero cuya raiz cuadrada desea ";
cin>>num;
cout<<"Introduzca su mejor supocision para la raiz cuadrad de este numero ";
cin>>aprox;
do{
raiz=aprox;//almacenar la aproximacion
aprox=(num/raiz + raiz)/2.0;//calcular nueva aproximacion
cout<<"Nueva Aproximacion "<<aprox<<endl;
}while(fabs(aprox-raiz)>DIFACEPTADA);
cout<<"La Raiz cuadrada es "<<aprox<<endl;
getch();
}
}while(i<6);
cout<<"Ingrese los numeros de su boleto";
cout<<endl;
for(int j=0;j<6;j++)
{cin>>jugador[j];
for(int m=0;m<6;m++)
{if(jugador[j]==T[m])
{contador=contador+1;}}
}
cout<<"Los numeros de la tinka son:";
cout<<endl;
for(int m=0;m<6;m++)
{cout<<T[m]<<endl;}
cout<<endl;
cout<<"Lista de resultados a continuacion:";
cout<<endl<<endl;
if(contador==3)
{cout<<"Usted es el ganador de tipo 1 (3 aciertos)";
cout<<"Jugada gratis";}
if(contador==4)
cout<<"Usted es el ganador de tipo 2 (4 aciertos)";
if(contador==5)
cout<<"Usted es el ganador de tipo 3 (5 aciertos)";
if(contador==6)
cout<<"Usted es el ganador de tipo 1 (6 aciertos)";
if(contador==0)
{cout<<"Usted no acerto ningun numero"<<endl ;
cout<<"No gano nada";}
if(contador==1)
{cout<<"Usted acerto un numero" <<endl;
cout<<"No gano nada";}
if(contador==2)
{cout<<"Usted acerto dos numeros"<<endl;
cout<<"No gano nada";}
cout<<endl;
cout<<"Desea comprar otro bolto de la tinka o se anima por la Grande[S][N]:?";
opc=toupper(getch());
}while(opc=='S');
getch();
}
APENDICE de MATLAB
En este apartado se vera el uso del Software para Ingenieria llamado Matlab.
Matlab es una herramienta muy potente que bien pueden aprovechar, los usuarios que de
alguna manera conocen o han tenido alguna experiencia con la programacion y conocen algo
de calculo.
Matlab , en su forma inicial, es un curso que se dicta a los alumnos de la facultad de
Ingenieria Mecanica en el curso de Comptacion I, de la Universidad Naciona de Ingenieria,
dejando la parte profunda para el estudio de los metodos Numericos.
Se vera de manera rpida los conceptos basicos, algunos comandos y problemas que han sido
materia de practicas en la UNI.
INTRODUCCION
El nombre de MATLAB proviene de la contraccin de los trminos MATrix LABoratory
y fue inicialmente concebido para proporcionar fcil acceso a las libreras LINPACK y
EISPACK, las cuales representan hoy en da dos de las libreras ms importantes en
computacin y clculo matricial.
MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente
integrado orientado para llevar a cabo proyectos en donde se encuentren implicados
elevados clculos matemticos y la visualizacin grfica de los mismos. MATLAB
integra anlisis numrico, clculo matricial, proceso de seal y visualizacin grfica en
un entorno completo donde los problemas y sus soluciones son expresados del mismo
modo en que se escribiran tradicionalmente, sin necesidad de hacer uso de la
programacin tradicional.
Para ciertas operaciones es muy rpido, cuando puede ejecutar sus funciones en
cdigo nativo con los tamaos ms adecuados para aprovechar sus capacidades de
vectorizacin. En otras aplicaciones resulta bastante ms lento que el cdigo
equivalente desarrollado en C/C++ o Fortran. En la versin 6.5 MATLAB ha
incorporado un acelerador JIT (Just In Time), que mejora significativamente la
velocidad de ejecucin de los ficheros *.m en ciertas circunstancias, por ejemplo
cuando no se hacen llamadas a otros ficheros *.m, no se utilizan estructuras y clases,
etc. Aunque limitado por el momento, cuando se aplica mejora sensiblemente la
velocidad, haciendo innecesarias ciertas tcnicas utilizadas en versiones anteriores
como la vectorizacin de los algoritmos. En cualquier caso, el lenguaje de
programacin de MATLAB siempre es una magnfica herramienta de alto nivel para
desarrollar aplicaciones tcnicas, fcil de utilizar y que, como ya se ha dicho, aumenta
significativamente la productividad de los programadores respecto a otros entornos de
desarrollo.
Desde la Ventana principal se aprecia que aparecen dos ventanas tambin muy tiles: en la
parte superior se ve la ventana Current Directory, que se puede alternar con Workspace
haciendo doble clic en la pestaa correspondiente. La ventana Current Directory muestra los
ficheros del directorio activo o actual. A diferencia de versiones anteriores de MATLAB en que
el directorio activo se deba cambiar desde la Command Window, a partir de la versin 6.0 se
puede cambiar desde la propia ventana (o desde la barra de herramientas, debajo de la barra
de mens) con los mtodos de navegacin de directorios propios de Windows.
Haciendo doble clic sobre alguno de los ficheros de extensin *.m del directorio activo se abre
el editor de ficheros de MATLAB, herramienta fundamental para la programacin.
El Workspace contiene informacin sobre todas las variables que se hayan definido en esta
sesin y permite ver y modificar las matrices con las que se est trabajando.
En la parte inferior derecha aparece la ventana Command
History que muestra los ltimos comandos ejecutados en la Command Window. Estos
comandos se pueden volver a ejecutar haciendo doble clic sobre ellos.
Haciendo clic sobre un comando con el botn derecho del ratn se muestra un men
contextual con las posibilidades disponibles en ese momento. Para editar uno de estos
comandos hay que copiarlo antes a la Command Window.
En la parte inferior izquierda de la pantalla aparece una de las novedades de la versin 6.5, el
botn Start, con una funcin anloga a la del botn Inicio de Windows. Start da acceso
inmediato
a ciertas capacidades del programa.
Muestra las opciones de
Start/Desktop Tools, que
Muestra las posibilidades de
permiten el acceso a las principales
Start/MATLAB
componentes o mdulos de
MATLAB. Una de estas
componentes, Launch Pad realiza
un papel anlogo al botn Start,
dando acceso a todos los mdulos o
componentes de MATLAB que se
tengan instalados.
Formatos de Salida y Exhibicin de Nmeros:
Comando MATLAB
Exhibicin Ejemplo
format short Por omisin 2.3333
format short e 4 decimales 2.3333e+000
format long 14 decimales 2.33333333333333
format long e 15 decimales 2.333333333333334e+000
format bank 2 decimales 2.33
format hex exp. hexadecimal 4002aaaaaaaaaaab
format + +, -, espacio +
Operaciones Aritmticas:
ESCALAR MATRIZ VECTOR DESCRIPCIN
+ + + Adicin
- - - Sustraccin
* * .* Multiplicacin
/ / ./ Divisin hacia la derecha
\ \ \. Divisin hacia la izquierda
^ . Transposicin
Nota: el punto antepuesto o precedido al * , / y al \ son designados para
operaciones con arreglos o arrays.
Operadores Relacionales
OPERADOR DESCRIPCIN
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
== Igual en
condicional.
~= No igual
Operadores Lgicos
Operador Descripcin
& Y (and)
| O (or)
~ NO (not)
Combinaciones:
P
Q ~P P |Q P&Q
Falso Falso Verdadero Falso Falso
Falso Verdadero Verdadero Verdadero Falso
Verdadero Falso Falso Verdadero Falso
Verdadero Verdadero Falso verdadero Verdadero
Caracteres Especiales:
CARACTERES DESCRIPCION
El cuadro de dilogo
de lera Figura permite elegir un editor de programas distinto del que
trae MATLAB, as como elegir el directorio donde estn los ficheros Help. Respecto a los
formatos numricos con que MATLAB muestra los resultados (recurdese que siempre calcula
con la mxima precisin), se pueden activar las mismas posibilidades por medio de comandos
tecleados en la lnea de comandos de MATLAB. Los ms importantes de estos comandos son
los siguientes:
format short coma fija con 4 decimales (defecto)
format long coma fija con 15 decimales
format hex cifras hexadecimales
format bank nmeros con dos cifras decimales
format short e notacin cientfica con 4 decimales
format short g notacin cientfica o decimal, dependiendo del valor
format long e notacin cientfica con 15 decimales
format long e notacin cientfica o decimal, dependiendo del valor
format loose introduce algunas lneas en blanco en la salida (defecto)
format compact elimina las lneas en blanco citadas ( opcin recomendada)
format rat expresa los nmeros racionales como cocientes de enteros
MATLAB aplica un factor de escala general a las matrices cuando los elementos ms
grandes o ms pequeos son superiores o inferiores respectivamente a una determinada
cantidad (103 y 10-3). Hay que aadir que MATLAB trata de mantener el formato de los nmeros
que han sido definidos como enteros (sin punto decimal). Si se elige la opcin format rat el
programa trata de expresar los nmeros racionales como cocientes de enteros.
El cuadro de dilogo Command Window Font de la 2da Figura ofrece la posibilidad de elegir
el tipo de letra as como el tamao y el color, tanto de las letras como del fondo con la que
se escribe en la ventana de comandos de MATLAB. Es mejor utilizar tipos de letra de tamao
constante (Fixedsys o Courier New), para que la salida se alinee bien en la pantalla.
Recurdese que MATLAB accede a los elementos de una matriz por medio de los ndices de
fila y de columna encerrados entre parntesis y separados por una coma. Por ejemplo:
A(2,3) ans = 7
El siguiente comando extrae los 4 primeros elementos de la 6 fila:
A(6, 1:4) ans = 4 36 29 13
Los dos puntos aislados representan "todos los elementos". Por ejemplo, el siguiente
comandoextrae todos los elementos de la 3 fila:
A(3, :) ans = 31 9 2 22 27 20
Para acceder a la ltima fila o columna puede utilizarse la palabra end, en lugar del nmero
correspondiente. Por ejemplo, para extraer la sexta fila (la ltima) de la matriz:
A(end, :) ans = 4 36 29 13 18 11
El siguiente comando extrae todos los elementos de las filas 3, 4 y 5:
A(3:5,:)
ans = 31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
Notas y previos
MATLAB puede almacenar informacin en Por ejemplo :
variables tales como : b = 50 ;
a = 100 Si se quiere saber el valor de alguna
Cada vez que capturamos informacin en variable capturada slo se tiene que poner
MATLAB y presionamos <ENTER> sta es el nombre de la variable y <ENTER> y
desplegada inmediatamente ( letras en MATLAB lo despliega. Estas variables
color azul ), pero si ponemos un punto y residen en el espacio de trabajo de
coma al final de la instruccin MATLAB MATLAB.
omite el desplegado de informacin.
Las variables son sensibles a las Como este ltimo clculo no tena variable
maysculas, por lo que las asignada, la respuesta seguarda en la
siguientesvariables son diferentes : variable ans (answer ).
Variable = 1
variable = 1 Borrado de variables.
Las variables pueden contener hasta 19 Para borrar el valor de una variable
caracteres. stas deben empezar conuna simplemente ponemos
letra, seguida por cualquier nmero de clear a Borra la variable " a "
letras, dgitos o guiones desubrayado. a verifique que este borrada.
Los caracteres de puntuacin no son clear a b c borrablas variables " a ", " b " y
permitidos en las variables. "c"
Cuando se trabaja con muchas variables " CLEAR " Borra todas las variables y no se
estas son difcil de recodar. pueden recuperar.
El comando who muestra un desplegado de
todas aquellas variables que se hanestado Funciones trigonomtricas
utilizando. sin ( 0.5) Seno de (0.5)
who As mismo
whos Muestralas variables con informacin cos ( X ); tan( X );
adicional. asin( X );acos( X );atan(X);
Hiperblica
Caracteres especiales asinh(X); acosh(X);atanh(X)
[ ] Son usados para formar vectores y Inversa- Hiperblica
matrices [ 1 2 3 ; 4 5 6 ] Atan2 ( X,Y ) Inversa de la tangente en los
( ) Usados para expresiones matemticas. cuatro cuadrantes.
sqrt(2). LOGARITMOS
log (0.5) Logaritmonatural
= Usado para hacer asignaciones. x = 5. LOG10 ( X ) Logaritmo decimal.
Funciones matemticas especiales.
' Transpuesta de una matriz A' abs ( -3) Valorabsoluto o magnitud de un
Usado para separar texto 'texto' nmero complejo
. Punto decimal 3.1415 ceil ( 123.123123) Redondeahacia ms
... Al final de una lnea indican que continua infinito
2,3,4,5,6 .... floor (X) Redondea hacia menos infinito
en el siguiente rengln. 7,8,9,10 ] fix (X) Redondea hacia cero
, Para separar elementos [1,2,3,4] round(X) Redondea hacia el entero ms
; Para separar filas en las matrices. [ 1 2; 3 prximo
4]
Para evitar que se despliegue la imag( 30 - 5j ) Parte imaginaria deun
informacin capturada. [3] ; nmero complejo
% Para hacer comentarios % este real ( X ) Parte real de un nmero complejo
programa,etc. angle ( X ) Angulo de un nmero complejo
! Para ejecutar un comando del Ms-dos !dir conj ( X ) Complejo conjugado
Operaciones bsicas sign ( -5) Funcinsigno : Devuelve el
SUMA signo del argumento
C=a+b (1 si es positivo, -1 si es negativo )
RESTA exp ( 1 ) Exponencial: e( x )
d=a-b REM ( X,Y ) Resto despus de la divisin
MULTIPLICACION ( x / y)
e=a*b sqrt (2) Razcuadrada
DIVISION Operaciones Lgicas
F=a/b En MATLAB se pueden hacer operaciones
F=a\b lgicas, por ejemplo.
POTENCIA 1<2
a^2 Como 1 es menor que 2, la respuesta es
cierta por lo que obtenemos un 1.
1<1 Si tenemos los siguientes valores :
Obtenemos un 0, porque 1 no es menor a = 1, b = 2, c = 3
que 1. Escribimos la formula para x1 :
Como se puede observar las nicas x1 = ( -b + sqrt ( b ^ 2 - 4 * a * c )) /
respuestas posibles con las operaciones 2*a
lgicasson : Para x2 :
Cierto = 1 y Falso = 0. x2 = ( -b - sqrt ( b ^ 2 - 4 * a * c )) / 2
and & *a
or | Podemos hacer la comprobacin para x1.
not ~ a * x1^ 2 + b * x1 + c Comprobacinx1
Para que la operacin and sea verdadera Arreglos (Arrays) Vectores.
las dos relaciones deben serverdaderas. Si se desea calcular el seno de " 0 a 1 " con
Recordemos and = 0 0 | 0 Falso incrementos de 0.25,se pueden capturar los
0 1 | 0 Falso valores y despus mandar llamar el seno
1 0 | 0 Falso de la funcin.
1 1 | 1 Verdadero Seno de 0 a 1 con incrementos de 0.25
( 1 < 2 ) & ( 2 < 3) Verdadero. x = [ 0, 0.25, 0.5, 0.75, 1 ]
( 1 < 2) & ( 2 < 1 ) Falso. Se pueden omitir las comas cuando se
Para la operacin OR : 0 0 | 0 capturan los nmeros.
01|1 Con los nmeros capturados, se obtiene el
10|1 seno de la variable x
11|1 escribiendosimplemente :
( 1 < 2 ) | ( 2 < 1 ) Verdadero. sin (x)
Para la operacin NOT : ~ 0 | 1 MATLAB opera en radianes, donde 2P= 360
~1|0 grados.
~ ( 2 < 1) Verdadero. Ahora se requiere obtener el coseno de
La variable NaN (Not a Number) cero a uno con incrementos de 0.01; loque
Cuando en un lenguaje de programacin equivale a capturar 101 elementos.
como basic, pascal o C, se da unasituacin Para evitar capturarlos a mano, MATLAB
que el programa no pueda manejar, como nos permite crear un vector de lasiguiente
una divisin como 0/0 elprograma se manera :
detiene, marcando un error. Variable = ( Valor inicial : Con incrementos
Cuando en MATLAB se presenta una de : Valor final )
situacin similar el programa no sedetiene, R = (0 : 0.01 : 1)
slo da una pequea advertencia de que se COS ( R ) Ahora se puede obtener el
present una divisinentre cero. Y el coseno de la variable R.
resultado es un NaN, que es una variable Hagamos el siguiente vector :
interna no es un nmero). Y = ( 0 : 1 : 10)
0/ 0 Si queremos saber cual es el cuarto
Ejemplo: defina a=[1 2 0] y b=[1 2 0] elemento del vector ponemos :
ahora pida la divisin elemento aelemento Y (4)
(comando "./") Si nos interesan los elementos 5 al 10 :
a ./ b Y( 5 : 10 )
Solucin de ecuaciones de segundo Otras opciones son :
grado. Y( 1 : 2 : 9) Tomalos elementos del 1 al 9
MATLAB se puede resolver fcilmente con incrementos de 2
ecuaciones del tipo ax+ bx + c = 0, Y([ 1, 3, 7,10]) Tomalos elementos 1, 3,
hacindolo como si fuera una sola 7 y 10 del array
instruccin. La frmula pararesolver una
ecuacin de segundo grado de este tipo Modificaciones de los arreglos
es : Si el noveno elemento del array debi ser
el nmero 20 en vez de 8,corregimos de la
siguiente manera :
Y(9) = 20
Otra forma de hacer arreglos, es con Logspace (0 , 2 , 10 )
linspace : Hemos creamos un arreglo que comienza
Linspace ( Valor inicial , Valor final , en 10 0 y termina en 10 2,conteniendo 10
Nmero de elementos ) valores.
Regresando al ejemplo del coseno de 0 a 1 Otra forma de crear arreglos es :
con incremento de 0.01 escribimos : x1 = 1 : 5 Arreglode 1 a 5, con incremento
Note el uso de comas (#, #, #) de 1
Z = linspace(0 , 10, 101) x2 = 10 : 5 : 100 Arreglode 10 a 100, con
Linspace describe una relacin lineal de incrementos de 5.
espaciado entre sus elementos. Si se quiere concatenar x1 y x2
Logspace describe una relacin de C = [ x1 x2 ]
espaciado " logartmica ".
Logspace ( Primer exponente , ltimo
exponente , Cantidad de valores )
Comando input: Se utiliza para que el programa pida valores de variables mientras se
ejecuta. La sintaxis de la orden es: a=input(Ingrese valor de a= );
Comnado fprintf; se utiliza para salida por pantalla. La sintaxis fprintf(El valor de a =
%6.3f,a); que el valor de a es = y tiene 03 decimales.
Comando disp; diisplaya el valor por pantalla
2. Realice un algoritmo que permita convertir los grados Fahrenheit a grados Celsius.
2.1 Inicio
2.2 Leer grados Farenheit
2.3 Aplicar la formula C=(F-32)*5/9
2.4 Escribir Resultado
2.5 Fin del programa
end
if (a>b)
if(a>c)
fprintf('\n Entonces El mayor es :%2d',a);
else
fprintf('\n Entonces El mayor es :%2d',c);
end
else
if(b>c)
fprintf('\n Entonces El mayor es :%2d',b);
else
fprintf('\n Entonces El mayor es :%2d',c);
end
end
3. El operador es muy utilizado en arreglos con matlab; por ejemplo se puede escribir
un vector dando un valor inicial luego el paso y finalmente el ultimo numero sea:
s=[1:2:9]; dando como resultado los valores de nmeros impares: 1 3 5 7 9.
4. Una comilla despus del nombre de un vector lo identifica como un vector transpuesto
que significa vector columna.
Ejercicio: Genera un vector cuyos elementos representen una particin del intervalo [-1,1],con
un paso igual 0.2;
Ejercicio: Genera un vector cuyos elementos representen una particin del intervalo [-1,1];en
20 subintervalos.
Ejercicio: >Es posible construir un vector mediante la notacin dos puntos de tal forma que
las componentes vayan decreciendo en valor? Prueba con 4:-2:-15.
Ejercicio: >Qu ocurre si ponemos 4:2:-15?
Matrices
Las matrices son arreglos bidimensional, para acceder a sus elementos se hace uso de ndices,
como que conforman la matriz en si, por ejemplo una matriz de 3x3 esta declarada como
a(3,3). Sea la matriz A=[1 2 3;4 5 6;7 8 9]; B =[-2 3 1;4 5 7;1 5 9]; entonces es posible la
siguiente operacin C=2A y D=3B cuyos resultados son :
C= 2 4 6 D= -6 9 3
12 15 21 12 15 21
3 15 27 3 15 27
a) Sea A=[1 2 3 4;5 6 7 8;9 10 11 12]; se puede escribir B=A
B= 1 5 9
2 6 10
3 7 11
4 8 12
b) Crear una matriz de orden de orden 2x4
>>g=[1 2 3 4;5 6 7 8];
c) crear una matriz de otra manera g=[1 2 3 4
5 6 7 8]
d) Restar 2 a cada elemento de g;
e) Realizar >>2*g-1;
g) Realice >>g+h;>>ans-h;>>2*g-h
k) g./h ; h./g;
l) Resuelva la siguiente ecuacin 2 a + 3b + c = 6;
4a +b + 2c = 7;
a+ b + 7c = 4;
use metodos conocidos por Ud. Y luego compare con el comando de matlab \
m) Crear una matriz de orden 3x3 formada unicamente por unos y otra de orden 2x5
formada por ceros
POLINOMIOS
1. Sea el polinomio s 4 3s 3 9 s 2 1 su representacin en matlab es como sigue:
>>p=[1 3 9 0 1];
>>p = 1 3 9 0 1
>>z = polyval (p,2); z= 77; roots(p)
ans= -1.5187 + 2.5877i
-1.5187 - 2.5877i
0.0187 + .3328i
0.187 0.5528i
2. Sea la expression ( s 1)( s 2 2 s 1) ?
>>p1 = [1 1];
p2 = [1 2 1];
>>p3=conv(p1,p2)
p3= 1 3 3 1
6. %Interpolacion de Lagrange
%Objetivo:Interpolar datos mediante la Interpolacion de Lagrange
%Sintaxis: yi=Lagran_(c,y,xi)
% x,y: Tabla de Datos en forma de arreglo
% xi: arreglo de abscisas para las cuales se calculara el valor de y yi :arreglo de
valores y calculados mediante interpolacion de Lagrange.
function fi=Lagran_(x,f,xi)
fi=zeros(size(xi));
np1=length(f);
for i=1:np1
z=ones(size(xi));
for j=1:np1
if i~=j, z=z.*(xi-x(j))/(x(i)-x(j));end
end
fi=fi+z*f(i);
end
return
quad y quad8.
Sea la funcin : function y=intequad(x)
y = 1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6;
Guardarla con el nombre intquad luego desde la ventana de comandos
x=-1:0.1:2;
plot(x,intequad(x));
para hallar la Integral:
area = quad('intequad', 0, 1)
area = 29.8583
p=3*h*(y(1)+suma+y(n))/8;
Aqu n debe ser mltiplo de 3
2. function g=GrafCoseno()
N=input('Ingrese un valor para el Intervalo N :');
x =-N:0.01:N;
y = cos(x);
plot (x ,y);
3. function g=GrafCoseno()
N=input('Ingrese un valor para el Intervalo N :');
x =-N:0.01:N;
y = cos(x);
plot (x ,y);
4. function expo=grafexp()
N=input('Ingrese un valor real de N par el Intevalo :');
z=input('Ingrese el exponente Z :');
x = -N:0.01:N;
y(3,:) = exp((-x).^2);
%y = exp((-x).^2);
plot(x , y);
title('FUNCION DE UNA EXPONENCIAL ')
ylabel('exp(x)'),...
xlabel('Eje de las X'),...
text(0.4,0.6,'y=exp(x)','sc')
5. function ma=grafmat1()
a=input('Ingrese un valor para a :');
b=input('Ingrese un valor para b :');
t=[a:.01:b];
x(1,:)=t;
x(2,:)=exp(t);
x(3,:)=sin(t);
x(4,:)=cos(t);
plot(t,x)
%plot(t,x,'r+:')
title('GRAFICAS DE ALGUNAS FUNCIONES ')
xlabel('X')
ylabel('Y')
1. Determine valores aproximados de las soluciones de las siguientes ecuaciones empleando el mtodo
grafico:
a. 0.5exp(x/3) - sen(x)=0, x>0
Valores
aproximados:
(0,-0.31)
(0,0.72)
(0,1.91)
b. log(1 + x) - x2 = 0
Funcin de la grafica: prb71_b.m function y=prb71_b()
x=[-2:0.01:2];
y=log10(1+x)-(x.^2);
plot(x,y);
grid on
Valores
aproximado:
(0,0)
(0,0.37)
a. tan(x) x + 1 = 0, 0<x<3
Funcion:prb72_a.m
function y=prb72_a()
x=[0:pi/10:3*pi];
y=tan(x)-x+1;
plot(x,y)
grid on
soluciones:
(0,1.26)
(0,1.88)
(0,4.4)
(0, 5.03)
(0, 7.54)
(0, 8.16)
Funcion: prb72_b.m
function y=prb72_b()
x=[0:0.01:10];
y=sin(x)-0.3*exp(x);
plot(x,y)
grid on
soluciones:
(0,0.542)
(0,1.074)
Funcin: prb72_c.m
function y=prb72_c()
x=[-5:0.01:5];
y=0.1*(x.^3)-
5*(x.^2)-x+4+exp(-
x);
plot(x,y)
grid on
soluciones:
(0,-4.73)
(0,-1.34)
(0, 0.85)
d. log(x) - 0.2x2 + 1 = 0
Funcion: prb72_d.m
function y=prb72_d()
x=[-5:0.01:5];
y=log(x)-
0.2*(x.^2)+1;
plot(x,y)
grid on
soluciones:
(0, -3.316)
(0, -0.379)
(0, 0.379)
(0, 0.316)
Funcion: prb72_e.m
function y=prb72_e()
x=[-5:0.01:5];
y=x+x.^2+3*(x.^-1)-40;
plot(x,y)
grid on
soluciones:
(0, 0075)
Calcule tan-1(3.5) en el intervalo [0, ] por el mtodo de la bisectriz. (Sugerencia: resuelva tan (x)=3.5, 0
x )
Funcion: graf73.m
function y=graf73()
x=[-pi:pi/10:pi];
y=atan(x);
plot(x,y)
grid on
solucion:
(0,0)
John H. Matthews Metodos Numericos con Matlab Editorial. Prentice Hall 1999
Shoichiro Nakamura Metodos Numericos con Matlab Editorial Prentice Hall 1998
Javier Garcia Jalow Aprenda Matlab como si estuviera en primero Escuela tecnica de
Ingenieros Industriales Universidad Politecnica de Madrid ao 2005